如何设置Cron作业?
我想安排一个定期运行的任务,并听说Cron是这样做的方法。
如何在Ubuntu中添加Cron作业?
将shell脚本放在以下文件夹中: /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是星期日。
你可以在这里阅读更多。
如果要运行的作业可以使用与用户相同的权限运行,我建议使用用户crontab,您可以通过运行EDITOR="gedit" crontab -e
(将使用gedit编辑crontab文件)或简单地编辑crontab -e
(将使用默认编辑器)在终端中。
例如,如果你想每10分钟运行一次,你可以添加这样的一行
*/10 * * * * /usr/bin/somedirectory/somecommand
并保存文件。
您可以使用crontab -l
查看用户crontab的内容。
要添加以root身份运行的cron作业,可以通过运行sudo crontab -e
来编辑root的crontab。
最灵活的方法是使用系统crontab /etc/crontab
,您只能使用root权限进行编辑。 在此文件中,用户的每个命令都将按指定的方式运行,因此您可以以root用户身份运行命令(如果您需要该级别的权限)或系统上的任何其他用户。
例如,如果你想以root身份每隔10分钟运行一次,你就会添加这样一行
*/10 * * * * root /usr/bin/somedirectory/somecommand
(注意用户添加到该行)
您可以使用cat /etc/crontab
查看系统crontab文件的内容。
更多详情请访问: https : //help.ubuntu.com/community/CronHowto
如果您更喜欢使用GUI,则可以转到软件中心并安装计划任务 (或运行sudo apt-get install gnome-schedule
)。 它将提供一个强大的GUI来添加cron任务。
请注意,如果使用此方法,默认情况下,任务将作为您自己的用户执行,而不是以root身份执行。 这通常是件好事。
我推荐KDE的Task Scheduler( kde-config-cron
) 。 从那里的任务计划程序模块中的系统设置访问它。
它管理个人和系统Crontabs,创建时间边界的难易程度让我大吃一惊(见下面的截图)。 我认为这部分真的被低估了。
KDE任务计划程序不适用于常规Ubuntu。 它仅适用于像KUbuntu这样的KDE系统。 对于非KDE系统,您更喜欢使用gnome-schedule
$ sudo apt-get install gnome-schedule
该应用程序是Dash中的计划任务。
我想设置一个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