Para mostrar os daemons em ps
, você precisa incluir a opção -e
(System V / POSIX) ou a
(BSDish). Experimente ps aux
ou ps -ef
.
Eu tenho um cronjob definido para ser executado constantemente. É um arquivo php que transmite dados do twitter. No entanto twitter cai de vez em quando ou perdemos a conexão, então eu tenho cron checando de volta a cada minuto para tentar executar o arquivo. O script php verifica um arquivo de bloqueio para garantir que várias cópias não sejam executadas. A coisa é que este script será executado por horas a fio e eu quero ser capaz de matá-lo. No entanto, não consigo encontrá-lo usando comandos como
ps ux
O cronjob foi iniciado com o meu usuário e eu olhei para vê-lo na raiz. Eu não consigo encontrar o processo em execução.
Estou usando
/usr/bin/php /var/www/twitter/stream.php
para executar no meu arquivo cron e sei que ele está em execução, porque a cada minuto ele grava um arquivo em um diretório. Eu posso parar cron, mas o processo continua, eu simplesmente preciso matá-lo. Não tenho certeza se isso pertence aqui ou no Stack Overflow.
Você está fazendo errado. (Pelo menos na minha humilde opinião: -)
Você pode fazer o que quiser da maneira que Geekosaur ou James Yale sugeriram, mas eu acho que você realmente quer o do PHP pcntl_alarm () function (e seu parente pcntl_signal
) que permitirá que seu script PHP tire proveito do recurso SIGALRM
e se mate quando algo der errado.
O que você faz com o despertador é sua chamada (pode ser tão simples quanto "Sair se eu estiver correndo por uma hora" ou tão complexa quanto "Verifique se recebemos dados do Twitter. Se não reinicialize a conexão e, se ainda assim não conseguirmos que os dados saiam e deixe o script rodar novamente mais tarde "- tudo depende da complexidade do seu script).
Mais perguntas sobre SIGALRM
e manipulação de sinais devem provavelmente ir para o StackOverflow - eles estão (espero) familiarizados com ele e podem lhe dar mais orientação do ponto de vista de programação: -)
Normalmente, os processos gravam o PID no arquivo de bloqueio, assim você pode encontrar os dois se o processo estiver em execução e o que é o ID em um só lugar.
Eu sugiro que você modifique seu script para fazer isso, então você pode apenas posix_kill ou similar, conforme necessário.