Esta não é uma cópia de Cronjobs feitos via cronjob não funcionando que parece ser corrigido simplesmente dando permissões de execução ao script e / ou adicionando o #!/bin/bash
no início do script.
Eu tentei alguns conselhos publicados na net, fóruns e outros, mas ainda não consegui.
Estou com alguns problemas ao tentar executar scripts personalizados localizados em /usr/bin
via cronjob. No exemplo: Estou usando o Ubuntu 14.04.3 com o i3WM Tiling Window Manager, no qual estou tentando executar um script personalizado chamado wall
, que deve alterar o papel de parede com feh
via linha de comando.
O script wall roda bem quando é invocado via terminal ou na barra de menus do i3wm, o que indica que o script deve ser executado, mas não.
Quando encontro o script wall
via whereis wall
, o terminal mostra os próximos resultados:
wall: /usr/bin/wall /usr/bin/X11/wall /usr/share/man/man1/wall.1.gz
Não sei por que tenho uma cópia do script nos diretórios /usr/bin
e /usr/bin/X11
, mas os dois fazem o mesmo quando eu o executo manualmente. Nenhum dos dois faz nada quando eu o coloco no crontab.
O conteúdo do script é o seguinte:
feh --bg-scale "'shuf -n1 -e ~/.i3/wall/*'"
Esse comando obterá uma imagem aleatória da pasta ~ / .i3 / wall e dimensionará essa imagem para o tamanho da área de trabalho para ser usada como imagem de fundo.
As propriedades do arquivo de script são assim:
geppettvs@T400:~$ ls /usr/bin -l | grep wall
-rwxr-xr-x 1 root root 2067448 oct 21 2013 fotowall
-rwxr-xr-x 1 root root 6264 oct 27 09:21 kwalletd
-rwxr-sr-x 1 root tty 45 ene 27 07:51 wall
-rwxr-xr-x 1 root root 1747 abr 25 2014 wallpaper-changer
Dos quais eu apenas notei que a propriedade difere apenas pelo "tty" no script, que eu mudei para root via chown
sem nenhuma diferença.
O crontab do meu usuário atualmente contém o seguinte:
GNU nano 2.2.6 File: /tmp/crontab.Fb84OE/crontab
# m h dom mon dow command
# * * * * * /home/geppettvs/wifirc.sh # JOB_ID_2
* * * * * /usr/bin/wall # JOB_ID_4
Meu usuário root crontab é assim:
# m h dom mon dow command
@reboot sudo iwconfig wlan0 rate 54M
* * * * * wall
Mas nem o crontab do usuário nem o raiz fazem nada com esse script.
Vamos ter em mente que, desta vez, estou falando de um simples script de troca de papel de parede. Mas eu tenho alguns outros scripts que não são executados quando eu os coloco em um crontab.
Eu já tentei usar o #!/bin/bash
na primeira linha do script, deixando ou removendo linhas em branco na parte superior / inferior do script e / ou no arquivo crontab. E parece não ter efeito para fazer funcionar. O mesmo vale para tentar usar o caminho absoluto ou invocar o script simplesmente pelo nome (que funciona em um terminal, de fato).
O log se parece com isso:
Feb 13 17:20:01 T400 CRON[9093]: (geppettvs) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:20:01 T400 CRON[9094]: (root) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:21:01 T400 CRON[10290]: (geppettvs) CMD (/usr/bin/wall # JOB_ID_4)
Feb 13 17:21:01 T400 CRON[10291]: (root) CMD (wall)
Feb 13 17:21:01 T400 CRON[10289]: (root) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:21:01 T400 CRON[10288]: (geppettvs) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:22:01 T400 CRON[11575]: (geppettvs) CMD (/usr/bin/wall # JOB_ID_4)
Feb 13 17:22:01 T400 CRON[11578]: (root) CMD (wall)
Feb 13 17:22:01 T400 CRON[11573]: (geppettvs) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:22:01 T400 CRON[11574]: (root) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:23:01 T400 CRON[12860]: (geppettvs) CMD (/usr/bin/wall # JOB_ID_4)
Feb 13 17:23:01 T400 CRON[12862]: (root) CMD (wall)
Feb 13 17:23:01 T400 CRON[12859]: (root) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:23:01 T400 CRON[12858]: (geppettvs) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:24:01 T400 CRON[14157]: (root) CMD (wall)
Feb 13 17:24:01 T400 CRON[14158]: (geppettvs) CMD (/usr/bin/wall # JOB_ID_4)
Feb 13 17:24:01 T400 CRON[14155]: (geppettvs) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:24:01 T400 CRON[14156]: (root) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:25:01 T400 CRON[15448]: (geppettvs) CMD (/usr/bin/wall # JOB_ID_4)
Feb 13 17:25:01 T400 CRON[15450]: (root) CMD (wall)
Feb 13 17:25:01 T400 CRON[15447]: (root) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:25:01 T400 CRON[15446]: (geppettvs) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
O que parece estar rodando o script, mas nada está acontecendo em cada script executado iteração.
Há algo errado que estou fazendo? Ou algo mais que eu deveria tentar?
Qualquer ajuda é apreciada.
Como mencionado em um comentário para o conselho do j0h , eu também tentei usar o caminho absoluto para a pasta da imagem.
O comando agora parece
feh --bg-scale "'shuf -n1 -e /home/geppettvs/.i3/wall/*'"
e funciona em um terminal, mas não é executado via cron.
Eu estou supondo que o problema vem do acento grave (') que pode estar levando a uma interrupção na execução do cronjob.
No entanto, tentei mudar o sotaque para outro símbolo, após o qual o comando parou de funcionar em todos os lugares. Você pode ver a saída do terminal como mostrado:
geppettvs@T400:~$ feh --bg-scale "'shuf -n1 -e /home/geppettvs/.i3/wall/*'"
feh WARNING: 'shuf -n1 -e /home/geppettvs/.i3/wall/*' does not exist - skipping
feh: No loadable images specified.
See 'man feh' for detailed usage information
Qualquer ajuda para melhorar este comando é bem-vinda. Agradecemos antecipadamente.