Gabriel Solomon Asked: 2010-08-17 00:25:04 +0800 CST2010-08-17 00:25:04 +0800 CST 2010-08-17 00:25:04 +0800 CST 如何设置 Cron 作业? 772 我想安排一个任务定期运行,并且听说 Cron 是执行此操作的方法。 如何在 Ubuntu 中添加 Cron 作业? cron 8 个回答 Voted Best Answer LassePoulsen 2010-08-17T00:39:17+08:002010-08-17T00:39:17+08:00 将 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 是星期日。 你可以在这里阅读更多。 Li Lo 2010-08-17T00:58:21+08:002010-08-17T00:58:21+08:00 如果您要运行的作业可以使用与您的用户相同的权限运行,我建议使用用户 crontab,您可以通过运行EDITOR="gedit" crontab -e(将使用 gedit 编辑 crontab 文件)或简单地crontab -e(将使用默认编辑器)进行编辑在一个终端。 例如,如果你想每 10 分钟运行一次,你可以添加这样一行 */10 * * * * /usr/bin/somedirectory/somecommand 并保存文件。 您可以使用 crontab 查看用户 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。 更多详情请访问:https ://help.ubuntu.com/community/CronHowto Javier Rivera 2010-08-17T01:21:17+08:002010-08-17T01:21:17+08:00 如果您更喜欢使用 GUI 来执行此操作,您可以转到软件中心并安装计划任务(或运行sudo apt-get install gnome-schedule)。它将提供强大的 GUI 来添加 cron 任务。 请注意,如果您使用此方法,默认情况下任务将以您自己的用户身份执行,而不是以 root 身份执行。这通常是一件好事。 gertvdijk 2013-02-01T15:59:51+08:002013-02-01T15:59:51+08:00 我推荐KDE 的任务计划程序 ( kde-config-cron) 。从那里的任务计划程序模块中的系统设置访问它。 它同时管理个人和系统 Crontab,创建时间界限的轻松性让我大吃一惊(见下面的屏幕截图)。我觉得这部分真的被低估了。 Craig van Tonder 2016-09-28T12:25:14+08:002016-09-28T12:25:14+08:00 我想设置一个 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 Antonio 2014-02-12T06:35:58+08:002014-02-12T06:35:58+08:00 KDE 任务计划程序无法在常规 Ubuntu 中运行。它仅适用于像 KUbuntu 这样的 KDE 系统。对于非 KDE 系统,您会更喜欢使用 gnome-schedule $ sudo apt-get install gnome-schedule 该应用程序是 Dash 中的计划任务。 Alexander 2018-11-18T01:41:48+08:002018-11-18T01:41:48+08:00 test_cron.sh使用符号链接在 Ubuntu 18.04 上每分钟通过 cron运行脚本的示例: 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) Nagesh Mhapadi 2020-04-08T10:59:30+08:002020-04-08T10:59:30+08:00 考虑到您有多个特定用户的 cron 作业,并且它们不共享相同的时间表。您可以在/etc/cron.d/ 假设文件名下简单地创建文件,myjobs然后只需将所有调度程序写入该文件,然后运行以下命令。 crontab -u <username> /etc/cron.d/myjobs
将 shell 脚本放在以下文件夹之一中:
/etc/cron.daily
、或./etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
如果这些对您来说还不够,您可以添加更具体的任务,例如每月两次或每 5 分钟一次。转到终端并输入:
这将打开您的个人 crontab(cron 配置文件)。该文件中的第一行说明了一切!在每一行中,您都可以定义一个要运行的命令及其时间表,当您掌握了它的窍门时,格式非常简单。结构是:
对于所有可以使用列表的数字,例如
5,34,55
在分钟字段中将意味着在过去 5 点、过去 34 点和过去 55 点运行,无论定义什么小时。您也可以使用间隔。它们的定义如下:
*/20
. 此示例表示每 20 次,因此在分钟列中它相当于0,20,40
.所以每周一下午 5:30 运行一个命令:
或每 15 分钟
请注意,星期几从 0 到 6,其中 0 是星期日。
你可以在这里阅读更多。
如果您要运行的作业可以使用与您的用户相同的权限运行,我建议使用用户 crontab,您可以通过运行
EDITOR="gedit" crontab -e
(将使用 gedit 编辑 crontab 文件)或简单地crontab -e
(将使用默认编辑器)进行编辑在一个终端。例如,如果你想每 10 分钟运行一次,你可以添加这样一行
并保存文件。
您可以使用 crontab 查看用户 crontab 的内容
crontab -l
。要添加以 root 身份运行的 cron 作业,您可以通过运行来编辑 root 的 crontab
sudo crontab -e
。最灵活的方法是使用系统 crontab
/etc/crontab
,您只能使用 root 权限进行编辑。在此文件中,每个命令都将按照指定的用户运行,因此您可以以 root(如果您需要该权限级别)或系统上的任何其他用户身份运行您的命令。例如,如果你想以 root 身份每 10 分钟运行一次,你可以添加这样一行
(注意将用户添加到该行)
您可以使用 . 查看系统 crontab 文件的内容
cat /etc/crontab
。更多详情请访问:https ://help.ubuntu.com/community/CronHowto
如果您更喜欢使用 GUI 来执行此操作,您可以转到软件中心并安装计划任务(或运行
sudo apt-get install gnome-schedule
)。它将提供强大的 GUI 来添加 cron 任务。请注意,如果您使用此方法,默认情况下任务将以您自己的用户身份执行,而不是以 root 身份执行。这通常是一件好事。
我推荐KDE 的任务计划程序 (
kde-config-cron
) 。从那里的任务计划程序模块中的系统设置访问它。它同时管理个人和系统 Crontab,创建时间界限的轻松性让我大吃一惊(见下面的屏幕截图)。我觉得这部分真的被低估了。
我想设置一个 Cron 作业以通过 bash 脚本运行,因此执行该脚本会添加一个 cron 作业。
我意识到,当您使用:
然后它创建文件:
/var/spool/cron/crontabs/root
其中 root 是运行 crontab 命令的用户的名称。所以基于此,至少在 14.04 中,我们可以执行以下 bash 命令来创建一个新的 Cron 作业:
我们还需要为文件设置正确的所有权:
并设置正确的权限:
如果您在运行时
crontab -e
列表中已经有 Cron 作业,那么您可以使用以下命令追加到列表中:KDE 任务计划程序无法在常规 Ubuntu 中运行。它仅适用于像 KUbuntu 这样的 KDE 系统。对于非 KDE 系统,您会更喜欢使用 gnome-schedule
该应用程序是 Dash 中的计划任务。
test_cron.sh
使用符号链接在 Ubuntu 18.04 上每分钟通过 cron运行脚本的示例:test_cron.sh
文件:如果你想在你的脚本中使用环境变量,比如
$USER
在路径中,最好输入精确的路径,bash 在执行时不会知道你的变量。myname
是用户名(root 组的一部分,我不确定是否需要 root 权限)。允许用户设置 cron 作业,如有必要,将创建文件:
脚本的路径是
/home/myname/shell/test_cron.sh
我更改了所有者并使其可执行:
我添加了符号链接:
在
myname
我添加新任务以test_cron
每分钟执行一次时记录。要检查列表中的命令:
检查执行
考虑到您有多个特定用户的 cron 作业,并且它们不共享相同的时间表。您可以在
/etc/cron.d/
假设文件名下简单地创建文件,myjobs
然后只需将所有调度程序写入该文件,然后运行以下命令。crontab -u <username> /etc/cron.d/myjobs