今天小编就为大家分享一篇Linux CentOS 定时运行脚本配置的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

很多时候我们有希望服务器定时去运行一个脚本来触发一个操作,比如使用七牛的工具上传,如果同步文件里面有新增加一个文件,这个时候我们可以提供定时脚本去完成我们需要的同步命令(七牛的qrsbox工具是自动会同步的,只需要在同步文件夹里面增加一个文件就会自动监听上传)。

1.安装crontab

[[email protected] ~]# yum install vixie-cron
[[email protected] ~]# yum install crontabs

vixie-cron软件包是cron的主程序;

crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

2.开启crontab服务

service crond start //启动服务

用以下的方法启动、关闭这个cron服务:

service crond start //启动服务

service crond stop //关闭服务

service crond restart //重启服务

service crond reload //重新载入配置

查看crontab服务状态:service crond status

手动启动crontab服务:service crond start

查看crontab服务是否已设置为开机启动,执行命令:ntsysv

加入开机自动启动:

chkconfig –level 35 crond on

另外顺带介绍下ntsysv和chkconfig命令:

关于ntsysv命令是类图形界面管理模式来设置开机启动,需要先安装才可以使用,yum install -y ntsysv安装好之后只需要运行一个ntsysv即可出现一个类似图像化的管理界面。

上下键:可以在中间的方框当中,在各个服务之间移动;

空格键:可以用来选择你所需要的服务,[*]表示开起启动;

tab键:可以在方框、OK、Cancel之间移动;

[F1]键:可以显示该服务的说明。

关于chkconfig命令行的形式设置是否开机自启动或者查询某个服务6个开机级别的运行情况。

设置开机自动启动crond服务:

[[email protected] ~]# chkconfig crond on

查看各个开机级别的crond服务运行情况

[[email protected] ~]# chkconfig –list crond

crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

可以看到2、3、4、5级别开机会自动启动crond服务

取消开机自动启动crond服务:

[[email protected] ~]# chkconfig crond off

3.设置需要执行的脚本

新增调度任务可用两种方法:

1)、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。

2)、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。

crontab -e配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务

查看调度任务

crontab -l //列出当前的所有调度任务

crontab -l -u jp //列出用户jp的所有调度任务

删除任务调度工作

crontab -r //删除所有任务调度工作

直接编辑 vim /etc/crontab ,默认的文件形式如下:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# 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

这个文本解释的已经比较直观了,其中

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

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

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

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

这里举几个例子,基本涵盖了常见的一些情况:

实例1

5   *    *      *   *   ls     指定每小时的第5分钟执行一次ls命令
30   5    *      *   *   ls     指定每天的 5:30 执行ls命令
30   7    8      *   *   ls     指定每月8号的7:30分执行ls命令
30   5    8      6   *   ls     指定每年的6月8日5:30执行ls命令
30   5    8      6   *   ls     指定每年的6月8日5:30执行ls命令
30   6    *      *   0   ls     指定每星期日的6:30执行ls命令
30   3   10,20     *   *   ls     每月10号及20号的3:30执行ls命令
25   8-11  *      *   *   ls     每天8-11点的第25分钟执行ls命令
*/15  *    *      *   *   ls     每15分钟执行一次ls命令
30   6   */10     *   *   ls     每个月中,每隔10天6:30执行一次ls命令
22   4    *      *   *   root   run-parts   /etc/cron.daily
#每天4:22以root身份执行/etc/cron.daily目录中的所有可执行文件,run-parts参数表示,执行后面目录中的所有可执行文件。

实例2

#每晚的21:30 重启apache
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
#每月1、10、22日的4 : 45重启apache
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
#每周六、周日的1 : 10重启apache
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
#每天18 : 00至23 : 00之间每隔30分钟重启apache
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
#每星期六的11 : 00 pm重启apache
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
#晚上11点到早上7点之间,每隔一小时重启apache
0 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
#每一小时重启apache
0 */1 * * * /usr/local/etc/rc.d/lighttpd restart
#每月的4号与每周一到周三的11点重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
#一月一号的4点重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
#每半小时同步一下时间
0/30 * * * * /usr/sbin/ntpdate 210.72.145.44

注意

* *1 * * * 命令表示是每小时之内的每一分钟都执行。

必须指定在每个小时的第几分钟执行,也就是说第一个*号必须改成一个数值。

因为*号表示的就是每一分钟。

另外小时位的/1和没有区别,都是每小时一次。

如果是设置*/2,实际上是能被2整除的小时数而不是从定时设置开始2小时后执行,比如9点设的到10点就会执行。

最后可能会遇到下面这个问题

root用户下 输入 crontab -l 显示

no crontab for root 例如:

[[email protected] ~]# crontab -l

no crontab for root

这个问题非常简单,同样在 root 用户下输入 crontab -e

按 Esc 按: wq 回车

在输入 crontab -l 就没有问题了

主要原因是由于这个liunx服务器 第一次使用 crontab ,还没有生成对应的文件导致的,执行了 编辑(crontab -e)后 就生成了这个文件

以上这篇Linux CentOS 定时运行脚本配置的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持爱安网。

最新资讯
vivo秦飞:5G落地应分三步走 行业应用是最后山头

vivo秦飞:5G落地应分三

世界5G大会今日正式开幕,vivo通信研究院院长秦飞出席发
2022刷脸支付用户将超7.6亿 3年内刷脸将取代二维码?

2022刷脸支付用户将超

报告显示, 2019年成为刷脸支付的“元年”,刷脸支付用户
云游戏火了 中国14万家网吧走向何处?

云游戏火了 中国14万

作为全球网吧密度最高的国家,中国的网吧产业将被云游戏
索尼扩产影像传感器 未来手机拍摄效果有望追上单反

索尼扩产影像传感器

未来手机的拍摄效果有望追上单反相机。
周杰伦年版权费超千万 但近半音乐人月入不足两千

周杰伦年版权费超千万

数字音乐平台方目前借助音乐实现盈利的成熟商业模式还
深圳发布防范“虚拟货币”非法活动风险提示

深圳发布防范“虚拟货

深圳市互联网金融风险等专项整治工作领导小组办公室于
最新文章
Ubuntu18 给terminal改个漂亮的命令行提示符的方法

Ubuntu18 给terminal

这篇文章主要介绍了Ubuntu18 给terminal改个漂亮的命
Linux下Docker及portainer相关配置方法

Linux下Docker及porta

本文以CentOS 7为例,安装docker CE版本,docker有两种版
vmware workstation安装windows server 2019(图文教程)

vmware workstation安

这篇文章主要介绍了vmware workstation安装windows se
protobuf简单介绍和ubuntu 16.04环境下安装教程

protobuf简单介绍和ub

protobuf是谷歌的开源序列化协议框架,结构类似于XML,JSO
ansible删除目录下所有内容的方法

ansible删除目录下所

这篇文章主要介绍了ansible删除目录下所有内容的方法,
基于 ZooKeeper 搭建 Hadoop 高可用集群 的教程图解

基于 ZooKeeper 搭建

Hadoop 高可用 (High Availability) 分为 HDFS 高可用