# Edit the crontab file for the current user:
crontab -e
# Edit the crontab file for a specific user:
sudo crontab -e -u user
# View a list of existing cron jobs for current user:
crontab -l
# Remove all cron jobs for the current user:
crontab -r
# 下面这些
# Sample job which runs at 10:00 every day (* means any value):
0 10 * * * command_to_execute
# Sample job which runs every minute on the 3rd of April:
* * 3 Apr * command_to_execute
# Sample job which runs a certain script at 02:30 every Friday:
30 2 * * Fri /absolute/path/to/script.sh
Linux上使用
crontab
设置定时任务简单介绍
很喜欢bing的首页图,想要实现一个简单的定时下载脚本,脚本使用python中的
urllib
和re
模块实现,因为都是内置模块,每个python环境都会包含。但是如何设置定时运行呢?网上搜索得知,可以使用crontab
来制定定时任务。这里简单记录其用法,之后会写个帖子记录下这次经历。在介绍
crontab
命令之前,我们首先要介绍一下crond
,因为crontab
命令需要crond
服务支持。crond
是Linux下用来周期地执行某种任务或等待处理某些事件的一个守护进程,和Windows
中的计划任务有些类似。crond 服务的启动和自启动方法如下:
其实,在安装完成操作系统后,默认会安装
crond
服务工具,且crond
服务默认就是自启动的。crond
进程每分钟会定期检查是否有要执行的任务,如果有,则会自动执行该任务。最后,请保证需要执行的这条指令单独是可以运行并实现你的目标的,并且没有副作用。
选项
当
crontab -e
编辑完成之后,一旦保存退出,那么这个定时任务实际就会写入/var/spool/cron/
目录中,每个用户的定时任务用自己的用户名进行区分。而且crontab
命令只要保存就会生效,只要crond
服务是启动的。语法
Schedule cron jobs to run on a time interval for the current user.
Job definition format:
(min) (hour) (day_of_month) (month) (day_of_week) command_to_execute
.(用空格隔开)书写时,有一些特殊符号有自己的含义,可以适当使用来灵活设定时间:
来自http://c.biancheng.net/view/1092.html的几个例子:
简单实例
来自tldr的例子:
来自http://c.biancheng.net/view/1092.html的几个例子:
在“执行的任务”字段中既可以定时执行系统命令,也可以定时执行某个 Shell 脚本,这里举几个实际的例子。
首先
crontab -e
进入编辑界面:这个任务在时间工作中没有任何意义,但是可以很简单地验证我们的定时任务是否可以正常执行。如果觉得每隔 5 分钟太长,那就换成“*”,让它每分钟执行一次。而且和
at
命令一样,如果我们定时执行的是系统命令,那么最好使用绝对路径。如果服务器的负载压力比较大,则建议每周重启一次,让系统状态归零。比如绝大多数游戏服务器每周维护一次,维护时最主要的工作就是重启,让系统状态归零。这时可以让我们的服务器自动来定时执行。
这些定时任务保存之后,就可以在指定的时间执行了。
我们可以使用命令
crontab -l
和crontab -r
来查看和删除当前用户设置的定时任务,其中如果只想删除某个定时任务,则可以执行crontab -e
命令进入编辑模式手工删除。在书写
crontab
定时任务时,需要注意以下几个事项:crontab
定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。注意
一般第一次使用
crontab -e
的时候,执行crontab
会要求你设置编辑器,如果选的不合适,可以退出后重新执行select-editor
重新选择。crontab
开启日志由于Ubuntu默认没有开启
crontab
的日志记录,所以对于crontab
的执行情况是看不到的。为了开启这个,我们可以编辑/etc/rsyslog.d/50-default.conf
文件,将cron.* /var/log/cron.log
这一句对应的注释去掉。重启服务即可。主要指令如下:这样就可以用
tail -f /var/log/cron.log
查看日志了。参考链接