![crontab 任务不工作](https://linux22.com/image/1149080/crontab%20%E4%BB%BB%E5%8A%A1%E4%B8%8D%E5%B7%A5%E4%BD%9C.png)
背景
我尝试sh
使用 crontab 每分钟运行一个脚本,但是它不起作用。
问题
当我手动运行脚本时,它可以正确执行,但是 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
,一旦重新启动,我会丢失所有更改吗?
答案1
你的 cron 格式错误。你想要:
* * * * * /home/username/.crons/wallpaperSlider.sh
用户的 crontabs 没有username
字段。该字段仅用于系统范围的 crontabs,例如/etc/crontab
。您也不需要SHELL=/bin/bash
,因为即使您的默认 shell 不是 bash(它dash
在 Ubuntu 上是),您的脚本本身也有 shebang 行( ),因此无论 cron 启动哪个 shell,#!/bin/bash
它都会运行。bash
不过,由于您尝试运行一个从 cron 与 X 服务器通信的应用程序,因此您可能还会遇到其他问题。如果是这样,您需要使用:
DISPLAY=":0.0"
XAUTHORITY="/home/YOURUSERNAME/.Xauthority"
XDG_RUNTIME_DIR="/run/user/1000"
* * * * * /home/username/.crons/wallpaperSlider.sh