crontab 作业不起作用

crontab 作业不起作用

我创建了一个简单的 crontab 作业。

它应该每 15 分钟执行一次,提醒我需要短暂休息。然而,它不起作用。我不知道为什么。

如果您有 crontab 的经验,请帮助我。我使用命令 crontab -e 创建此文件并保存它。

# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
# 
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').# 
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# 
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
*/15 * * * * /home/galaxy/Documents/projects/Bash/cron_job.sh

该文件应该每 15 分钟执行一次脚本 cron_job.sh。

这是一个 chmod 值为 500 的 Bash shell 脚本。它包含一个命令,用于创建新的 gnome 终端并立即在该新终端内运行命令来捕获文件 take_a_break。这是一个文本文件,其中包含一条简单的消息,告诉我休息一下。

直接从终端运行 shell 脚本或仅运行其中包含的命令都可以完美地工作,但 crontab 作业根本不起作用。也许我的格式不正确。

以下是 cron_job.sh 文件的内容:

 #!/bin/bash

gnome-terminal -e "bash -c \"cat /home/galaxy/Documents/ascii/take_a_break; exec bash\""

我将命令放在 shell 脚本中的原因是因为 cron 之前没有运行它,但 cron 也不会运行 shell 脚本。

我检查了一下,在我看来我的语法是正确的。

此外,如果相关,尝试运行该crond命令会出现错误:

$ crond
No command 'crond' found, did you mean:
 Command 'cron' from package 'cron' (main)
crond: command not found

答案1

所以我找到了解决问题的方法:

我使用了 gnome-terminal 的完整路径并将该行添加export DISPLAY=:0.0到 shell 脚本中。

现在我的 cron 工作按预期工作。

#!/bin/bash

export DISPLAY=:0.0
/usr/bin/gnome-terminal -e "bash -c \"cat /home/galaxy/Documents/ascii/take_a_break; exec bash\""

相关内容