crontab工作无法正常工作

Backgound

我试图使用crontab每分钟运行一个sh脚本,但它无法正常工作。

问题

当我手动运行脚本时,它会正确执行,但是crontab无法执行。

我使用crontab -e创建了作业,我可以看到cron正在运行,因为如果我键入pgrep cron我会得到PID作为回报。

我也知道我的时间格式是正确的,因为我用这个在线测试仪进行了测试 。

wallpaperSlider.sh

 #!/bin/bash feh --randomize --bg-fill /home/username/Pictures/wallpapers/* 

crontab工作

 SHELL=/bin/bash * * * * * username /home/username/.crons/wallpaperSlider.sh 

研究

我已经阅读了AskUbuntu中最常见的错误,我认为我没有遇到任何错误。

我明白也许我错过了一些环境变量,但我不知道如何检查。

我也知道crontab -e更改/创建了一个tmp文件,在我的例子中是/tmp/crontab.wCajAu/crontab

  1. 如何在cron中执行此脚本?
  2. 考虑到crontab -e更改了tmp文件夹中的文件,重启后是否会丢失所有更改?

你的cron格式错了。 你要:

 * * * * * /home/username/.crons/wallpaperSlider.sh 

用户的crontabs没有用户名字段。 这仅用于/etc/crontab系统范围的crontabs。 你也不需要SHELL=/bin/bash因为即使你的默认shell不是bash(在Ubuntu上是dash ),你的脚本本身也有shebang行( #!/bin/bash )所以它会是无论什么shell cron发布,都由bash运行。

您可能还会遇到其他问题,因为您正在尝试运行与cron中的X服务器通信的应用程序。 如果是这样,您需要使用:

 DISPLAY=":0.0" XAUTHORITY="/home/YOURUSERNAME/.Xauthority" XDG_RUNTIME_DIR="/run/user/1000" * * * * * /home/username/.crons/wallpaperSlider.sh