CommandList - cron
cron
[toc]
basic
Cron
- command for periodic processing.
- Periodic processing is necessary to make sure systems are functioning correctly.
- Cron is our scheduler. to execute anything, arbitrarily, at certain times of the day, certain times of the week.
Setting a backup schedule
Running log rotation scripts
Determining if systems are up and running through execution of ping and other network testing scripts
Moving files to different locations
Really anything that you want to run periodically on a set schedule
a graphical interface with prompting for using Cron.
sudo apt-get install gnome-schedule
1
2
3
4
5
to access crontab
crontab -e.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
命令格式
crontab [-u user] file crontab [-u user] [ -e | -l | -r ]
命令参数
-u user:设定某个用户的crontab服务;
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。不指定则编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,不指定则显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,不指定则删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。
crontab的文件格式
分 时 日 月 星期 要运行的命令
第1列分钟0~59: 0,15,25
第2列小时0~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~7(0和7表示星期天)
第6列要运行的命令
创建一个新的crontab文件
向cron进程提交一个crontab文件之前,首先要设置环境变量EDITOR。cron进程根据它来确定使用哪个编辑器编辑crontab文件。9 9 %的UNIX和LINUX用户都使用vi,如果你也是这样,那么你就编辑$HOME目录下的. profile文件,在其中加入这样一行:
EDITOR=vi; export EDITOR
然后保存并退出。不妨创建一个名为
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# (put your own initials here)echo the date to the console every
# 15minutes between 6pm and 6am
0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console
前面5个域用空格分隔。
例子:
系统将每15分钟向控制台输出一次当前时间。
如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。
在有些系统中,用tty1来表示控制台,可以根据实际情况对上面的例子进行相应的修改。
提交你刚刚创建的crontab文件,可以把这个新创建的文件作为cron命令的参数:
$ crontab davecron
现在该文件已经提交给cron进程,每隔15分钟运行一次。
同时,新创建文件的一个副本已经被放在/var/spool/cron目录中,文件名就是用户名(即dave)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
每1分钟执行一次myCommand
* * * * * myCommand
每小时的第3和第15分钟执行
3,15 * * * * myCommand
在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * myCommand
每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * myCommand
每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand
每晚的21:30重启smb
30 21 * * * /etc/init.d/smb restart
每月1、10、22日的4 : 45重启smb
45 4 1,10,22 * * /etc/init.d/smb restart
每周六、周日的1 : 10重启smb
10 1 * * 6,0 /etc/init.d/smb restart
每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 * * * /etc/init.d/smb restart
每星期六的晚上11 : 00 pm重启smb
0 23 * * 6 /etc/init.d/smb restart
每一小时重启smb
* */1 * * * /etc/init.d/smb restart
晚上11点到早上7点之间,每隔一小时重启smb
0 23-7 * * * /etc/init.d/smb restart
列出crontab文件 $ crontab -l
1
2
3
4
5
6
7
8
9
10
列出crontab文件
$ crontab -l
0,15,30,45 18-06 * * * /bin/echo `date` > dev/tty1
对crontab文件备份: 不小心误删可以迅速恢复
$ crontab -l > $HOME/mycron
编辑crontab文件
1
2
3
4
5
6
7
8
9
10
11
12
添加、删除或编辑crontab文件中的条目,而EDITOR环境变量又设置为vi,那么就可以用vi来编辑crontab文件:
$ crontab -e
# DT:delete core files,at 3.30am on 1,7,14,21,26,26 days of each month
30 3 1,7,14,21,26 * * /bin/find -name 'core' -exec rm {} \;
保存并退出。
# 最好在crontab文件的每一个条目之上加入一条注释
# 功能、运行时间,哪位用户的定时作业。
notification
1
2
3
4
5
6
7
8
9
10
11
By default, cron sends an email to the user account that is executing the scripts.
avoidreceive email
30 3 1,7,14,21,26 * * /root/scripts/cron_test.sh > /dev/null 2>&1
check if cron is executing or not.
$ cat var/log/cron.
删除crontab文件
$crontab -r
restart crontab
更新系统时间时区后需要重启cron,在ubuntu中服务名为cron:
$service cron restart
ubuntu下启动、停止与重启cron:
$sudo /etc/init.d/cron start $sudo /etc/init.d/cron stop $sudo /etc/init.d/cron restart
.
This post is licensed under CC BY 4.0 by the author.
Comments powered by Disqus.