Como configurar um trabalho Cron por hora para executar 'grive' de '/etc/cron.hourly'?

0

Eu adicionei o arquivo grive.sh to /etc/cron.daily , mas o comando não parece estar em execução. Também copiei para /etc/cron.hourly , mas não houve alterações no meu diretório do Google Drive. O arquivo tem apenas três linhas:

#! /bin/sh
cd /media/james/Seagate Expansion Drive/GD
grive

As permissões são somente para leitura, então atualizarei essas permissões.

Eu usei /etc/cron.hourly# chmod u+rwx grive.sh , mas quando eu verifico as permissões do arquivo no Nautilus, elas permanecem inalteradas - não sei por quê.

Eu posso executar grive manualmente a partir do terminal, e os arquivos são sincronizados localmente e on-line.

root@james-Streacom:/etc/cron.hourly# grep CRON /var/log/syslog
Feb  1 09:17:02 james-Streacom CRON[8696]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb  1 10:17:01 james-Streacom CRON[10958]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb  1 11:17:01 james-Streacom CRON[12897]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb  1 12:17:01 james-Streacom CRON[15307]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb  1 13:17:01 james-Streacom CRON[17043]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb  1 14:17:01 james-Streacom CRON[17354]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb  1 15:17:01 james-Streacom CRON[17705]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
root@james-Streacom:/etc/cron.hourly# cd / && run-parts --report /etc/cron.hourly
root@james-Streacom:/# bash -c "cd / && run-parts --report /etc/cron.hourly"
root@james-Streacom:/#

Observe que isso pode ser uma duplicata de O cron job não funciona quando colocado em '/etc/cron.hourly/' mas funciona quando definido em 'crontab -e' , eu estou passando por esses passos.

Adicionei echo test >/tmp/foobar.tmp à última linha do script.

root@james-Streacom:/etc/cron.hourly# grep 'cron\.hourly' /etc/crontab
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly

/temp/foobar.tmp não existe.

Eu tentei executar # cd /media/james/Seagate Expansion Drive/GD e recebi o erro -su: cd: too many arguments . Então mudei a linha de cd no script para cd /media/james/"Seagate Expansion Drive"/GD .

$ echo test >/tmp/foobar.tmp cria o arquivo com teste nele. # echo test2 >/tmp/foobar.tmp sobrescreve teste com test2.

    
por James Ray 01.02.2018 / 05:11

2 respostas

2

Além do espaço em branco sem aspas em seu script original (que você parece ter corrigido), o problema é provável com a nomenclatura do seu script.

De acordo com a seção DEBIAN SPECIFIC de man cron :

% bl0ck_qu0te%

Como grive.sh tem um ponto em seu nome, run-parts irá ignorá-lo.

    
por steeldriver 01.02.2018 / 12:28
0

Eu realmente não entendi sua pergunta, embora na minha experiência alguns comandos não funcionem como esperado quando você os adiciona em um script e coloca um cronjob.

Eu começaria adicionando ao novo arquivo em /etc/cron.d/test da seguinte forma (eu configurarei a cada 5 minutos apenas para obter alguns logs para fins de teste):

# m h  dom mon dow user command
*/5 * * * * root [DIR_TO_SCRIPT]/grive.sh >> /var/log/grivesh.log 2>&1

Por favor, veja stdout em /var/log/grivesh.log , uma vez que você tenha analisado, você pode ter o cronjob configurado uma vez a cada hora como este (por exemplo, no minuto 5 a cada hora):

# m h  dom mon dow user command
5 * * * * root [DIR_TO_SCRIPT]/grive.sh >> /var/log/grivesh.log 2>&1

É necessário ter em /etc/cron.hourly/ ? Você não preefer para tê-lo em /etc/cron.d/ ou em um crontab para o seu usuário?

Atenciosamente,

    
por Alvaro Niño 01.02.2018 / 11:19