cron lançando mas não executando script

3

Eu configurei um crontab com crontab -e e verifiquei se ele foi salvo com crontab -l :

*/10 6-8 * 1-11 1 /home/asarluhi/Documents/Scripts/monday.sh

O conteúdo de monday.sh é:

#!/bin/bash

ruby ~/Documents/Scripts/monday_task.rb >> ~/Documents/Scripts/monday

monday_task.rb é um script ruby no qual a web raspa alguns dados, muito tempo para reportá-lo aqui, mas não há erros nele. monday é um simples arquivo de texto vazio,
O script está funcionando bem quando é lançado do shell.

Eu olhei para var/log/syslog e encontrei as seguintes entradas:

Nov  7 07:55:01 SATELLITE-L50-A-161 CRON[6984]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Nov  7 08:00:01 SATELLITE-L50-A-161 CRON[7032]: pam_ecryptfs: Skipping automatic eCryptfs mount
Nov  7 08:00:01 SATELLITE-L50-A-161 CRON[7033]: (asarluhi) CMD (/home/asarluhi/Documents/Scripts/monday.sh)
Nov  7 08:00:01 SATELLITE-L50-A-161 CRON[7031]: (asarluhi) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Nov  7 08:00:01 SATELLITE-L50-A-161 CRON[7038]: pam_ecryptfs: Skipping automatic eCryptfs unmount
Nov  7 08:00:43 SATELLITE-L50-A-161 anacron[6485]: Job 'cron.daily' terminated
Nov  7 08:00:43 SATELLITE-L50-A-161 anacron[6485]: Normal exit (1 job run)
Nov  7 08:05:01 SATELLITE-L50-A-161 CRON[7112]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Nov  7 08:10:01 SATELLITE-L50-A-161 CRON[7141]: pam_ecryptfs: Skipping automatic eCryptfs mount
Nov  7 08:10:01 SATELLITE-L50-A-161 CRON[7142]: (asarluhi) CMD (/home/asarluhi/Documents/Scripts/monday.sh)
Nov  7 08:10:01 SATELLITE-L50-A-161 CRON[7140]: (asarluhi) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Nov  7 08:10:01 SATELLITE-L50-A-161 CRON[7147]: pam_ecryptfs: Skipping automatic eCryptfs unmount
Nov  7 08:15:01 SATELLITE-L50-A-161 CRON[7206]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Nov  7 08:17:01 SATELLITE-L50-A-161 CRON[7221]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
...

Como você pode notar, os cron jobs começam às 8:00 da manhã, e não às 6:00 da manhã, como no crontable.
O script é iniciado, mas nada está escrito em ~/Documents/Scripts/monday
Eu li no script Cron não executando pergunta anterior do askubuntu que o STDERR deve acabar no sistema de email , mas não existem diretórios com o nome do meu usuário em /var/mail/ , então não encontrei nada.

    
por Asarluhi 07.11.2016 / 10:07

1 resposta

6

Parece que o executável ruby não está no caminho cron , então você precisa usar o caminho completo para o executável.

Altere seu script monday.sh de:

#!/bin/bash
ruby ~/Documents/Scripts/monday_task.rb >> ~/Documents/Scripts/monday

para:

#!/bin/bash
/home/asarluhi/.rvm/rubies/ruby-2.3.1/bin/ruby /home/asarluhi/Documents/Scripts/monday_task.rb >> /home/asarluhi/Documents/Scripts/monday

Como seu syslog demonstra que o script monday.sh está sendo executado no prazo, para que os nomes de caminho absolutos sejam a única resposta. Conforme o comentário do OP, ruby também deve ser prefixado com nome de caminho absoluto.

    
por WinEunuuchs2Unix 07.11.2016 / 10:43

Tags