Cron 任务创建

Cron 任务创建

好的,我快速浏览了一下这个帖子上的答案问题并重新制定了我的 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

相关内容