nohupコマンドとnohup.out

nohupコマンドを使うと端末を閉じてもプロセスを続行できる。

$ nohup command &

このときnohup.outというファイルが作成され、標準出力と標準エラー出力がリダイレクトされる。

$ nohup ls -a &
 nohup: ignoring input and appending output to 'nohup.out'

$ cat nohup.out
.
..
.bash_logout
.bash_profile
.bashrc
.cshrc
.lesshst
.ssh
.tcshrc
.viminfo
nohup.out

大量に出力される場合はnohup.outが肥大化してしまう場合や、実行コマンド自体がログを出力する場合など、必要がなければ作成しないようにしたい。

nohupコマンドでnohup.outを作成しない

nohupコマンドでnohup.outを作成しないようにするには標準出力と標準エラーを/dev/nullにリダイレクトする。

$ nohup command > /dev/null 2>&1 &

このようにするとnohup.outが作成されず、標準出力と標準エラー出力が捨てられる。

例として以下のようなシェルスクリプトで実験する。

echo foo > test.txt

上記スクリプトではtest.txtfooという文字列を出力する。

このスクリプトをnohupコマンドで実行し、標準出力と標準エラー出力を/dev/nullにリダイレクトする。

$ nohup sh test.sh > /dev/null 2>&1 &

test.txtにはfooという文字列が出力されている。

$ cat test.txt
foo

nohup.outは作成されていない。

$ cat nohup.out
cat: nohup.out: No such file or directory