0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

nohup コマンドで nohup.out は作りたくないが、ターミナルへの出力は行いたい

Last updated at Posted at 2025-01-21

やりたいこと

nohup コマンドと & を用いて任意のコマンドをバックグラウンドで実行したいです。

  • nohup: "no hang-up" の略で、シェルセッションが終了しても実行中のプロセスが終了しないようにするためのコマンドです。通常、シェルを閉じるとそのシェルで実行中のプロセスも終了します。しかし nohup コマンドを使うとそのプロセスは継続して実行されます。
  • &: コマンドをバックグラウンドで実行するためのシェル演算子です。これによりコマンドが実行されている間もシェルのプロンプトが戻り、他のコマンドを続けて入力することができます。
$ MY_COMMAND="echo \"I love playing yo-yo\"; echo \"I don't like yo-yo\" 1>&2"
$ nohup bash -c $MY_COMMAND 1>&2 &
[1] 28357
appending output to nohup.out
[1]  + 28357 done       nohup bash -c 
$ cat nohup.out
I love playing yo-yo
I don't like yo-yo

nohup コマンドを使用すると、実行したコマンドの出力が nohup.out というファイルに出力されます。このファイルを作りたくない場合は、コマンドの出力を /dev/null にリダイレクトさせます。

$ nohup bash -c $MY_COMMAND 1>&2 > /dev/null 2>&1 &
[1] 28739
[1]  + 28739 done       nohup bash -c  > /dev/null 2>&1
$ cat nohup.out
cat: nohup.out: No such file or directory

しかし「nohup.out は作りたくないがターミナルへの出力は行いたい」という場合はどうすればよいでしょうか?

方法

$ nohup bash -c $MY_COMMAND > >(tee) 2>&1 &
[1] 29886
I love playing yo-yo
I don't like yo-yo
[1]  + 29886 done       nohup bash -c $MY_COMMAND > >(tee) 2>&1
$ cat nohup.out
cat: nohup.out: No such file or directory
  • > >(tee): プロセス置換を使って、標準出力を tee コマンドに渡します。tee は入力を受け取り、それを標準出力に書き出すと同時に、指定されたファイルにも書き出すことができます。この場合、ファイル指定がないため、単に標準出力に出力されます。
  • 2>&1: 標準エラー出力を標準出力にリダイレクトします。これにより、標準出力と標準エラー出力の両方が tee コマンドに渡され、両方の出力がターミナルに表示されます。

| を使ってもよいですが、プロセス置換を使うことで 1 つのプロセスだけで実現できます。

$ nohup bash -c $MY_COMMAND | tee 2>&1 &
[1] 30789 30790
I love playing yo-yo
I don't like yo-yo
[1]  + 30789 done       nohup bash -c $MY_COMMAND | 
       30790 done       tee 2>&1
$ cat nohup.out
cat: nohup.out: No such file or directory

ファイルを指定しない tee コマンドの使い方があるんだなと思いました。

参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?