你的位置:首页 > 互联网IT

linux定时执行shell脚本,Centos定时执行任务,定时执行sh任务,linux定时任务crontab,自动执行任务

写一个shell脚本,定时执行简单示例


很多时候我们有希望服务器定时去运行一个脚本来触发一个操作,比如说定时去备份服务器数据、数据库数据等 不适合人工经常做的一些操作这里简单说下

Shell俗称壳,类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。


我的虚拟机是centos7.0.2

linux应该都有crontab,没有的话可以安装一下:

yum install  vixie-cron

yum install  crontabs


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

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

安装完以后开启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


也可以用设置开机自动启动crond服务: 

[root@CentOS ~]# chkconfig crond on

linux定时执行shell脚本,Centos定时执行任务,定时执行sh任务,linux定时任务crontab 互联网IT 第1张

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

[root@CentOS ~]# chkconfig –list crond 

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

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

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

[root@CentOS ~]# chkconfig crond off


设置需要执行的脚本 


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

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

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

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

查看调度任务 

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

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

删除任务调度工作 

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

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

列子:*/1 *  *  *  * root /root/bo.sh

分 时 天 月 周 用户 命令

linux定时执行shell脚本,Centos定时执行任务,定时执行sh任务,linux定时任务crontab 互联网IT 第2张

linux定时执行shell脚本,Centos定时执行任务,定时执行sh任务,linux定时任务crontab 互联网IT 第3张


前四行是有关设置cron任务运行的环境变量。


SHELL变量的值指定系统使用的SHELL环境(该样例为bash shell),


PATH变量定义了执行命令的路径。Cron的输出以电子邮件的形式发给MAILTO变量定义的用户名。


如果MAILTO变量定义为空字符串(MAILTO=""),电子邮件不会被发送。执行命令或脚本时HOME变量可用来设置基目录。


文件/etc/crontab中每行任务的描述格式如下: 


 minute hour day month dayofweek command


 minute - 从0到59的整数


 hour - 从0到23的整数


 day - 从1到31的整数 (必须是指定月份的有效日期)


month - 从1到12的整数 (或如Jan或Feb简写的月份)


dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)


command - 需要执行的命令(可用as ls /proc >> /tmp/proc或 执行自定义脚本的命令)


 


 root表示以root用户身份来运行


run-parts表示后面跟着的是一个文件夹,要执行的是该文件夹下的所有脚本


对于以上各语句,星号(*)表示所有可用的值。例如*在指代month时表示每月执行(需要符合其他限制条件)该命令。


 整数间的连字号(-)表示整数列,例如1-4意思是整数1,2,3,4


指定数值由逗号分开。如:3,4,6,8表示这四个指定整数。


符号“/”指定步进设置。“/<interger>”表示步进值。如0-59/2定义每两分钟执行一次。步进值也可用星号表示。如*/3用来运行每三个月份运行指定任务。


 


以“#”开头的为注释行,不会被执行。


 比如上述图中 执行的是每隔一分钟执行一半hello.sh脚本 上边脚本输出的内容 大家也知道   >> 符号 指定文件获取内容的存放位置 比如访问一个地址 命令 curl http://www.baidu.com 


linux系统字符界面 无法显示画面只能把访问的页面编译后的代码原样输出 如:

linux定时执行shell脚本,Centos定时执行任务,定时执行sh任务,linux定时任务crontab 互联网IT 第4张

这样大家看着很乱吧


当然也有-I 参数 静默访问  curl -I http://www.baidu.com

linux定时执行shell脚本,Centos定时执行任务,定时执行sh任务,linux定时任务crontab 互联网IT 第5张

这样只显示一组http状态 但还是很乱 直接把他写进固定的日志文件就方便多了 


cat 一下 查看  这样就简单多了

linux定时执行shell脚本,Centos定时执行任务,定时执行sh任务,linux定时任务crontab 互联网IT 第6张

就此一个简单的定时任务就完成了


  • 发表评论
  • 查看评论
【暂无评论!】

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。