내가 할 때
node process.js 1>$LOGFOLDER\\$$.log
생성된 프로세스가 PID
파일명이 됩니다. 동일한 process.js
. 그래서 &
마지막에 이렇게 덧붙였습니다.
node process.js 1>$LOGFOLDER\\$$.log &
이로 인해 프로세스는 백그라운드에서 실행되지만 PID
(파일 이름)은 항상 잘못되었습니다. $!
위 줄 다음에 로그 프로세스 ID를 사용 했습니다 . 첫 번째 경우에는 $!
출력 파일과 로그 파일의 이름이 동일합니다. 그러나 두 번째 경우에는 그렇지 않습니다. 자리 표시자를 사용하여 프로세스를 백그라운드에서 실행하는 것은 &
다릅니다. 왜 이런 일이 발생하며 어떻게 하면 두 가지를 모두 작동하게 할 수 있나요?PID
$$
답변1
이는 백그라운드 프로세스가 서브셸에서 실행되기 때문입니다. 원하는 작업을 수행하려면 다음을 수행할 수 있습니다.
LOGFOLDER="$LOGFOLDER" bash -c 'node process.js 1>$LOGFOLDER.$$.log' &