2015-01-05 5 views
-1
sleep 5000 

을 PPID 및 제 2 단자에 내가 실행 해요 : 유닉스에서 나는 kill 명령을 사용하여 ppid를 제공함으로써 터미널을 닫습니다. 왜? 죽일 -9 하나 개의 터미널에서

ps -ef | grep sleep 

그런 다음 나는 PPID를 사용하여 제 2 터미널에서이 프로세스를 죽이는거야. 그런 다음 sleep 명령을 실행하는 첫 번째 터미널을 닫습니다. 고아처럼 수면 명령을 생성하지 않습니다.

$ ps -ef | grep sleep 
trainee 4887 4864 0 17:05 pts/0 00:00:00 sleep 5000 
trainee 4889 4264 0 17:05 pts/1 00:00:00 grep --color=auto sleep 
kill -9 4864 

왜 ?

+0

'ps'는 프로세스의 PID와 부모 PID ('PPID')를 표시하고 잘못된 열을보고있을 것입니다. 따라서 'sleep'의 부모 *가 죽습니다. – Biffen

답변

0

아마도 수면의 부모는 당신의 껍질입니다. 당신이 죽을 때 로그인이 종료되고 터미널이 닫힙니다. 그 자체를 실행 남아 있지만

Orphan process에 대한 위키 백과의 문서 (부분적으로) 읽고,

고아 프로세스는 부모가 처리 완료 또는 종료 된 컴퓨터 과정이다.

방법

그러한 부모 프로세스는 종료 또는 중단 될 때처럼 실수로 분리 될 수있다. 대부분의 유닉스 계열 운영체제에서 프로세스 그룹 메커니즘은 실수로 고아가되는 것을 방지하기 위해 사용될 수있다. 사용자 쉘과 조화를 이루어 SIGHUP 프로세스 신호로 모든 하위 프로세스를 종료하려고 시도 할 때 고아.

+0

예 쉘은 수면의 부모입니다. 부모를 죽이면 그 부모의 모든 자식 프로세스도 죽거나 무엇이 –

+0

@SarveshPawar 예. 편집 됨. –