하나의 쉘스크립트에 대해 두 개의 프로세스가 나열되어 있습니까?

하나의 쉘스크립트에 대해 두 개의 프로세스가 나열되어 있습니까?

다소 간단한 쉘 스크립트가 있습니다.

#!/bin/sh
do something boring...

이와 같은 쉘 스크립트를 실행하면,

$ nohup sh mysh.sh > /null/dev/ 2>&1 &

두 가지 프로세스가 나열되어 있습니다.

$ ps -ef | grep mysh
... xxxxx 1     ... sh mysh.sh // same xxxxx
... yyyyy xxxxx ... sh mysh.sh // same xxxxx

이게 정상인가요?

답변1

나는 당신이 여기에 있는 것을 재현하고 교체했지만 do something boring...이런 sleep 10000일이 발생하지 않았습니다. 나는 당신이 자식 프로세스를 생성하기 위해 fork()나 clone()을 사용하는 작업을 하고 있다고 생각합니다. 나는 nohup이 프로세스를 하위 프로세스로 실행했다고 의심했지만 그렇지 않은 것 같습니다.

답변2

보시다시피 yyyyy는 xxxxx의 하위 프로세스입니다. 동일한 셸 스크립트가 "mysh.sh" 내에서 실행되어 이러한 시나리오가 발생하는 것은 지극히 정상입니다.

스크립트 내에서 mysh.sh를 직접/간접적으로 호출하고 있습니까? 이것이 내가 이런 일이 일어날 것이라고 생각할 수 있는 유일한 방법입니다.

관련 정보