linux中定时执行shell脚本

  突发一股idea,我的linux服务器上的tomcat项目,虽然不能一直跑(别问我为啥不能一直跑,打开你的想象力),但是我可以设置个定时任务让他在固定时间启动和关闭啊。20大洋两个月的linux服务器,可不能浪费了,要榨干它所有的价值。对,榨干价值!于是利用定时任务在每天22点启动tomcat,早7点10分关闭它。
  因为买来的这个服务器自带crontab,而且操作简单,所以定时执行shell脚本的任务,选择了crontab。所以在此记录下。对于没有crontab的服务器,可以先安装下。

crontab的安装

1
2
yum install vixie-cron
yum install crontabs

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

crontab启动关闭等操作

1
2
3
4
5
service crond start //启动服务 
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看crontab服务状态

查看crontab服务是否已设置为开机启动,执行命令:ntsysv
加入开机自动启动:
chkconfig –level 35 crond on

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

1
chkconfig crond on

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

1
chkconfig –list crond

crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
可以看到2、3、4、5级别开机会自动启动crond服务
取消开机自动启动crond服务:

1
chkconfig crond off

crontab定时任务操作

1
2
3
4
5
cat /etc/crontab //查看crontab,会有注释说明
crontab -u //设定特定用户的定时服务
crontab -l //列出当前用户定时服务内容
crontab -r //删除当前用户的定时服务
crontab -e //编辑当前用户的定时服务
  • 先查看下crontab的状态

  • 再看下crontab的所有定时任务

  • 通过查看crontab知道,一行定时任务各部分的意思是啥

crontab添加配置解释

* * * * * user_name command to be executed

  • user_name 表示执行定时任务的用户 不指定默认当前用户
  • command to be executed 表示要执行的脚本语句。
  • 前面五位*号是定时执行的时间周期 说明如下:
    第一个 * 表示分钟:取值范围0-59
    第二个 * 表示小时:取值范围0-23
    第三个 * 表示天数:取值范围1-31
    第四个 * 表示月份:取值范围1-12
    第五个 * 表示每周:取值范围0-6
  • 使用(-)可以划定范围
    如:0 0-3 * * * 脚本
    表示每天0-3点整执行脚本
  • 使用(,)可以枚举时间
    如: 0,15,30,45 * * * * 脚本
    表示每个小时的0分,15分,45分,30分会执行脚本
  • 使用(/)可以指定间隔
    如:* */8 * * * 脚本
    表示每8小时执行脚本
  • 组合用法
    0-20/10 * * * * 脚本
    表示在前20分钟内每隔10分钟执行脚本

-------------本文结束感谢您的阅读-------------
感觉文章不错,就赏个吧!
0%