我从 Linuxmint 18 Cinnamon 64 位恢复到 Linuxmint 17.3 Cinnamon 64 位,并且无法再创建 cron 作业。我有单独的 root (/) 和 home (/home/my-user-name) 分区,并且在安装 17.3 时保持 home 分区不变。
我在创建 cron 作业时遇到了各种困难,因此我安装了 gnome-scheduler 并尝试以这种方式创建 cron 作业。我收到一个标题为的警告对话框
“警告:已执行任务的工作目录”
消息内容是
“关于执行任务的工作目录的注意事项:循环任务将从主目录运行。”
我单击“确定”,作业显示在终端中,如下所示:
$ crontab -l
* * * * * env DISPLAY=:0 /home/my-user-name/wallpaper_changer.sh >/dev/null 2>&1 # JOB_ID_4
我的壁纸并没有按应有的那样每分钟都在变化。该脚本从命令行运行得很好并且不产生任何输出。该脚本的权限为八进制 744。这一切在 Mint 18 下运行良好,但我让脚本每天只运行一次。我将其设置为每分钟运行一次,仅用于测试目的。
如果我尝试正常的 cron 作业编辑方法,我得到
$ crontab -e
Temporary crontab no longer owned by you.
Error while editing crontab
然后我得到一个空的 Nano 缓冲区,而不是充满注释行的普通 crontab 模板。当我尝试将纳米缓冲区写入文件 /tmp/crontab.lmuwIe/crontab 时,我收到以下错误消息:
[写入 /tmp/lmuwIe/crontab 时出错:权限被拒绝]
最后,
$ ls -l /usr/bin/crontab
-rwsr-xr-x 1 root crontab 35984 Feb 9 2013 /usr/bin/crontab
我还能再次创建 cron 作业吗?
$ sudo ls -la /var/spool/cron/crontabs
total 12
drwx-wx--T 2 root crontab 4096 Sep 25 03:23 .
drwxr-xr-x 5 root root 4096 Sep 23 00:05 ..
-rw------- 1 root my-user-name 188 Sep 25 03:23 my-user-name
@Gilles 嗯,我已经取得了很大的进步。我通过重新安装 cron 摆脱了所有奇怪的错误。现在一切都和我使用时一样正常
$ crontab -e
除了我多年来使用的脚本无法运行。
但另一个脚本确实运行了;所以我迷路了。
这是我现在所拥有的:
$ crontab -l
* * * * * env DISPLAY=:0.0 /home/my-user-name/wallpaper_changer.sh
* * * * * date >> /home/my-user-name/crontest.txt
(我没有包含 cron 作业之前的 20 多行注释。)
日期作业完全按照应有的方式运行,但壁纸_changer.sh 作业不执行任何操作。我已经使用这个方法很多年了,但现在不起作用了。该脚本在命令行中运行良好,并且在 cron 中运行良好。
$ ls -l /home/my-user-name/wallpaper_changer.sh
-rwxr-xr-x 1 my-user-name my-user-name 694 Jun 2 14:30 /home/my-user-name/wallpaper_changer.sh
$ echo $DISPLAY
:0.0
这是怎么回事?
答案1
您需要编辑 crontab 二进制文件的权限,并将其设置回全新安装时的权限。
不工作权限:
ls -la /usr/bin/crontab
-rwsr-xr-x 1 root crontab 40264 Oct 7 2017 /usr/bin/crontab
操作,以 root 身份或使用 sudo 执行:
chmod g+s /usr/bin/crontab
chmod u-s /usr/bin/crontab
工作权限:
ls -la /usr/bin/crontab
-rwxr-sr-x 1 root crontab 40264 Oct 7 2017 /usr/bin/crontab
取自全新的工作安装,工作权限是在安装期间设置的。
不知道为什么后来就变了。
答案2
$ sudo ls -la /var/spool/cron/crontabs total 12 drwx-wx--T 2 root crontab 4096 Sep 25 03:23 . drwxr-xr-x 5 root root 4096 Sep 23 00:05 .. -rw------- 1 root my-user-name 188 Sep 25 03:23 my-user-name
的归属/var/spool/cron/crontabs/my-user-name
是错误的。你应该是主人。这可以解释为什么 cron 无法覆盖该文件。此外,该文件通常会在crontab
组中,但我认为这并不重要。
您可以通过运行来修复此问题
sudo chown my-user-name /var/spool/cron/crontabs/my-user-name
我不知道是什么原因导致了这种情况,也不明白它与系统降级有何关系。根本问题可能会导致其他问题。