2017-11-01 21 views
0

5 명의 다른 하위 항목을 실행하는 상위 스크립트가 있습니다. 5 명의 아이들은 모두 똑같은 이름을 가지고 있으며 PID는 각자 똑같이 변하고 있습니다. 일부 하드웨어 테스트를위한 스크립트입니다. 지속적인 업데이트 및 변경으로 인해 5 가지 스크립트를 사용하고 싶지 않습니다. (그것은 5 배의 글을 의미 할 것이다).부모가 지속적으로 자식 PID를 변경하고 동일한 이름을 가진 둘 이상의 자식을 사용할 때 하나의 자식 프로세스를 중지하는 방법은 무엇입니까?

일부 오류가 발생하는 경우 해당 하위 프로세스 중 하나를 정확히 종료해야합니다. 그놈이 PID를 변경하지 못하게 할 방법이 있습니까? 또는 백그라운드 프로세스가 특정 PID로 작업하도록 강요합니까?

+0

프로세스 시작 후 Pid를 변경할 수 없습니다. 부모 스크립트를 시작할 때마다 서로 다른 pid가 있다는 것을 의미합니까? – 123

+0

자식 프로세스에서 더 이상 프로세스가 보이지 않을 때 잠자기 및 사용자 상호 작용이 발생하고 그 후에 자식 프로세스의 새 PID가 표시됩니다. –

+2

그 때 다른 프로세스가 있습니다. – 123

답변

0

프로세스 ID는 새 프로세스가 시작될 때 운영 체제에 의해 할당됩니다. 내가 아는 한, 사용되는 ID를 제어 할 방법이 없습니다.

부모 스크립트가 동일한 하위 스크립트를 다섯 번 실행하는 것처럼 들립니다. 나는 각각의 자식 프로세스의 발사를 방지하기 위해 트리거 파일을 사용하도록 부모 스크립트를 수정 제안 :

if [ ! -f /wherever/trigger_file_1 ] ; then 
    # Launch child process #1 here 
fi 

if [ ! -f /wherever/trigger_file_2 ] ; then 
    # Launch child process #2 here 
fi 

if [ ! -f /wherever/trigger_file_3 ] ; then 
    # Launch child process #3 here 
fi 

if [ ! -f /wherever/trigger_file_4 ] ; then 
    # Launch child process #4 here 
fi 

if [ ! -f /wherever/trigger_file_5 ] ; then 
    # Launch child process #5 here 
fi 

예를 들어, 당신은에서 다음을 수행 할 수 있습니다를 실행 자식 프로세스 # 3을 방지하기 위해 필요하다고 결정하는 경우, 모든 단말기 :

touch /wherever/trigger_file_3 

하위 프로세스 3이 더 이상 실행되지 않습니다. 당신이 자식 프로세스 # 3는 당신이해야 할 모든 실행을 허용 할 것인지를 결정할 때

rm /wherever/trigger_file_3 

과 그 자식 프로세스는 이제 정상적으로 실행됩니다.

행운을 빈다.

+0

나는 자식 프로세스의 PID를 얻지 않고 gnome 터미널의 PID를 사용한다는 것을 알았다. 나는 $를 사용하고 있었다! 그리고 이것은 마지막 배경 과정의 PID를 돌려주었습니다. 마녀는 내가 백그라운드에서 시작한 아이가 아니 었습니다. 마지막 해결책은 부모 스크립트에서 자식을 죽일 필요가있는 경우를 대비해 자식의 $$를 포함한 PID를 다른 파일에 작성하고 grep을 작성하는 것입니다. 도움 주셔서 대단히 감사합니다. –