Cronjob non funziona


0

Ho provato a impostare un cronjob sul mio server. In realtà questo comando dovrebbe eseguire un programma Java ogni ora. Ma in qualche modo questo non ha funzionato. Ho cercato su Google e ho cercato di impostare uno script di test che dovrebbe essere eseguito ogni minuto in modo da poter vedere se il mio cronjob funziona.

Se eseguo lo script dalla shell non ci sono problemi.

ps ax| grep cron

stampa quanto segue

1147 ?        Ss     0:00 cron
13940 pts/0    S+     0:00 grep --color=auto cron

il mio crontab -l:

# m h  dom mon dow   command
30 * * * * root java -jar -Xss100m /home/crawler/WebCrawler.jar
1 * * * * root /home/crawler/test.sh

il test.sh:

#!/bin/bash

echo "this is a test " >> test.txt

Qualcuno ha un idead che cosa forse non va nel mio sistema e nei crontab che ho impostato? È un server ubutnu 10.04 (perché l'hoster che uso ha avuto problemi con la sua virtualizzazione e grazie a quel 10.04 è l'unica versione che esegue correttamente jvm: /)

java  linux  bash  cron 

Sai quale -Xssparametro rappresenta? :)

Il test.shcron è stato eseguito come previsto. Immagino che tu debba rimuovere la rootparola dall'inizio del comando. Non l'ho mai visto prima.
mtk,

iirc -xssimposta una dimensione dello stack per il thread. test.sheseguire come previsto se lo avvio dalla shell con ./test.sh. Ho rimosso il root dal crontab ma non viene ancora eseguito.

puoi controllare la tua posta? Voglio dire, inserisci la posta in unix / terminal e controlla se ci sono delle lettere. Se c'è controllo, cosa dice?

Tutto apposto. Dimenticato totalmente che cron invia la mia posta in caso di errori. Cron sembra non avere problemi con l'esecuzione test.shperché non c'è posta che menziona questo file. Ma ha avuto problemi con il comando java. Sembra che il cronjob non stia eseguendo il processo nella /home/crawler/directory. Il crontab non è in grado di trovare il COnfig.cfg di cui ha bisogno il programma java e che si trova nella /home/crawler/directory successiva e non è in grado di eseguire casperjs che sono passati al percorso tramite il mio bashrc. Qualche idea?

Risposte:


2

Rimuovi la parola "root". Dovrebbe sembrare come questo:

1 * * * * /home/crawler/test.sh

Dovrebbe funzionare, se l'utente che esegue cron ha abbastanza privilegi per eseguire lo script.


Tutto apposto. L'ho già provato. Ma sembra che il crojob non sia eseguito nella directory dello script, quindi non riesco a trovare l'output.

Penso che per impostazione predefinita Crontab venga eseguito dalla directory home. Ma non sono sicuro. Puoi comunque risolverlo specificando l'output nello script con un percorso completo: echo "this is a test " >> /tmp/test.txto facendo un cd prima del comando cron: 1 * * * * cd tmp && /home/crawler/test.shoppure facendo il cd come primo comando nello script e quindi l'istruzione echo.
Alex,

in qualche modo né 1 * * * * cd /home/crawler& && test.shné inserendo cd /home/crawler/nel test.sh seem per funzionare :(

E gli utenti che eseguono crontab possono eseguire lo script? ps Ti rendi conto che questo lo fa funzionare una volta ogni ora giusto? (1 * * * *). Non so come lo stai testando, ma non hai aspettato un'ora prima di pubblicare di nuovo qui ;-).
Alex,

va bene ... penso di aver confuso un sacco di pensieri: D 0-59 funziona bene cd /home/crawler& && test.sh. Grazie mille per avermi aiutato questa mattina :)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.