linux crontab 每7天,Linux下计划任务神器-Crontab

作为系统运维人员都清楚,在Linux下定义重复性的任务,我们一般会采用crontab来进行:crontab这个指令所设置的工作将会循环的一直进行下去!可循环的时间为分钟、小时、每日、每月、每周。

crontab计划任务:

1)常见用法:

crontab命令的作用和用法如下:

描述:为每个用户维护周期性的计划任务文件

用法:crontab [-u 用户][-l|-r|-e]

-u   指定某个用户的计划任务(只有root用户才有这个权限)

-e         编辑用户的计划任务

-l         列出用户的计划任务

-r         删除用户的计划任务

-i         删除时进行交互式操作

用户的cron计划任务文件格式含义如下:

*     *     *     *     *    指令

分    时    日    月    周  指令

0-59  0-24  1-31  1-12  0-7

如果需要指定时间段:

a:可以使用横杠(-)表示一段连续的时间

b:使用逗号(,)表示若个不连续的时间

c:使用星号(*)表示所有的时间,使用除号(/)表示间隔时间

2)crontab的常规用法:

# 列出用户root的计划任务

[root@localhost ~]# crontab -l

*/30 * * * * ntpdate -u s2m.time.edu.cn >/dev/null 2>&1

# 列出用户wanlong的计划任务

[root@localhost ~]# crontab -l -u wanlong

* */5 * * * /usr/bin/ping 127.0.0.1 >/dev/null

# 计划任务的配置文件是保存在/var/spool/cron/下,只要有计划任务的用户都对应有配置文件

[root@localhost ~]#

cd /var/spool/cron/

[root@localhost cron]# ls

root  wanlong

[root@localhost cron]# cat wanlong

* */5 * * * /usr/bin/ping 127.0.0.1 >/dev/null

[root@localhost cron]# cat root

*/30 * * * * ntpdate -u s2m.time.edu.cn >/dev/null 2>&1

说明:可以发现/var/spool/cron/wanlong与crontab -l -u wanlong显示的结果是一直的,然后我们测试下直接修改配置文件,看计划任务是否生效

[root@localhost cron]# echo

"* */2 * * * /usr/bin/ping 127.0.0.1 >/dev/null"

>>/var/spool/cron/root

[root@localhost cron]# crontab -l

*/30 * * * * ntpdate -u s2m.time.edu.cn >/dev/null 2>&1

* */2 * * * /usr/bin/ping 127.0.0.1 >/dev/null

说明:以上可知,直接修改配置文件,仍旧生效。

3)如何实现秒级别crontab

方法1:使用sleep加间隔时间的模式

# crontab -l

* * * * * for min in 0 1 2;do echo "hi";sleep 20;done

方法2:转换成脚本进行

#!/bin/bash

#created by molewan

while:

do

/test.sh

sleep 7

done

# chmod 755 seconds.sh

# nohup bash seconds.sh &

补充知识:

sleep用法格式:

sleep NUMBER[SUFFIX]

SUFFIX值可以为s(秒,默认值)、m(分钟)、h(小时)、d(天数)

4)计划任务如何每7分钟运行(分钟取值范围0-59)

不能被60整除的,不能精确做到真正运行

错误做法: */7 * * * *

推荐的方法:

#!/bin/bash

#created by molewan

while:

do

/test.sh

sleep 7

done

5)练习:

1、每4小时备份一次/etc目录至/backup目录中,保存文件名称格式为“etc-yyyy-mm-dd-HH.tar.xz”

# crontab -l

* */4 * * * tar -cJPf /backup/etc-$(date +%F-%k).tar.xz /etc >/dev/null 2>&1

2、每周2,4,7备份/var/log/messages文件至/logs目录中,文件名为“messages-yyyymmdd”;

# crontab -l

* * * * 2,4,7 tar -cf /logs/messages-$(date +%y%m%d)

3、每两小时取出当前系统/proc/meminfo文件中以S或M开头的信息追加/tmp/meminfo.txt文件中

[root@zabbix ~]# egrep -i "^(S|M)" /proc/meminfoMem

Total:        5947112 kB

MemFree:         1669468 kB

MemAvailable:    2726264 kB

SwapCached:       116600 kB

Mlocked:               0 kB

SwapTotal:       4194300 kB

SwapFree:        3288708 kB

Mapped:           117324 kB

Shmem:            285240 kB

Slab:             188640 kB

SReclaimable:     133080 kB

SUnreclaim:        55560 kB

# crontab -l

* */2 * * * egrep -i "^(S|M)" /proc/meminfo>>/tmp/meminfo.txt

4、工作日时间内,每小时执行一次“ip addr show”

* */1 * * 1-5 /usr/sbin/ip addr show

6)其它注意事项:

a、在 Linux 下面的 crontab 会自动的帮我们每分钟重新读取一次 /etc/crontab 的例行工作事项;

b、但是某些原因或者是其他的 Unix 系统中, 由于 crontab 是读到内存当中的,所以在你修改完 /etc/crontab 之后,可能并不会马上执行,这个时候请重新启动crond服务 ;

c、周与日月的计划任务不可同时并存

重启crond服务:

CentOS7下重启crond服务

[root@zabbix ~]# systemctl restart crond.service

[root@zabbix ~]# echo $?0

执行前先看下,是否有计划任务正在执行

CentOS6下重启crond服务

[root@Openstack-01 ~]# /etc/init.d/crond restart

[root@Openstack-01 ~]# echo $?0

原创文章,作者:Net21-冰冻vs西瓜,如若转载,请注明出处:http://www.178linux.com/25107

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值