我想定期安排一个任务运行,听说Cron是实现这一目的的方法。
在Ubuntu中如何添加Cron作业?
/etc/cron.daily
、/etc/cron.hourly
、/etc/cron.monthly
或/etc/cron.weekly
。crontab -e
minute hour day-of-month month day-of-week command
5,34,55
表示在定义的任何小时后的5分、34分和55分运行。*/20
。这个例子表示每20分钟一次,所以在分钟列中等同于0,20,40
。30 17 * * 1 /path/to/command
*/15 * * * * /path/to/command
EDITOR="gedit" crontab -e
(将使用gedit编辑定时任务表文件)或者简单地在终端中运行crontab -e
(将使用默认编辑器)来进行编辑。*/10 * * * * /usr/bin/somedirectory/somecommand
并保存文件。
您可以使用crontab -l
命令查看用户的定时任务表内容。
要添加一个以root身份运行的定时任务,您可以通过运行sudo crontab -e
来编辑root的定时任务表。
最灵活的方式是使用系统的定时任务表/etc/crontab
,您只能在具有root权限的情况下进行编辑。在该文件中,每个命令都指定了要运行的用户,因此您可以以root身份(如果需要该级别的特权)或系统上的任何其他用户运行命令。
例如,如果您想以root身份每10分钟运行一次某个任务,您可以添加如下一行:
*/10 * * * * root /usr/bin/somedirectory/somecommand
(注意行中用户的添加)
您可以使用cat /etc/crontab
命令查看系统crontab文件的内容。
sudo apt-get install gnome-schedule
)。它将提供一个强大的GUI来添加cron任务。我推荐使用KDE的任务计划程序(kde-config-cron
) 。您可以在“系统设置”中的“任务计划程序”模块中访问它。
它可以管理个人和系统的Crontab,并且创建时间边界的便捷性令我感到非常惊讶(请参见下面的屏幕截图)。我认为这部分真的被低估了。
crontab -e
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
$ sudo apt-get install gnome-schedule
$ sudo dpkg -i gnome-schedule_2.3.0-0ubuntu16.04_amd64.deb
。 - Antonio#!/bin/bash
echo "System backuped" >> /media/myname/data/backup/backup_tmp.log
$USER
,最好输入精确的路径,因为bash在执行时不会知道你的变量。
myname
是用户名(属于root组的一部分,我不确定是否需要root权限)。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)
考虑到您有特定用户的多个cron作业,它们不共享相同的时间表。您只需在/etc/cron.d/
下创建文件即可
假设文件名为myjobs
,然后只需在该文件中编写所有调度程序,然后运行以下命令。
crontab -u <username> / etc / cron.d / myjobs
@reboot /path/to/command
来代替*/15 * * * * /path/to/command
,以便在启动时执行某个操作。 - Kenneth Wordenselect-editor
命令。 - Ninh Pham