我在运行脚本时遇到了crontab问题。Crontab权限被拒绝
我须藤的crontab -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的响应
上craftbukkit更改所有者根,看看是否解决了这个问题。
-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
非常感谢那些回答,尤其是twalberg!
关于#2 - 使用'/ usr/bin/java'应该没问题,如果这是你通常使用的(只需输入'java') - 我不确定你是否使用了不同的位置,所以我没有提出具体的路径。对于#3,我从来没有试过在没有控制终端的情况下启动'screen',所以我建议这种可能性 - 不确定是否有必要,但值得尝试。而“权限被拒绝”来自'grep'不能读取这些文件 - 而不是来自你的'cron'作业失败。 'cron'是否通过电子邮件发送脚本中的任何输出? – twalberg
我(愚蠢的)没有设置croncab给我发电子邮件。 但现在当我做了,我得到了这个: 必须连接到一个终端。 所以我想这个问题与屏幕有关? –
现在它可以工作!该问题与在脚本中不使用_screen -d -m_有关! –