Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

crontab não executa comando

783 views
Skip to first unread message

Cleber Ianes

unread,
Oct 6, 2011, 3:40:02 PM10/6/11
to
Saudações.
Outro dia me foi solicitado para fazer um servidor centOS executar um determinado comando a cada 30 minutos.
Logo pensei: "Eita dinheirinho fácil, 5 minutos faço isso!"
Ledo engano.
Como root executei o comando "crontab -e" e inseri as linhas:
    */30   *       *       *       *       root /usr/bin/php /home/httpd/html/script1.php
    */30   *       *       *       *       root /usr/bin/php  /home/httpd/html/script2.php

Não esperei nem a execução e mandei a cobrança. Quase apanhei!!! rsrsrs

Os comandos simplesmente não executam e o pior é que aparecem no /var/log/cron como executados. (foi isso que fez que eu mandasse a cobrança. rsrs)
Quando executo exatamente dessa forma na linha de comando, funciona perfeitamente.

Adicionei ">>/root/logdoscript1.txt" e ">>/root/logdoscript2.txt" ao final das linhas e nada é mostrado nesses arquivos.

Tentei colocar tudo que está depois de "root" dentro de aspas mas também não funcionou, claro.
Tentei também tirar o "root" mas deu na mesma.

Criei um script "rodascripts.sh" e substitui "/usr/bin/php /home/httpd/html/script1.php" por "/root/rodascripts.sh" e ele rodou e executou os comandos gravando as saídas nos arquivos /root/logdoscript*.txt

Já desabilitei o SELinux.
E nada!

Paulino Kenji Sato

unread,
Oct 6, 2011, 3:50:02 PM10/6/11
to
Ola...

2011/10/6 Cleber Ianes <clebe...@yahoo.com.br>:
> Saudações.
> Outro dia me foi solicitado para fazer um servidor centOS executar um
> determinado comando a cada 30 minutos.
Vai ver pq não e um debian. [:)]

> Logo pensei: "Eita dinheirinho fácil, 5 minutos faço isso!"
> Ledo engano.
> Como root executei o comando "crontab -e" e inseri as linhas:
>     */30   *       *       *       *       root /usr/bin/php
> /home/httpd/html/script1.php

Editou o crontab de que usuário (obviamente do root)?
o crontab do usuário tem o seguinte formato
min hora dia mes semana comando argumentos

Somente quando se usa o "system wide", ou seja os agendamentos que
estão no /etc/crontab ou em um dos arquivos em /etc/cron.d/ que se
usa o campo do usuário.
Mas, tem certeza que e necessário rodar um script em PHP como root?
Pensou nas implicações de segurança disso?

Recomendo que leia o manual do cron e do crontab(5) do sistema onde
esse script ira rodar (no debian existem ao menos 3 ferramentas de
crond).




Paulino


--
To UNSUBSCRIBE, email to debian-user-por...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listm...@lists.debian.org
Archive: http://lists.debian.org/CAMM-fMiAP27MCZ9OkoVcQNuú9_m4cLs54Af...@mail.gmail.com

Eden Caldas

unread,
Oct 6, 2011, 5:20:02 PM10/6/11
to
Não coloca o nome do usuário dentro do crontab do root, como já disseram.

Outra coisa. Se liga que o path do crontab é diferente do shell padrão em login. Talvez esses scripts php aí estejam rodando algo que precise do path completo.

Você poderia então criar um script com o path padrão e esses seus dois comandos aí.


Cria o script assim:

su -
echo '#!/bin/bash' > /root/script.sh
echo $PATH >> /root/script.sh
echo '/usr/bin/php /home/httpd/html/script1.php' >> /root/script.sh
echo '/usr/bin/php /home/httpd/html/script2.php' >> /root/script.sh
chmod +x /root/script.sh

Agenda o script criado no crontab:


crontab -e
0,30 * * * * /root/script.sh

Eden Caldas
Consultor de TI
ed...@linuxfacil.srv.br
(81) 9653 7220
LINUX FÁCIL – Consultoria e Serviços em TI

Cleber Ianes

unread,
Oct 7, 2011, 8:20:01 AM10/7/11
to
Obrigado a todos.
Os problemas eram 2 e nesses casos a gente sempre apanha um pouco.
O primeiro problema eu já havia resolvido quando iniciei essa thread, era relacionado ao SELinux e eu o desativei e o cron passou a ser executado.
Nas tentativas antes de descobrir esse problema o administrador da própria empresa fez alterações no arquivo /etc/crontab e nessa alteração ele colocou o usuário na linha adicionada.
Resolvi dando um "crontab -r" e excluindo as linhas do /etc/crontab, foi nesse momento que percebi o erro nesse arquivo pois as dicas dos colegas aqui me fizeram atentar para do nome do usuário nesse arquivo.

Obrigado.


De: Eden Caldas <edenc...@gmail.com>
Para: Paulino Kenji Sato <pks...@gmail.com>
Cc: Debian-User <debian-user...@lists.debian.org>
Enviadas: Quinta-feira, 6 de Outubro de 2011 18:12
Assunto: Re: crontab não executa comando

Rodrigo B Brasil

unread,
Oct 10, 2011, 8:30:02 AM10/10/11
to
Já tentaste redirecionar o stderr pra esse arquivo tb?

 */30   *       *       *       *       root /usr/bin/php /home/httpd/html/script1.php >>/root/logdoscript1.txt 2>&1

--
Rodrigo Bezerra Brasil
Belém, PA, Brasil
'"Software Livre" é uma questão de liberdade, não de preço. Para entender o conceito, você deve pensar em "liberdade de expressão", não em "cerveja grátis".'



2011/10/6 Eden Caldas <edenc...@gmail.com>
0 new messages