欢迎光临
我们一直在前行

Centos-定制自动重启服务器

Crontab 简介

Crontab 是linux/unix系统执行周期任务的主要工具,该词来源于希腊语 chronos(χρνο),原意是时间。 crond常常在后台运行,通常crontab储存的指令被守护进程激活,每一分钟检查是否有预定的作业需要执行。通过编辑cron文件来实现任务的调度和设置。

linux安装和启动crontab

# 安装crontab:
$ yum install crontabs

# 启动服务
$ systemctl start crond.service

# 关闭服务
$ systemctl stop crond.service

# 重启服务
$ systemctl restart crond.service

# 重新载入配置
$ systemctl reload crond.service

# 查看crontab服务状态:
$ systemctl status crond.service

# 加入开机自动启动:
$ systemctl enable crond.service

Crontab配置

Crontab任务通常分为系统定义和用户定义的周期任务,将分别对两类任务进行设置
系统周期任务
是通过编辑/etc/crontab文件来实现设置,比如写缓存数据到硬盘、日志清理等.

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute hour day month week user-name command

  • minute: 表示分钟,可以是从0到59之间的任何整数。
  • hour:表示小时,可以是从0到23之间的任何整数。
  • day:表示日期,可以是从1到31之间的任何整数。
  • month:表示月份,可以是从1到12之间的任何整数。
  • week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
  • user-name:   表示执行命令的用户名
  • command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

在以上各个字段中,还可以使用以下特殊字符:

  • 星号 (*) :

    代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

  • 逗号(,):

    可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

  • 中杠(-):

    可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

  • 正斜线(/):

    可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

用户周期任务配置

crontab命令详解
命令格式:

crontab [-u user] file

crontab [-u user] [ -e | -l | -r ]
命令功能:

通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常设合周期性的日志分析或数据备份等工作。

命令参数:

-u [UserName]:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。

-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。

-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。

-i:在删除用户的crontab文件时给确认提示。

-v:列出用户cron作业的状态

Crontab实例

# 每天凌晨1点重启服务器
0 1 * * * root reboot

# 每天18 : 00至23 : 00之间每隔30分钟重启
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
\* 23-7/1 * * * /etc/init.d/smb restart

# 每月的4号与每周一到周三的11点重启smb
0 11 4 * mon-wed /etc/init.d/smb restart

# 一月一号的4点重启smb
0 4 1 jan * /etc/init.d/smb restart



评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址