O que é um processo parado no linux?

10

Então, eu tinha alguns scripts PHP em execução na linha de comando e queria impedi-los de serem executados.

eu corri

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

E depois correu

$ ps aux | grep php

novamente para verificar se os processos terminaram, mas obteve esse tipo de saída:

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

Eu procurei o que o T significava no coluna de estado e descobriu que isso significa Parado, mas não entendo o que isso significa que o processo está fazendo.

Eu sei que você pode criar seu próprio tratamento de sinal em PHP, mas eu não feito isso, então quando o PHP recebe um sinal SIGTERM , o que ele faz?

O que um processo interrompido está fazendo (se houver)?

    
por Jon 21.03.2012 / 12:49

2 respostas

14

Isso significa que o processo recebeu um sinal STOP e não fará nada até receber um sinal CONT , nem mesmo terminar.

A fonte mais comum de STOP sinais é o usuário pressionando ^z enquanto o processo está em primeiro plano, e a maneira comum de enviar um CONT depois é digitar fg ou bg , que continuam processo em primeiro e segundo plano, respectivamente.

Outra maneira de enviar STOP para um processo é kill -STOP $pid . Da mesma forma, CONT pode ser enviado para um processo com kill -CONT $pid .

Como você enviou TERM sinais para os processos, presumo que você queira que eles sejam encerrados. Para que isso aconteça, os processos devem receber sinais CONT . Você pode enviá-las digitando kill -CONT 8754 8767 em uma janela de terminal.

    
por 21.03.2012 / 13:12
3

O processo interrompido no Linux / Unix é um processo / tarefa que recebeu o sinal de suspensão ( SIGSTOP / SIGTSTP ) que diz ao kernel para não executar qualquer processamento nele, pois ele foi parado e só pode ser retomado sua execução se for enviado o sinal SIGCONT .

O processo basicamente interrompido aguarda um sinal de continuação do kernel, da mesma forma que o processo suspenso aguarda uma condição de ativação do kernel.

Créditosdasimagens: polytechnique.fr

Cada processo no kernel do Linux é representado por uma estrutura de dados task_struct e cada vetor task consiste em uma matriz de ponteiros para cada task_struct . que descreve um processo ou tarefa no sistema (seja unrunnable , runnable ou stopped ). Veja: Processos e Estruturas de dados do Linux para obter mais detalhes.

Veja também: O Kernel Linux: Gerenciamento de Processos

    
por 20.02.2016 / 15:09