Não é possível executar o Sikulix 1.1.0 no Ubuntu 15.10 com o crontab

1

Eu tento executar um script Sikulix, mas nada acontece.

crontab:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/absolute
MAILTO=""

# m h dom mon dow user  command
00 3    * * *   root    sh /usr/crons/this_script_works
10 3    1-5 * * root    /home/absolute/runsikulix -r /home/absolute/auto/test.sikuli

Se eu executo usando este comando, o script funciona bem:

sudo /home/absolute/runsikulix -r /home/absolute/auto/test.sikuli 

Alguma ideia?

    
por Ppetrelli 14.04.2016 / 17:51

1 resposta

1

Você precisa capturar a saída ilusória do crontab para poder ver o que está reclamando.

  1. Adicione -x ao seu shebang para saída detalhada no seu script: #!/bin/sh -x

  2. Defina a tarefa cron para executar com mais frequência enquanto você soluciona problemas: */1 * * * * root /home/absolute/runsikulix -r /home/absolute/auto/test.sikuli

O Crontab deve estar logando em / var / log / syslog por padrão. Execute um grep CRON /var/log/syslog e verifique a saída. Se você vir sua tarefa em execução, poderá tail -f do syslog quando o cron rodar e ver do que está reclamando.

  1. Se a saída não for detalhada o suficiente, você poderá reconfigurar o cron para gerar um arquivo de log seguindo estas instruções. Essa é a maneira "correta" de fazer isso:

Configurando o crontab para registrar em um arquivo ...

Isso deve mostrar a você cada etapa que o crontab está executando para que você possa ver onde está a falha. Eu observarei que o ambiente do crontab é muito pequeno e você deve usar caminhos cheios em vez de relativos em seu script, já que quaisquer binários que você chamar podem ou não estar disponíveis em seu caminho quando ele é executado. Crontab é engraçado assim. Para contornar isso, você pode adicionar caminhos ao seu script:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

... ou você pode chamar cada binário usando seu caminho completo:

/bin/echo "say something" && /bin/which java

Você também pode chamar o ambiente de um usuário inline:

0 5 * * * . /root/.profile; /home/absolute/runsikulix -r /home/absolute/auto/test.sikuli

Aqui está um exemplo de script no formato de modelo Ruby executado sob o crontab do root que ilustra algumas soluções alternativas para lidar com os problemas do ambiente:

master-commender.erb

    
por spyderdyne 14.04.2016 / 18:44