Crontab Permission Denied
Ich habe problem mit crontab, wenn ich ein Skript ausgeführt wird.
Meine sudo crontab -e sieht wie folgt aus:
05 00 * * * /opt/mcserver/backup.sh
10 00 * * * /opt/mcserver/suspend.sh
05 08 * * * /sbin/shutdown -r +1
11 11 * * * /opt/mcserver/start.sh <--- This isn't working
Und die start.sh sieht wie folgt aus:
#!/bin/sh
screen java -d64 -Xincgc -Xmx2048M -jar craftbukkit.jar nogui
haben und diese Zugriffsrechte (ls -l Ausgabe)
-rwxr-xr-x 1 eve eve 72 Nov 24 14:17 start.sh
Kann ich den Befehl ausführen aus dem terminal, entweder mit sudo oder nicht
./start.sh
Aber es wird nicht start mit crontab.
Wenn ich
grep -iR "start.sh" /var/log
Bekomme ich die folgende Ausgabe
/var/log/syslog:Nov 27 11:11:01 eve-desk CRON[5204]: (root) CMD (eve /opt/mcserver/start.sh)
grep: /var/log/btmp: Permission denied
grep: /var/log/lightdm/x-0-greeter.log: Permission denied
grep: /var/log/lightdm/lightdm.log: Permission denied
grep: /var/log/lightdm/x-0.log: Permission denied
Also meine Frage ist, warum funktioniert das nicht?
Und da mein Skript ausführen, ohne die Verwendung von sudo, brauche ich nicht unbedingt, um es in die sudo crontab?
( und ich bin mit Ubuntu 12.10 )
Vielen Dank im Voraus,
Philip
Antwort auf twalberg Antwort
1. Besitzer geändert auf craftbukkit zu root, um zu sehen, wenn das problem behoben.
-rw-r--r-- 1 root root 12084211 Nov 21 02:14 craftbukkit.jar
und fügte auch eine explizite cd in mein start.sh Skript:
#!/bin/sh
cd /opt/mcserver/
screen java -d64 -Xincgc -Xmx2048M -jar craftbukkit.jar nogui
2. Ich bin mir nicht ganz sicher, was Sie hier bedeuten. Sollte ich den folgenden Pfad verwenden, in meinem start.sh Datei, wenn ich start java?
(Ausgang, von dem java)
/usr/bin/java
3. Wenn mein server geschlossen, Bildschirm ist beendet. Ist es eine gute Idee zu start screen im "detached mode" eh?
Immer noch die gleichen Fehler "Zugriff verweigert".
Problem gelöst!
Mit der richtigen Flagge auf dem Bildschirm, wie unten, es funktioniert jetzt wie es soll!
screen -d -m java -d64 -Xincgc -Xmx2048M -jar craftbukkit.jar nogui
Vielen Dank an diejenigen, die geantwortet haben, und vor allem twalberg!
/usr/bin/java
sollten fein sein, das ist die, die Sie normalerweise verwenden (einfach durch Eingabe java
) - ich wusste nicht sicher, ob Sie einen anderen Standort, also ich habe nicht vor, eine bestimmte Pfad. Für #3, ich habe nie versucht, ab screen
ohne ein kontrollierendes terminal zur Verfügung, also habe ich vorgeschlagen, die Möglichkeit - nicht sicher, ob es notwendig ist, aber einen Versuch Wert. Und die "Permission denied" kommt aus grep
nicht in der Lage zu Lesen diese Dateien nicht von Ihrem cron
Auftrag nicht in irgendeiner Weise. Ist cron
e-Mail-Versand jeder Ausgabe aus dem Skript?Ich (blöderweise) nicht eingerichtet croncab senden Sie mir eine e-mail. Aber jetzt wenn ich es Tat, bekam ich diese: Muss angeschlossen werden an ein terminal. Also ich denke, die problew zu tun hat mit dem Bildschirm?
Und jetzt funktioniert es! Das problem hatte damit zu tun, nicht mit screen -d -m in meinem Skript!
InformationsquelleAutor Philip Larson | 2012-11-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier sind einige Dinge zu überprüfen:
root
offensichtlich hat read/execute-Berechtigungen aufstart.sh
, aber was sind die Berechtigungen aufcraftbukkit.jar
- kannroot
es Lesen? Möglicherweise möchten Sie auch eine explizite hinzufügencd /path/to/where/craftbukkit.jar/is
in Ihremstart.sh
Skript.java
imroot
's Standard-Pfad innerhalbcron
? Beachten Sie, dass dieser Weg nicht unbedingt der gleiche wie der, der Sie bekommen übersudo
,su
oder direkt als root anmelden - es ist in der Regel viel mehr eingeschränkt. Die Verwendung der vollständigen Pfad-und Dateinamen für beidejava
undcraftbukkit.jar
zu umgehen.screen
wird nicht starten, wenn ein terminal vorhanden ist, müssen Sie möglicherweisescreen -d -m ...
statt. Hoffentlich, Sie wollen schließlich befestigen jederscreen
Instanz und beenden Sie es später, oder Sie arrangiert für Sie automatisch beendet, wenn das Skript beendet ist.../var/log/syslog
Eintrag zeigt, dasscron
in der Tat das Skript auszuführen, so muss es versäumt haben, für eine der oben genannten Gründen (oder etwas anderes habe ich noch nicht bemerkt)grep
sind einfach aufgrund der Tatsache, dass Ihr nichtroot
Benutzer nicht über die Berechtigung zum Lesen von diesen bestimmten Dateien (das ist normal und eine gute Sache).InformationsquelleAutor twalberg
start.sh
ist im Besitz von "eve:eve" und Ihre crontab als root läuft.Können Sie lösen dies, indem Sie folgenden Befehl
Ihre crontab ausgeführt wird, als root aber.
Tipp: Beim ausführen von bash in der crontab immer absolute Pfade verwenden (es wird das Debuggen viel einfacher).
Nicht wirklich relevant, da
root
hat die Berechtigung zum Lesen und ausführenstart.sh
(obwohl wir nicht wissen, was die Rechte sind, wie z.B.craftbukkit.jar
- und andere Dateien, dieroot
schließlich berühren musst, um als Ergebnis der Ausführungstart.sh
.InformationsquelleAutor Niclas Larsson
Zeigt das log der Benutzer hat keinen Zugang zu dir " /var/log/", sollten Sie die log-Dateien' mal für die cron-Besitzer.
InformationsquelleAutor shiwenlu518