2016-04-13 12 views
0

Unten ist mein Crontab:Crontab nicht funktioniert, aber seine Arbeit als Skript

*/5 * * * * /usr/bin/wget "http://localhost:8080/sample/index.jsp" --post-data "data=$(nohup sqoop import --connect 'jdbc:sqlserver://localhost;username=username;password=password;database=database' --table table1 --target-dir /user/data/ -m 1)&dt=$(date)&user=$USER" 

i Scheduling bin aber seine läuft nicht

+1

Funktioniert der Befehl, wenn Sie ihn manuell ausführen? Überprüfen Sie dies, um sicherzustellen, dass der Cron-Job fehlschlägt und nicht Ihr Befehl. Woher weißt du, dass es nicht läuft? Normalerweise werden Protokolle Ihnen sagen, ob der Cron lief oder nicht, beliebte Cron-Log-Speicherorte sind '/ var/log/cron','/var/log/messages' und '/ var/log/syslog'. – drewyupdrew

Antwort

1

Sie haben die volle Pfade in crontab zu verwenden, da sie nicht denselben Wert hat von $ PATH als Ihre Shell (dh verwenden Sie den vollständigen Pfad für nohup, sqoop)

0

Dies könnte daran liegen, dass Sie nicht im selben Ausführungskontext sind. Je nachdem, welche Shell Sie (adaptieren meine alte Schule .kshrc) ausgeführt wird, müssen Sie den Befehl mit einem source /home/myuser/.kshrc Präfix, wie unten:

*/5 * * * * source /home/myuser/.kshrc ; /usr/bin/wget "http://localhost:8080/sample/index.jsp" --post-data "data=$(nohup sqoop import --connect 'jdbc:sqlserver://localhost;username=username;password=password;database=database' --table table1 --target-dir /user/data/ -m 1)&dt=$(date)&user=$USER" 

Wenn ich kann, dies auch einfacher zu jedem aussehen könnte, wenn Ihr Der Befehl könnte in ein kleines Skript eingebettet sein. Dies könnte verhindern dies möglicherweise irreführende nohup Sie haben ... dann, wenn das Skript ist mycommand.sh:

*/5 * * * * source /home/myuser/.kshrc ; /home/myuser/mycommand.sh 

(wird gegeben Ihnen einen chmod u+x /home/myuser/mycommand.sh tat Ausführungsrechte zu gewähren).

Verwandte Themen