如何在后台运行进程并获取其pid以创建日志文件名

如何在后台运行进程并获取其pid以创建日志文件名

当我做

node process.js 1>$LOGFOLDER\\$$.log

创建的进程PID成为文件名。我想在后台运行这个过程,因为我想运行相同的多个实例process.js。所以,我&在最后补充道,

node process.js 1>$LOGFOLDER\\$$.log &

这使得该进程在后台运行,但PID(文件名)总是错误的。我确实$!在上面的行之后使用了日志进程ID 。在第一种情况下,$!输出和日志文件的名称相同。但在第二种情况下,情况并非如此。使用占位符使进程在后台运行是&不同的。为什么会发生这种情况以及我怎样才能使两者都工作PID$$

答案1

这是因为后台进程在子 shell 中运行。为了做你想做的事,你可以这样做:

LOGFOLDER="$LOGFOLDER" bash -c 'node process.js 1>$LOGFOLDER.$$.log' &

相关内容