Crontab权限被拒绝

Phi*_*son 5 linux permissions ubuntu crontab minecraft

我在运行脚本时遇到crontab问题。

我的sudo 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
Run Code Online (Sandbox Code Playgroud)

并且start.sh看起来像这样:

#!/bin/sh
screen java -d64 -Xincgc -Xmx2048M -jar craftbukkit.jar nogui
Run Code Online (Sandbox Code Playgroud)

并具有这些权限(ls -l输出)

-rwxr-xr-x 1 eve eve  72 Nov 24 14:17 start.sh
Run Code Online (Sandbox Code Playgroud)

我可以使用sudo从终端运行命令

./start.sh
Run Code Online (Sandbox Code Playgroud)

但这不会从crontab开始。如果我做

grep -iR "start.sh" /var/log
Run Code Online (Sandbox Code Playgroud)

我得到以下输出

/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
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,为什么它不起作用?而且由于我的脚本在不使用sudo的情况下运行,因此我不一定需要将其放在sudo crontab中?

(并且我正在使用Ubuntu 12.10)

预先感谢菲利普


回答特瓦尔伯格的回应

1.将Craftbukkit的所有者更改为root,以查看是否可以解决问题。

-rw-r--r-- 1 root root 12084211 Nov 21 02:14 craftbukkit.jar
Run Code Online (Sandbox Code Playgroud)

并在我的start.sh脚本中添加了一个明确的cd,如下所示:

#!/bin/sh
cd /opt/mcserver/
screen java -d64 -Xincgc -Xmx2048M -jar craftbukkit.jar nogui
Run Code Online (Sandbox Code Playgroud)

2.我不太确定你在这里的意思。启动Java时,是否应该在start.sh文件中使用以下路径?(从哪个java输出

/usr/bin/java
Run Code Online (Sandbox Code Playgroud)

3.当我的服务器关闭时,屏幕终止。无论如何,以“分离模式”启动屏幕是个好主意吗?

仍然出现相同的“权限被拒绝”错误。


问题解决了!通过如下所示在屏幕上使用适当的标志,它现在可以正常工作!

screen -d -m java -d64 -Xincgc -Xmx2048M -jar craftbukkit.jar nogui
Run Code Online (Sandbox Code Playgroud)

非常感谢那些回答的人,尤其是twalberg!