バックグラウンドでプロセスを実行できません。

バックグラウンドでプロセスを実行できません。

次のコマンドを使用して、バックグラウンドでcp.shスクリプトを実行します。

nohup sh cp.sh < /dev/null & > /dev/null &
output: Invalid null command.

この「間違った空のコマンド」の解決策は何ですか?

答え1

の間にスペースを入れました。& >これは必須です。&>これにより、STDOUTとSTDERRが次のファイルにリダイレクトされます。

したがって、以下が必要です。

nohup sh cp.sh < /dev/null &> /dev/null &

シェルがそれをサポートしていない場合は、&>POSIXメソッドを使用してSTDOUTとSTDERRをリダイレクトします。

nohup sh cp.sh </dev/null >/dev/null 2>&1 &

答え2

メッセージは、構文について文句を言うシェルから来ます。

& > /dev/null &

これは実際には以下を含むコマンドラインですが、コマンドにはa command between two &コマンド名はありませんstdout

注:まだ分からない方のために、12年前からSolarisはnohup次のことを呼び出して、すでに実行中のプロセスを実行できます。

nohup -p <pid>

または

nohup -g <pgid>

これはnohup.outファイルを作成し、stdoutカーネルのファイル記述子をそのファイルを参照するファイル記述子に置き換えますnohup.out

関連情報