バックグラウンドでプロセスを実行し、そのpidを取得してログファイル名を作成する方法

バックグラウンドでプロセスを実行し、そのpidを取得してログファイル名を作成する方法

私がするとき

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' &

おすすめ記事