nohupコマンドでnohup.outではなく標準出力に出力する方法

2017/03/11

ログアウト後も処理を続けたり、sshなどttyを使用しないでコマンド実行してssh終了後も動作させる場合、nohupをコマンドの前につける。
nohupコマンドを実行すると標準出力とエラー出力がnohup.outに出力されてしまうが、ログの肥大化を避けるなどの理由でnohup.outに出力したくない場合、/dev/nullにリダイレクトしてあげればいい。

ターミナル上に出したいとなった場合、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からhttpdを実行する

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

-Linux
-