Post

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服务
filefile是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab如果在命令行中没有指定这个文件crontab命令将接受标准输入键盘上键入的命令并将它们载入crontab
-e编辑某个用户的crontab文件内容不指定则编辑当前用户的crontab文件
-l显示某个用户的crontab文件内容不指定则显示当前用户的crontab文件内容

-r/var/spool/cron目录中删除某个用户的crontab文件不指定则删除当前用户的crontab文件
-i在删除用户的crontab文件时给确认提示


crontab的文件格式
    星期 要运行的命令

第1列分钟059: 0,15,25
第2列小时0230表示子夜
第3列日131
第4列月112
第5列星期070和7表示星期天
第6列要运行的命令

创建一个新的crontab文件

向cron进程提交一个crontab文件之前,首先要设置环境变量EDITOR。cron进程根据它来确定使用哪个编辑器编辑crontab文件。9 9 %的UNIX和LINUX用户都使用vi,如果你也是这样,那么你就编辑$HOME目录下的. profile文件,在其中加入这样一行:

EDITOR=vi; export EDITOR

然后保存并退出。不妨创建一个名为 cron的文件,其中是用户名,例如, davecron。在该文件中加入如下的内容。

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

每月11022日的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.