nohup.outに出力しない方法
ログアウト後も処理を続けたり、sshなどttyを使用しないでコマンド実行してssh終了後も動作させる場合、nohupをコマンドの前につける。
nohupコマンドを実行すると標準出力とエラー出力がnohup.out
に出力されてしまうが、ログの肥大化を避けるなどの理由でnohup.out
に出力したくない場合、/dev/null
にリダイレクトしてあげればいい。
nohup some_command >/dev/null 2>&1 &
ターミナル上に標準出力する方法
ターミナル上に出したいとなった場合、nohupの仕様が「エラー出力を標準出力にリダイレクトし、標準出力をnohup.outに書き込む」となっているため、ターミナルに表示させるのに、プロセス置換を使ってnohupの出力をcatに渡すことで実現した。
If standard input is a terminal, redirect it from /dev/null. If standard output is a terminal, append output to ‘nohup.out’ if possible, ‘$HOME/nohup.out’ otherwise. If standard error is a terminal, redirect it to standard output. To save output to FILE, use ‘nohup COMMAND > FILE’.
例:pseudo-tty(-t
)を有効にしたsshからtomcatを実行する
ssh -t user@localhost cat <(sudo -u tomcat nohup /opt/tomcat6/bin/startup.sh 2>&1 </dev/null)