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
。
题
- 如何在cron中执行此脚本?
- 考虑到
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