我创建了一个简单的 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\""