web-dev-qa-db-ja.com

Nohupの構文エラー(...)

バックグラウンドでコマンドを実行し、ログアウトして再度ログインし、コマンドの出力がNohup.outファイルにあることを期待して、bashシェルでNohupコマンドをテストしようとしています。これが私が実行しようとしているコマンドです:

$ Nohup (sleep 120; echo "job done") &

しかし、エラーが発生し続けます。

bash: syntax error near unexpected token `sleep`
4
Yousif Shibeika

Nohupコマンド ではありません キーワード ;実行するコマンドとしてサブシェルを指定することはできません。代わりに、実際の実行可能なコマンドが必要です。

Nohup bash -c 'sleep 120; echo "job done"' &

Bashが構文エラーを表示しているのは、 "Nohup"という関数を宣言しようとしていると考えているためです。これは、コマンドラインの2番目のWordにかっこが表示される唯一のケースです。

Nohup () { ... ; }

エラーメッセージは、(あいまいに)Wordが「スリープ」ではなく、正しい括弧が表示されることを期待していることを示しています。

16
Michael Homer