Answers:
把一个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是星期日。
您可以在这里阅读更多内容。
*/15 * * * * /path/to/command
,您可以代替@reboot /path/to/command
在启动时执行一些操作。
如果可以使用与您的用户相同的特权来运行您要运行的作业,我建议您使用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
。
有关更多详细信息,请访问:https : //help.ubuntu.com/community/CronHowto
如果您更喜欢使用GUI进行操作,则可以转到软件中心并安装计划任务(或运行sudo apt-get install gnome-schedule
)。它将提供强大的GUI以添加cron任务。
请注意,如果使用此方法,默认情况下,任务将以您自己的用户而不是root用户身份执行。这通常是一件好事。
我建议使用KDE的Task Scheduler(kde-config-cron
) 。从“ 任务计划程序”模块中的“ 系统设置”中访问它。
它同时管理个人和系统Crontab,创建时间界限的简便性令我感到惊讶(请参见下面的屏幕截图)。我认为这部分确实被低估了。
KDE Task Scheduler在常规Ubuntu中将无法使用。它仅适用于KUbuntu等KDE系统。对于非KDE系统,您将更喜欢使用gnome-schedule
$ sudo apt-get install gnome-schedule
该应用程序是Dash中的计划任务。
I can't install gnome schedule on Ubuntu 16.04
@ askubuntu.com / questions / 785657/…。有一个软件包可以下载@ bugs.launchpad.net / ubuntu / +source / gnome-schedule / +bug / 1576060/…。只是表演$ sudo dpkg -i gnome-schedule_2.3.0-0ubuntu16.04_amd64.deb
我想将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
test_cron.sh
由cron在Ubuntu 18.04上每分钟使用符号链接运行脚本的示例:
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)