crontab:“临时 crontab 不再属于您。”

crontab:“临时 crontab 不再属于您。”

我从 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

我不知道是什么原因导致了这种情况,也不明白它与系统降级有何关系。根本问题可能会导致其他问题。

相关内容