Las*_*sen 732
把一个shell脚本,在这些文件夹中的一个:/etc/cron.daily,/etc/cron.hourly,/etc/cron.monthly或/etc/cron.weekly。
如果这些对您来说还不够,您可以添加更具体的任务,例如每月两次或每 5 分钟一次。转到终端并输入:
crontab -e
Run Code Online (Sandbox Code Playgroud)
这将打开您的个人 crontab(cron 配置文件)。该文件中的第一行说明了一切!在每一行中,您都可以定义一个要运行的命令及其计划,当您掌握它的窍门时,格式非常简单。结构是:
minute hour day-of-month month day-of-week command
Run Code Online (Sandbox Code Playgroud)
对于您可以使用列表的所有数字,例如5,34,55,在分钟字段中将意味着在定义的任何小时后运行 5 点、34 点和 55 点。
您也可以使用间隔。他们是这样定义的:*/20。此示例表示每 20 次,因此在分钟列中它相当于0,20,40.
因此,要在每周一下午 5:30 运行命令:
30 17 * * 1 /path/to/command
Run Code Online (Sandbox Code Playgroud)
或每 15 分钟
*/15 * * * * /path/to/command
Run Code Online (Sandbox Code Playgroud)
请注意,星期几从 0-6 开始,其中 0 是星期日。
您可以在此处阅读更多内容。
Li *_* Lo 109
如果您要运行的作业可以以与您的用户相同的权限运行,我建议您使用用户 crontab,您可以通过运行EDITOR="gedit" crontab -e(它将使用 gedit 编辑 crontab 文件)或简单地crontab -e(将使用默认编辑器)进行编辑在一个终端。
例如,如果你想每 10 分钟运行一次,你可以添加这样的一行
*/10 * * * * /usr/bin/somedirectory/somecommand
Run Code Online (Sandbox Code Playgroud)
并保存文件。
您可以使用 .crontab 查看用户 crontab 的内容crontab -l。
要添加以 root 身份运行的 cron 作业,您可以通过运行来编辑 root 的 crontab sudo crontab -e。
最灵活的方法是使用系统 crontab /etc/crontab,您只能使用 root 权限进行编辑。在此文件中,每个命令都将按照指定的用户运行,因此您可以以 root 身份(以防您需要该级别的权限)或系统上的任何其他用户身份运行您的命令。
例如,如果你想以 root 身份每 10 分钟运行一次,你可以添加这样的一行
*/10 * * * * root /usr/bin/somedirectory/somecommand
Run Code Online (Sandbox Code Playgroud)
(注意将用户添加到行中)
您可以使用 .crontab 文件查看系统 crontab 文件的内容cat /etc/crontab。
更多详细信息,请访问:https : //help.ubuntu.com/community/CronHowto
Jav*_*era 54
如果您更喜欢使用 GUI 执行此操作,则可以转到软件中心并安装计划任务(或运行sudo apt-get install gnome-schedule)。它将提供一个强大的 GUI 来添加 cron 任务。
请注意,如果您使用此方法,默认情况下,任务将以您自己的用户身份执行,而不是以 root 身份执行。这通常是一件好事。
ger*_*ijk 26
我推荐KDE 的 Task Scheduler ( kde-config-cron) . 从那里的任务计划程序模块中的系统设置访问它。
它同时管理个人和系统的 Crontab,创建时间界限的轻松让我非常惊讶(见下面的截图)。我认为这部分真的被低估了。

Ant*_*nio 12
KDE 任务计划程序在常规 Ubuntu 中不起作用。它仅适用于 KDE 系统,如 KUbuntu。对于非 KDE 系统,您更喜欢使用 gnome-schedule
$ sudo apt-get install gnome-schedule
Run Code Online (Sandbox Code Playgroud)
该应用程序是 Dash 中的计划任务。
Cra*_*der 12
我想设置一个 Cron 作业来运行 bash 脚本,因此执行该脚本会添加一个 cron 作业。
我意识到当你使用:
crontab -e
Run Code Online (Sandbox Code Playgroud)
然后它创建文件:
/var/spool/cron/crontabs/root
其中 root 是运行 crontab 命令的用户的名称。因此,基于此,至少在 14.04 中,我们可以执行以下 bash 命令来创建新的 Cron 作业:
echo "30 17 * * 1 /path/to/command" > /var/spool/cron/crontabs/root
Run Code Online (Sandbox Code Playgroud)
我们还需要为文件设置正确的所有权:
chown root:root /var/spool/cron/crontabs/root
Run Code Online (Sandbox Code Playgroud)
并设置正确的权限:
chmod 600 /var/spool/cron/crontabs/root
Run Code Online (Sandbox Code Playgroud)
如果运行时crontab -e列表中已经有 Cron 作业,那么您可以使用以下命令附加到列表中:
echo "30 17 * * 1 /path/to/command" >> /var/spool/cron/crontabs/root
Run Code Online (Sandbox Code Playgroud)
test_cron.sh在 Ubuntu 18.04 上使用符号链接每分钟通过 cron运行脚本的示例:
test_cron.sh 文件:
#!/bin/bash
echo "System backuped" >> /media/myname/data/backup/backup_tmp.log
Run Code Online (Sandbox Code Playgroud)
如果你想在你的脚本中使用环境变量,就像$USER在路径中一样,最好输入精确的路径,bash 在执行时不会知道你的变量。
myname 是用户名(root 组的一部分,我不确定是否需要 root 权限)。
允许用户设置 cron 作业,必要时将创建文件:
sudo nano /etc/cron.allow
root
myname
Run Code Online (Sandbox Code Playgroud)
脚本的路径是 /home/myname/shell/test_cron.sh
我更改了所有者并使其可执行:
sudo chown myname /home/myname/shell/test_cron.sh
chmod +x /home/myname/shell/test_cron.sh
Run Code Online (Sandbox Code Playgroud)
我添加了符号链接:
sudo ln -s /home/myname/shell/test_cron.sh /usr/bin/test_cron
Run Code Online (Sandbox Code Playgroud)
在myname我test_cron每分钟添加要执行的新任务时记录。
crontab -e
*/1 * * * * test_cron
Run Code Online (Sandbox Code Playgroud)
要检查列表中的命令:
crontab -l
*/1 * * * * test_cron
Run Code Online (Sandbox Code Playgroud)
检查执行情况
grep -i cron /var/log/syslog
Nov 17 12:28:01 myname-ubuntu CRON[13947]: (myname) CMD (system-backup)
Run Code Online (Sandbox Code Playgroud)