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)

※例はJenkinsのリモートSSHプラグインでptyにチェックをつけると、tomcatの起動に失敗するより