Como posso executar um script personalizado em / usr / bin / via cronjob?

1

Primeiro de tudo:

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.

O cenário:

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.

O script

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

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.

Tentativas adicionais

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

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.

A questão

Há algo errado que estou fazendo? Ou algo mais que eu deveria tentar?

Qualquer ajuda é apreciada.

Atualizar

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.

    
por Geppettvs D'Constanzo 14.02.2016 / 00:23

0 respostas