Gewusst wie: Debuggen eine Frage der cron ist nicht die Ausführung einer Skript — oder anderen?

Ich habe eine Rails-script möchte ich täglich ausgeführt werden. Ich weiß, es gibt viele Ansätze, und dass ein cron-würde script/runner Ansatz ist verpönt, aber es scheint meinen Anforderungen entsprechen.

Aber mein script wird nicht immer ausgeführt wie geplant.

Meine Anwendung lebt auf /data/myapp/current, und das Skript ist in script/myscript.rb. Ich kann es manuell ausführen, ohne problem als root mit:

/data/myapp/current/script/runner -e production /data/myapp/current/script/myscript.rb

Wenn ich das Tue, ist der spezielle log-Datei (log/myscript.log) wird protokolliert, wie erwartet:

Tue Mar 03 13:16:00 -0500 2009 Starting to execute script...
...
Tue Mar 03 13:19:08 -0500 2009 Finished executing script in 188.075028 seconds

Ich habe es zu laufen mit cron jeden morgen um 4 Uhr. root's crontab:

$ crontab -l
0 4 * * * /data/myapp/current/script/runner -e production /data/myapp/current/script/myscript.rb

In der Tat, es sieht aus wie es versucht zu laufen, wie vor kurzem, als heute morgen!

$ tail -100 /var/log/cron
...
Mar  2 04:00:01 hostname crond[8894]: (root) CMD (/data/myapp/current/script/runner -e production /data/myapp/current/script/myscript.rb)
...
Mar  3 04:00:01 hostname crond[22398]: (root) CMD (/data/myapp/current/script/runner -e production /data/myapp/current/script/myscript.rb)
...

Jedoch, dort ist kein Eintrag in meine log-Datei, und die Daten, die Sie aktualisieren sollten, wurde nicht immer aktualisiert. Die log-Datei Berechtigungen (als test) wurden sogar Global beschreibbar:

$ ls -lh
total 19M
...
-rw-rw-rw- 1 myuser apps 7.4K Mar  3 13:19 myscript.log
...

Läuft bei mir auf CentOS 5.

Also meine Fragen sind...

  1. Wo kann ich sonst noch nach Informationen suchen zu Debuggen?
  2. Könnte dies ein SELinux-Problem? Gibt es einen Sicherheits-Kontext konnte ich einstellen oder ändern, das könnte diesen Fehler beheben?

Danke!

Update

Danke an Paul und Lukas beide. Es hat entpuppen sich ein Umwelt-Problem, und die Erfassung der stderr eine log-Datei, die es mir ermöglicht, den Fehler zu finden.

$ cat cron.log 
/usr/bin/env: ruby: No such file or directory

$ head /data/myapp/current/script/runner 
#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/../config/boot'
require 'commands/runner'

Hinzufügen der spezifischen Ruby-ausführbare Datei der Befehl hat den trick:

$ crontab -l
0 4 * * * /usr/local/bin/ruby /data/myapp/current/script/runner -e production /data/myapp/current/script/myscript.rb >> /data/myapp/current/log/cron.log 2>&1
InformationsquelleAutor Ian Terrell | 2009-03-03
Schreibe einen Kommentar