Bash 스크립트에서 고유한 프로세스 이름을 가진 하위 프로세스를 시작하려고 합니다. 이것은 작동합니다:
bash -c "exec -a MyUniqueProcessName './start_service' &"
하지만 내 문제는 다음 start_service
과 같은 작업을 수행하면 매개변수를 .
bash -c "exec -a MyUniqueProcessName './start_service param' &"
또는
bash -c "exec -a MyUniqueProcessName './start_service $myvar' &"
그럼 실패했다고 불평해라
/start_service param: No such file or directory
내가 뭘 잘못했나요?
답변1
exec
유틸리티와 해당 매개변수를 다음과 같이 생각하세요.분리논쟁:
bash -c "exec -a MyUniqueProcessName './start_service' 'param1' 'param2' 'etc.' &"
OpenBSD에서 테스트됨:
$ bash -c 'exec -a hello sleep 5 &' && pgrep -lf hello
1898 hello 5
$ bash -c 'exec -a hello sleep 5 &' && ps -a | grep hello
18164 p1 Sp 0:00.01 hello 5 (sleep)
26417 p1 R+/0 0:00.01 grep hello
Ubuntu에서 동일한 테스트(몇 가지 콜백을 받았지만 sleep
쿼리할 때 얻었습니다 hello
. 괜찮을 것입니다. Linux는 이상한 것들이 혼합되어 있습니다):
$ bash -c 'exec -a hello sleep 5 &' && pgrep -lf hello
2849889 sleep
-f
여기에 추가 사항을 참고하세요 ps
.
$ bash -c 'exec -a hello sleep 5 &' && ps -af | grep hello
myself 2851359 1 0 17:41 pts/0 00:00:00 hello 5
myself 2851361 2848295 0 17:41 pts/0 00:00:00 grep hello