linux如何自动定时执行shell脚本,linux下设置定时执行shell脚本的示例

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

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

我这里是centos6,5

接下来 写一个简单的shell命令:

1.使用pwd命令查看当前路径为/root目录

60ceb6455f0ff5648cc8eea53dd66862.png

2.使用vi编辑器 可以直接 # vim hello.sh编写第一个shell文件 hello.sh, 注意一定要以.sh结尾

c1957950b555387e2b63b1123dce93c2.png

3.编写第一个shell文件,#!/bin/bash 是必须要写的,表示要是/bin/bash这个执行脚本的命令执行接下来写的脚本, echo "hello world !!"表示想前端打印一句话,具体看各自需求。

09a3778301dfa511b1a6c5a799b340ce.png

4.通过chmod命令赋予该脚本的执行权限chmod 755 hello.sh,否则没有执行权限,/root/hello.sh表示在全路径下执行该shell脚本

28d901e5fc2fa3eba9466b4381fc8b1d.png

就此一个简单的shell脚本就这样写完了 具体的这里就不讲了。

虽然一个简单的shell脚本写完了 但是运行后只能执行一次 对很多应用场景来说还是不够,接下来说一下定时任务

定时任务 --相信很多小伙伴没用过也听说过吧。

这里就不细讲了直接进入正题

1.安装crontab

cd8a2776293aaad0e895aa745a3fc1af.png

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

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

2.开启crontab服务

67de7ce2e5512996707b2f67cc668f1d.png

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

service crond start //启动服务

service crond stop //关闭服务

service crond restart //重启服务

service crond reload //重新载入配置

查看crontab服务状态:service crond status

手动启动crontab服务:service crond start

47777612bcb11a8c3b0025d12d51a946.png

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

加入开机自动启动:

chkconfig –level 35 crond on

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

[root@CentOS ~]# chkconfig crond on

400eee5f3b5d2e64f67f5b3aba3d5bf3.png

查看各个开机级别的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

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 ,默认的文件形式如下:

a40fa158f1fb26607df52890af9cf47a.png

前四行是有关设置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表示这四个指定整数。符号“/”指定步进设置。“/”表示步进值。如0-59/2定义每两分钟执行一次。步进值也可用星号表示。如*/3用来运行每三个月份运行指定任务。

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

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

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

2bac6a5691bac0b33704ab8be5bf5cef.png

这样大家看着很乱吧

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

a5b6f53340234a23e41d63798ad5c2e5.png

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

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

6861e61d19acebaa9e77f5c95e902f9a.png

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

0303e6ebbe7dac21adb31bdd25e90f67.png

5.使用实例

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

命令:

* * * * * command

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

命令:

3,15 * * * * command

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

命令:

3,15 8-11 * * * command

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

命令:

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

实例5:每个星期一的上午8点到11点的第3和第15分钟执行

命令:

3,15 8-11 * * 1 command

实例6:每晚的21:30重启smb

命令:

30 21 * * * /etc/init.d/smb restart

实例7:每月1、10、22日的4 : 45重启smb

命令:

45 4 1,10,22 * * /etc/init.d/smb restart

实例8:每周六、周日的1 : 10重启smb

命令:

10 1 * * 6,0 /etc/init.d/smb restart

实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb

命令:

0,30 18-23 * * * /etc/init.d/smb restart

实例10:每星期六的晚上11 : 00 pm重启smb

命令:

0 23 * * 6 /etc/init.d/smb restart

实例11:每一小时重启smb

命令:

* */1 * * * /etc/init.d/smb restart

实例12:晚上11点到早上7点之间,每隔一小时重启smb

命令:

* 23-7/1 * * * /etc/init.d/smb restart

实例13:每月的4号与每周一到周三的11点重启smb

命令:

0 11 4 * mon-wed /etc/init.d/smb restart

实例14:一月一号的4点重启smb

命令:

0 4 1 jan * /etc/init.d/smb restart

实例15:每小时执行/etc/cron.hourly目录内的脚本

命令:

01   *   *   *   *     root run-parts /etc/cron.hourly

说明:

run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名了

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值