如何在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分钟运行一次,则添加这样的一行并保存文件。
您可以使用
crontab -l
查看用户crontab的内容。要添加以root身份运行的cron作业,可以通过运行来编辑root的crontab
sudo crontab -e
。最灵活的方法是使用系统crontab
/etc/crontab
,您只能使用root特权进行编辑。在此文件中,每个命令的用户将按指定的方式运行,因此您可以以root用户(如果需要该特权级别)或系统上的任何其他用户身份运行命令。例如,如果您想以root用户身份每10分钟运行一次,则可以添加这样的行
)
您可以使用
cat /etc/crontab
查看系统crontab文件的内容。更多详细信息,请访问:https://help.ubuntu.com/community/CronHowto
评论
这是一个很好的交互式cron操纵器,它将为您提供crontab.guru时间的英语。
– CTS_AE
17-10-11在9:32
#3 楼
如果您更喜欢使用GUI进行操作,则可以转到软件中心并安装计划任务(或运行sudo apt-get install gnome-schedule
)。它将提供功能强大的GUI来添加cron任务。请注意,如果使用此方法,则默认情况下,任务将以您自己的用户身份而非root用户身份执行。这通常是一件好事。
评论
显然不适用于16.04 bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060
–TankorSmash
16-10-27在22:55
@TankorSmash你可以在这里得到它
–贝塞拉先生
17年1月31日在22:31
16.04无法满足包装要求
–奥德修斯·伊萨卡(Odysseus Ithaca)
18年3月16日在16:35
#4 楼
我建议使用KDE的Task Scheduler(kde-config-cron
)。从“任务计划程序”模块中的“系统设置”中访问它。它既管理个人Crontab,也管理系统Crontab,创建时间界限的简便性令我感到惊讶(请参见下面的屏幕截图)。我认为这部分确实被低估了。
#5 楼
KDE Task Scheduler将无法在常规Ubuntu中运行。它仅适用于KUbuntu等KDE系统。对于非KDE系统,您将更喜欢使用gnome-schedule$ sudo apt-get install gnome-schedule
该应用是Dash中的计划任务。
评论
在Ubuntu 16.04中找不到
–SaidbakR
17年12月6日在17:54
请看看我不能在Ubuntu 16.04 @Askubuntu.com/questions/785657/…上安装gnome计划。有一个软件包可以下载@bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060/…。只需执行$ sudo dpkg -i gnome-schedule_2.3.0-0ubuntu16.04_amd64.deb
–安东尼奥
17年12月15日在20:38
#6 楼
我想将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
#7 楼
cron在Ubuntu 18.04上每分钟使用符号链接运行脚本test_cron.sh
的示例:使用符号链接:test_cron.sh
文件:#!/bin/bash
echo "System backuped" >> /media/myname/data/backup/backup_tmp.log
如果要使用环境脚本中的变量,例如
$USER
,最好在路径中键入精确的路径,bash在执行时不会知道您的变量。 myname
是用户名(root组的一部分,我不确定是否具有root特权)。允许用户设置cron作业,必要时将创建文件:
sudo nano /etc/cron.allow
root
myname
脚本的路径是
/home/myname/shell/test_cron.sh
我更改了所有者并使其可执行:
sudo chown myname /home/myname/shell/test_cron.sh
chmod +x /home/myname/shell/test_cron.sh
我添加了符号链接:
sudo ln -s /home/myname/shell/test_cron.sh /usr/bin/test_cron
登录为
myname
我添加了新任务,每分钟执行一次test_cron
。crontab -e
*/1 * * * * test_cron
检查命令是否在列表中:
crontab -l
*/1 * * * * test_cron
检查执行
grep -i cron /var/log/syslog
Nov 17 12:28:01 myname-ubuntu CRON[13947]: (myname) CMD (system-backup)
#8 楼
考虑到您与特定用户有多个cron作业,并且它们不共享相同的计划。您可以在/etc/cron.d/
下简单地创建文件假设文件名为
myjobs
,然后将所有调度程序写入该文件,然后运行以下命令。crontab -u <username> /etc/cron.d/myjobs
评论
它们是系统范围的,并具有高特权运行。除非迫切需要访问或许可,否则我不会在这里放任何东西。根据经验,尝试在没有功能的情况下进行操作。因此,我更喜欢以下答案:ubuntu.stackexchange.com/questions/2368/how-do-i-setup-cron-job / ...
– H马塞洛·莫拉莱斯
10年8月16日在21:29
@Marcelo Morales,这也将以root用户身份运行给定命令!另一方面,如果您不使用sudo,那么您将创建一个用户crontab,它将以创建它的用户身份运行!
–拉瑟·波尔森
10年8月16日在21:44
* / 15 * * * * / path / to / command对我来说非常方便!谢谢!
–AO_
13年2月21日在11:18
值得注意的是这些更改是自动应用的,您无需重新启动/重新加载任何内容。
– Molomby
2013年12月12日在1:26
另一个方便的技巧是,您可以执行@reboot / path / to / command来代替* / 15 * * * * / path / to / command,以便在启动时执行某些操作。
–肯尼思·沃登(Kenneth Worden)
16年8月12日在7:56