我想安排一项任务定期运行,听说 Cron 是实现这一目标的方法。
如何在 Ubuntu 中添加 Cron 作业?
答案1
将 Shell 脚本放入以下文件夹之一:/etc/cron.daily
、/etc/cron.hourly
或/etc/cron.monthly
。/etc/cron.weekly
如果这些还不够,您可以添加更具体的任务,例如每月两次或每 5 分钟一次。转到终端并输入:
crontab -e
这将打开您的个人 crontab(cron 配置文件)。该文件的第一行说明了一切!在每一行中,您可以定义一个要运行的命令及其计划,当您掌握它时,格式非常简单。结构如下:
minute hour day-of-month month day-of-week command
对于所有的数字,您都可以使用列表,例如5,34,55
在分钟字段中,表示在定义的小时数 5 点、34 点和 55 点运行。
您还可以使用间隔。它们的定义如下:*/20
。此示例表示每 20 天,因此在分钟列中它相当于0,20,40
。
因此,每周一下午 5:30 运行命令:
30 17 * * 1 /path/to/command
或每 15 分钟
*/15 * * * * /path/to/command
请注意,星期几的范围是 0-6,其中 0 表示星期日。
您可以阅读更多这里。
答案2
如果您想要运行的作业可以使用与您的用户相同的权限运行,我建议使用用户 crontab,您可以通过运行EDITOR="gedit" crontab -e
(将使用 gedit 来编辑 crontab 文件)或简单地crontab -e
(将使用默认编辑器)在终端中对其进行编辑。
例如,如果你想每 10 分钟运行一次,可以添加如下代码
*/10 * * * * /usr/bin/somedirectory/somecommand
并保存文件。
您可以使用 查看用户 crontab 的内容crontab -l
。
要添加以 root 身份运行的 cron 作业,您可以通过运行来编辑 root 的 crontab sudo crontab -e
。
最灵活的方法是使用系统 crontab /etc/crontab
,您只能使用 root 权限来编辑它。在此文件中,指定了每个命令的运行用户,因此您可以以 root(如果您需要该级别的权限)或系统上的任何其他用户身份运行命令。
例如,如果你想以 root 身份每 10 分钟运行一次,你可以添加如下行
*/10 * * * * root /usr/bin/somedirectory/somecommand
(注意将用户添加到该行)
您可以使用 查看系统 crontab 文件的内容cat /etc/crontab
。
答案3
如果你更喜欢使用 GUI,你可以前往软件中心并安装计划任务(或运行sudo apt-get install gnome-schedule
)。它将提供一个强大的 GUI 来添加 cron 任务。
请注意,如果您使用此方法,默认情况下任务将以您自己的用户身份执行,而不是以 root 身份执行。这通常是一件好事。
答案4
我想设置一个 Cron 作业来通过 bash 脚本运行,因此执行该脚本将添加一个 cron 作业。
我意识到当你使用:
crontab -e
然后它创建该文件:
/var/spool/cron/crontabs/root
其中 root 是运行 crontab 命令的用户的名称。因此,基于此,至少在 14.04 中,我们可以执行以下 bash 命令来创建新的 Cron 作业:
echo "30 17 * * 1 /path/to/command" > /var/spool/cron/crontabs/root
我们还需要为文件设置正确的所有权:
chown root:root /var/spool/cron/crontabs/root
并设置正确的权限:
chmod 600 /var/spool/cron/crontabs/root
如果运行时crontab -e
列表中已经有 Cron 作业,那么您可以使用以下命令将其附加到列表中:
echo "30 17 * * 1 /path/to/command" >> /var/spool/cron/crontabs/root