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?
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?
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.
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
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
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