2009-12-10 08:38:25 +0000 2009-12-10 08:38:25 +0000
22
22

Como executar script de shell via crontab?

Eu tenho um guião notify.sh que se parece:

notify-send "hi welcome"

A minha notificação de crontab para as 14 horas:

0 14 * * * home/hacks/notify.sh

Contudo, isto não funciona. Qual é o problema?

Respostas (6)

38
38
38
2009-12-10 09:04:32 +0000

Falta-lhe uma linha #! no início, que é a magia interpretada pelo kernel para dizer qual o intérprete de comando a ser utilizado para o guião.

Faça com que se pareça com isto:

#!/bin/sh
notify-send "hi welcome"

e certifique-se de que o guião é executável:

ls -l home/hacks/notify.sh
chmod +x home/hacks/notify.sh
ls -l home/hacks/notify.sh

Também, já que está a pedir que isto aconteça apenas uma vez por dia, o fuso horário da crontab é o mesmo que o seu próprio fuso horário? Poderá encontrar isto a acontecer às 14h GMT.

18
18
18
2010-03-25 06:05:09 +0000

Fazer crontab running é apenas fácil. Aqui vou dizer como fazer crontab jobs. É útil para qualquer pessoa que esteja presa na crontab.

*/1 * * * * cd /home/hacks && sh notify.sh

Para tornar o script executável, temos de fazer:

chmod +x home/hacks/notify.sh

Aqui vou correr este script por cada um minuto … Ao fazer abaixo o script, pode escrevê-lo num ficheiro de registo para descobrir se está a funcionar

escrever log */1 * * * * cd /home/hacks && sh notify.sh>>test.log

enviar correio

*/1 * * * * cd /home/hacks && sh notify.sh>>test.log | mail -s "Hi this is example" user@domain.com
5
5
5
2009-12-10 08:42:40 +0000

4 hipóteses:

  • o cron daemon não está a correr (fazer um ps axfww | grep cron e verificar)

  • o notifica-envio está a tentar enviar saída para um terminal, ou uma sessão X – mas é executado a partir do ambiente cron e não sabe “com quem falar”, por assim dizer.

  • o seu script não é executável

  • o caminho home/ no script crontab é relativo ao utilizador como os scripts são executados. Tente usar o caminho completo

1
1
1
2012-03-11 00:33:46 +0000

Adicione export DISPLAY=:0 acima da linha de notificação de envio no seu guião. Isto aborda o segundo ponto da lornezog.

0
0
0
2015-10-24 12:00:18 +0000

Primeiro de tudo, precisamos de editar a crontab com o comando crontab -e e depois Dentro deste Crontab adicione o caminho do script executável e no seu caso como este * 14 * * * home/hacks/notify.sh >/dev/null 2>&1 .

Start /Stop / restart cron service /etc/init.d/crond start /stop / restart - service crond start /stop /restart - systemctl stop crond.service - 0x6&

systemctl stop crond.service

-2
-2
-2
2018-12-28 16:01:47 +0000

bastante simples, adicionar a seguinte linha no fundo do ficheiro crontab via:sudo nano /etc/crontab

@reboot root cd /home/pi/node-sonos-http-api && npm start &