crontab 任务不工作

crontab 任务不工作

背景

我尝试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

问题

  1. 我怎样才能让这个脚本在 cron 中执行?
  2. 考虑到文件夹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

相关内容