好的,我快速浏览了一下这个帖子上的答案问题并重新制定了我的 cron 任务。那么,让我尽可能清楚地解释一下:
PC/OS | Shell 信息
我目前在 Toshiba 笔记本电脑上运行 Lubuntu 14.04LTS x64。基本上,我(目前)有一个 shell 脚本,它将目录 A、B、C、D、E、F 和 G 复制到我的 Dropbox 目录,以及一个本地副本。无论出于何种目的,我们都将其称为example.sh
存储在文件夹中的/home/user/documents
。我已经阅读了有关 Cron Jobs 的资料,观看了一些视频等,但对此毫无进展。
澄清一下,我已经测试了该脚本并且它有效。我的第一个想法如下:
打开终端并运行crontab -e
并手动添加以下内容:
30 * * * * michael home/Documents/example.sh
乃至
@hourly michael home/Documents/example.sh
我尝试过以 root 身份进行操作,也尝试过删除用户部分。但这没有帮助。最近,我看了一个视频,视频中讲的是以 root 身份导航到etc/cron.hourly/
并创建文件,然后更改所有权。我使用了上述所有方法(完全按照视频操作),但仍然无法完成此过程。我很困惑,尝试重新执行过程 1,但home/michael/Documents
我没有指向上述位置,也没有成功。
令人沮丧的是,我忽略了一些非常简单的东西(比如,呃,这个问题我做过!!)。
答案1
有些观点似乎让你感到困惑:
#
是注释字符。将其添加到行首将cron
忽略该行。不要弄乱
/etc/cron/hourly
等等。没有必要,而且它们有不同的格式(见下一点)。用户的 crontab 格式为
minute hour day-of-month month day-of-week command
以下文件的格式
/etc/cron
不同,并且还包括用户名:minute hour day-of-month month day-of-week user command
你需要提供满的路径。Linux 中的路径始终以 开头
/
,代表根目录,相当于 Windows 的C:/
。您需要确保您的脚本是可执行的。运行
chmod +x /home/Documents/example.sh
即可。
因此,要每 30 分钟运行一次位于/home/Documents/example.sh
(请注意前导/
)的脚本,您可以crontab -e
以自己的身份(而不是 root)运行,并在其中添加以下行:
30 * * * * /home/Documents/example.sh
保存并关闭 crontab,您就设置好了。
注意:一般来说,解决此类问题的一个有用的技巧是将脚本的错误输出重定向到文件:
30 * * * * /home/Documents/example.sh 2> /tmp/mycrontab.log
这将创建一个文件/tmp/mycrontab.log
,其中打印尝试运行脚本时产生的任何错误。
答案2
使用 创建 crontab 文件crontab -e
可能是最适合您的方法,但使用 # 字符开始 crontab 行会告诉系统忽略这些行。删除 crontab 行中 30 之前的 # 和前导空格。应该如下所示:
30 * * * * /home/michael/Documents/example.sh
此外,请确保 cron 正在运行(ps -ef | grep cron
)并且您的用户有权运行 cron 作业。如果您不知道如何执行此操作,请参考以下链接中的“启用用户级别 Cron”部分,了解如何在用户级别启用 cron 的详细信息:
Ubuntu 社区帮助 - CronHowTo
要了解有关 cron 正在做什么以及为什么这样做的更多信息,请运行以下命令:
sudo grep -i cron /var/log/syslog | less