아마 그냥 스크립트를 사용하는 것이 더 쉬울 텐데 왜 명령으로는 할 수 없는지 궁금합니다. 내가 지금까지 시도한 것 :
$ (ls >/dev/null &) && echo $!
3135
$ (ls >/dev/null &) ; echo $! #bad idea, but if that worked, I could just add `sleep 0.1`
3135
$ ls >/dev/null & ; echo $!
bash: syntax error near unexpected token `;'
$ `ls >/dev/null &` && echo $!
3135
$ `ls >/dev/null &` ; echo $!
3135
이 3135
숫자는 이 변수를 저장한 마지막 백그라운드 프로세스의 PID $!
이며 변경되지 않습니다.(저는 또한 Konsole을 사용하고 프로세스를 성공적으로 배경화하기 위해 다음과 같은 내용을 인쇄합니다 [1] PID
). 아아, 실행된 명령 중 어느 것도 프로세스를 백그라운드로 보내지 않았습니다.
답변1
이렇게 하면 원하는 작업이 수행됩니다.
$ ls > /dev/null & echo $!
다양한 방법으로 백그라운드 명령을 하위 프로세스에 강제로 적용하므로 첫 번째 셸에는 백그라운드 프로세스가 없으므로 $!
업데이트되지 않습니다.
이제 동일한 셸에서 백그라운드 프로세스가 시작되어 echo $!
원하는 작업을 수행할 수 있습니다.