私がするとき
node process.js 1>$LOGFOLDER\\$$.log
生成されたプロセスがPID
ファイル名になります。同じprocess.js
。それで&
最後にこう付け加えました。
node process.js 1>$LOGFOLDER\\$$.log &
これにより、プロセスはバックグラウンドで実行されますがPID
(ファイル名)は常に間違っています。$!
上記の行の後にログプロセスIDを使用しました。最初のケースでは、$!
出力ファイルとログファイルの名前は同じです。しかし、2番目のケースではそうではありません。プレースホルダを使用してプロセスをバックグラウンドで実行することは&
異なります。なぜこれが起こり、どうすれば両方を機能させることができますか?PID
$$
答え1
これは、バックグラウンドプロセスがサブシェルで実行されるためです。必要な操作を実行するには、次のようにします。
LOGFOLDER="$LOGFOLDER" bash -c 'node process.js 1>$LOGFOLDER.$$.log' &