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


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.