スクリプトを実行しているときにcrontabに問題があります。
私のsudocrontab-eは次のようになります:
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
そして、start.shは次のようになります。
#!/bin/sh
screen java -d64 -Xincgc -Xmx2048M -jar craftbukkit.jar nogui
これらの権限があります(ls -l出力)
-rwxr-xr-x 1 eve eve 72 Nov 24 14:17 start.sh
sudoを使用するかどうかに関係なく、ターミナルからコマンドを実行できます
./start.sh
しかし、それはcrontabで始まりません。私が行った場合
grep -iR "start.sh" /var/log
次の出力が得られます
/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
だから私の質問は、なぜそれが機能しないのですか?また、スクリプトはsudoを使用せずに実行されるため、必ずしもsudo crontabに配置する必要はありませんか?
(そして私はUbuntu 12.10を使用しています)
よろしくお願いします、フィリップ
twalbergの応答への回答
1. Craftbukkitの所有者をrootに変更して、問題が解決したかどうかを確認します。
-rw-r--r-- 1 root root 12084211 Nov 21 02:14 craftbukkit.jar
また、start.shスクリプトに明示的なCDを追加しました。
#!/bin/sh
cd /opt/mcserver/
screen java -d64 -Xincgc -Xmx2048M -jar craftbukkit.jar nogui
2.ここで何を意味するのかよくわかりません。Javaを起動するときに、start.shファイルで次のパスを使用する必要がありますか?(どのjavaからの出力)
/usr/bin/java
3.サーバーが閉じると、画面が終了します。とにかく「デタッチモード」で画面を開始するのは良い考えですか?
それでも同じ「許可が拒否されました」エラーが発生しました。
問題は解決しました!以下のように、画面上で適切なフラグを使用することにより、正常に機能するようになりました。
screen -d -m java -d64 -Xincgc -Xmx2048M -jar craftbukkit.jar nogui
答えてくれた人たち、特にトワルバーグに感謝します!