01

Linux任务调度的工作主要分为两类:

● 系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存。

● 个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有更新,这些工作可以由每个用户自行设置。我设置的是每周一到周五定时发送邮件。

系统级任务调度主要完成系统的一些维护操作,用户级任务调度主要完成用户自定义的一些任务,可以将用户级任务调度放到系统级任务调度来完成(不建议这么做),但是反过来却不行,root用户的任务调度操作可以通过 crontab –uroot –e 来设置,也可以将调度任务直接写入/etc/crontab文件,需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效的。

02

命令格式

crontab [-u user] file

crontab [-u user] {-e|-l|-r}

说明:
● -u user:是指设定指定user的时程表,这个前提是你必须要有其权限(比如说是root)才能够指定他人的时程表。如果不指定user,使用crontab就会用在全局root下。
● -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
● -r :删除目前的定时服务。
● -l :查看目前的定时服务。

03

时程表基本格式



linux 定时自动重启java进程脚本 linux定时重启任务_定时重启软件

# Example of job definition:

# .---------------- minute (0 - 59)

# |  .------------- hour (0 - 23)

# |  |  .---------- day of month (1 - 31)

# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  * user-name command to be executed

● 第1列分钟0~59

● 第2列小时0~23(0表示子夜)

● 第3列日1~31

● 第4列月1~12

● 第5列星期0~7(0和7表示星期天)

● 第6列是要运行的命令

01

举例

脚本位置:/search/odin/mailauto/sele.py

我要设置每周一到周五下午两点执行该脚本,命令如下:

00 14 * * 1-5 python3 /search/odin/mailauto/sele.py

使用命令crontab –e,打开crontab文件,将命令保存。

之后重启crontab服务就生效了,重启命令:

service crond restart

02

使用实例

实例1:每两个小时重启一次apache

0 */2 * * * service httpd restart

实例2:每天7:50开启ssh服务

50 7 * * * service sshd start

实例3:每天22:50关闭ssh服务

50 22 * * * service sshd stop

实例4:每月1号和15号检查/home磁盘

0 0 1,15 * * fsck /home

实例5:每小时的第一分执行/home/bruce/backup这个文件

1 * * * * /home/bruce/backup

实例6:每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。

00 03 * * 1-5 find /home "*.xxx" -mtime+4 -execrm{} ;

实例7:意思是每月的1、11、21、31日是的6:30执行一次ls命令

30 6 */10 * * ls

实例8:每1分钟执行一次command

* * * * * command

实例9:每小时的第3和第15分钟执行

3,15 * * * * command

实例10:在上午8点到11点的第3和第15分钟执行

3,15 8-11 * * * command

实例11:每隔两天的上午8点到11点的第3和第15分钟执行

3,15 8-11 */2 * * command