首先,我已经搜索过了这一页但什么也没起作用。
我的脚本将创建一个文件,这就是我知道它是否已运行的方式。/var/log/syslog
没有给我任何调试信息。下面是我的 crontab 部分,下面是默认已经存在的内容:
SHELL=/bin/bash
# Check for minecraft server updates
* * * * * root minecraft_update > /tmp/cron.out
# TEST
* * * * * root env > /tmp/env.out
注意:crontab 文件末尾有一个空行。我指定了 bash shell,尽管我的脚本中已经指定了它。我的脚本 ( minecraft_update
) 位于/usr/local/bin
目录中,它调用的其他命令只有grep
、ls
和head
,它们都在/bin
目录中,该目录已在 crontab PATH 中定义。
文件/tmp/cron.out
已创建,但为空。/tmp/env.out
文件已创建,并确认 PATH 同时包含/usr/local/bin
和/bin
目录,还确认了SHELL=/bin/bash
。
附加权限信息:
ll /etc/crontab
-rw-r--r-- 1 root root 998 Jul 1 12:47 /etc/crontab
ll /usr/local/bin/minecraft_update
-rwxr--r-- 1 root root 1132 Jul 1 12:31 minecraft_update*
我对此感到很沮丧!请结束我的痛苦……[顺便说一下,这是 cron 符号,不是脏话。我喜欢 Linux 幽默 :)]
答案1
您不需要在 crontab 列表中使用“root”(除非您有一个root
用于运行脚本的程序)。
如果您使用 (/var/spool/cron/crontabs/root) 编辑 crontab sudo crontab -e
,则不需要用户名。如果您正在编辑系统范围的 crontab (/etc/crontab),则需要列出用户名。
前任
sudo crontab -e
SHELL=/bin/bash
# Check for minecraft server updates
* * * * * minecraft_update > /tmp/cron.out
# TEST
* * * * * env > /tmp/env.out
或者nano /etc/crontab
SHELL=/bin/bash
# Check for minecraft server updates
* * * * * root minecraft_update > /tmp/cron.out
# TEST
* * * * * root env > /tmp/env.out