리눅스에서 중지 된 프로세스는 무엇입니까?


12

그래서 명령 줄에서 PHP 스크립트를 실행하고 실행을 중지하고 싶었습니다.

나는 달렸다

$ ps aux | grep php
$ sudo kill 8754
$ sudo kill 8767

그리고 달렸다

$ ps aux | grep php

프로세스가 종료되었지만 이런 종류의 출력을 얻었는지 다시 확인하십시오.

jon      8754  0.4 53.5 3044256 2205204 ?     T    10:34   0:15 php awesome_script.php
jon      8767  0.4 53.5 3044256 2205204 ?     T    10:34   0:15 php awesome_script.php
jon     12275  0.0  0.0   4156   892 pts/1    S+   11:27   0:00 grep --color=auto php

나는 T가 무엇을 의미하는지 고개 상태 열에서하고 중지 의미 발견,하지만 즉, 프로세스가 무엇을하고 있는지 이해가 안 돼요.

PHP에서 자체 신호 처리만들 수 있다는 것을 알고 있지만 그렇게하지 않았습니다. PHP가 SIGTERM 신호를 수신 하면 어떻게됩니까?

중지 된 프로세스는 무엇입니까 (있는 경우)?

답변:


15

프로세스가 STOP신호 를 수신했으며 신호 를 수신 할 때까지 아무 것도 CONT하지 않고 종료되지도 않음을 의미합니다.

가장 일반적인 STOP신호 소스 ^z는 프로세스가 포 그라운드에있는 동안 사용자가 타격 하는 것이며, CONT이후 에 보내는 일반적인 방법 은 입력 fg하거나 bg포 그라운드 및 백그라운드에서 프로세스를 계속하는 것입니다.

STOP프로세스 로 보내는 또 다른 방법 은 kill -STOP $pid입니다. 마찬가지로을 사용 CONT하여 프로세스로 보낼 수 있습니다 kill -CONT $pid.

TERM프로세스에 신호를 보냈으므로 종료한다고 가정합니다. 이를 위해서는 프로세스가 CONT신호 를 수신해야합니다 . kill -CONT 8754 8767터미널 창 에 입력하여 보낼 수 있습니다 .


CONT 신호를 보내면 스크립트가 완료 될 때까지 스크립트를 실행할 수 있습니까? 아니면 스크립트가 즉시 종료됩니까?
Jon

프로세스는 CONT를 수신 할 때 수행중인 작업 (STOP 이전)을 계속합니다. 그러나 TERM kill $pid이 중지 된 동안 (예를 들어) TERM을 보낸 경우 해당 TERM에 (늦게) 응답하여 종료됩니다.
Eroen

흠, 그래서 kill 8754프로세스를 결국 종료 해야하는 TERM을 실행하여 보냈 습니까? 프로세스가 종료되는 동안 어떤 상태에 있는지 알고 있습니까? 에서 STOP 신호를 수신 한 것처럼 프로세스가 STOP 상태가 된 경우 kill -STOP 8754TERM 신호가 전송 된 경우에도 발생할 수 있습니까?
Jon

중지 된 프로세스 TERM는 계속 될 때까지 신호 로 인해 종료되지 않습니다 . KILL정지 된 상태에서도 신호를 수신하면 즉시 종료됩니다 . 프로세스가 종료되면 실행 상태에 있다고 가정합니다. PHP에 익숙하지 않으며 프로세스가 왜 중지되었는지 알 수 없습니다. 죄송합니다. 그러나 일반적으로 프로세스는 수신되지 않고 멈추지 않고 종료됩니다 TERM.
Eroen

4

Linux / Unix에서 중지 된 프로세스는 중지 된 신호 ( SIGSTOP/ SIGTSTP) 를 수신 한 프로세스 / 태스크로, ​​중지 된 커널이 처리를 수행하지 않도록 커널에 알리고 SIGCONT신호 가 전송 된 경우에만 실행을 재개 할 수 있습니다 .

기본적으로 중지 된 프로세스는 중지 된 프로세스가 커널에서 깨우기 조건을 기다리는 것과 유사하게 커널에서 연속 신호를 기다립니다.

Linux 커널 프로세스 상태 : 준비, 실행, 중지, 일시 중단, 추적, 좀비

이미지 크레디트 : polytechnique.fr


Linux 커널의 각 프로세스는 task_struct데이터 구조로 표시되며 각 task벡터는 모든에 대한 포인터 배열로 구성됩니다 task_struct. 이는 (그것의 두 시스템에서 프로세스 또는 작업을 설명 unrunnable, runnable또는 stopped). 자세한 내용은 프로세스Linux 데이터 구조 를 참조하십시오.

참조 : 리눅스 커널 : 프로세스 관리


@Jus보고 해 주셔서 감사합니다. 수정했습니다.
kenorb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.