
第一个
0 1 1-7,15-21 * 5 command
第二个
0 1 5,26 * * command
摘要: Linux , Shell
Shell中常用循环有 for , while
for循环只能用于 固定次数 的循环,因此不能无限循环和用于一些在后台守护进程一直运行的程序,语法语句如下
也可以写成一行,用 ; 分隔
取值列表内元素以空格隔开,如果元素带有空格则用引号包裹起来,例子如下
输出如下,可见循环到最后退出循环,引用变量依旧是最后一个取值列表元素
一行的写法
Shell的for循环也可以采用C语言的写法,注意是 双括号 ,用 分号; 间隔
一个简单例子
while循环语句结合条件测试使用,语法如下
举一个例子
在循环中使用条件测试实现复杂的逻辑,例如
也可以使用&&,||一行完成,省去if,fi
Shell的continue,break语句和Python一样,例子如下
break语句下输出4
continue语句下输出4 6 7 8 9 10
常见结合使用的循环体有 序列 , 数组 , 命令行传参 , 文件目录和文件
序列通过 seq 命令或者 {begin..end..step} 符号进行定义:
结合for循环使用案例
在Shell中使用小括号 () 定义数组,数组遍历使用 [@] 符号,防止元素有空格用双引号包起来,,例子如下
命令行传参遍历使用固定符号 $@ ,如果参数中有空格,用双引号括起来,例子如下
文件遍历使用 ls 命令,可以指定目录,以及通配符匹配
一个双重循环实现,注意 expr表达式中乘号要加转移符
(2)将某目录下大小大于阈值的文件移动到另一个文件
遍历循环一个目录,使用awk语法获得文件大小,将100m以上的文件移动到另一个文件夹
(2)指定开始日期和结束日期完成一个跑批任务
指定一个开始时间和结束时间,while从开始日期一直自增到结束日期循环结束,通过 date -d '2021-01-01 1day' +%Y-%m-%d 自增一天
常用选项:
-l 查看作业队列,相当于atq
-f 从某个指定文件文件中读取作业任务,不通过交互式输入。
-d 删除指定的作业任务,相当于atrm。
-c 查看指定作业具体内容。
-q QUEUE指明队列。
TIME时间格式有:
HH:MM 小时:分钟 例如04:00
HH:MM YYYY-MM-DD 小时:分钟 年-月-日 例如15:00 2017-11-25
HH:MM[am|pm] [Month] [Date] 例如:04pm July 30
HH:MM[am|pm] + number [minutes|hours|days|weeks]在某个时间点再加几个时间后执行
例如:now + 5minutes 5分钟后执行
04pm + days三天后下午4点执行
[root@dxlcentOS ~]# at 15:55 2017-11-25 在15点55分执行:切换到tmp目录,执行ls命令
at>cd /tmp
at>ls
at><EOT>
job 3 at Sat Nov 25 15:55:00 2017
注意:输入结束后按ctrl+d,任务输入结束at><EOT>,执行结果屏幕不会显示,会以邮件形式发送到邮箱。要是没有mail命令,进行yum -y install mailx安装。
执行周期性任务要确保crond守护进程在运行。
执行pstree,要是crond运行起来可以看到。
或者执行:~]# systemctl status crond (centos7)
Active: active (running) ... ...
centos6:~]# service crond status
... is running
有时候为了安全起见,可以将不允许某些用户执行周期性任务的用户名添加到/etc/cron.deny文件里面即可。
cron任务分类:分系统cron任务和用户cron任务
总结:1.cron周期任务最小时间单位是分钟。
2.定义COMMAND时,如果命令需要用到%,需要对其转义;但放置于单引号中的%不用转义亦可。
3.某任务在指定的时间因关机未能执行,下次开机不会自动执行。
4.当修改之前定好的任务或新增循环任务时最好执行一下systemctl restart crond。
5.如果是系统管理使用的循环任务最好写入/etc/crontab。
6.避免系统资源分配不均,周与日月不可以同时并存。
cron循环任务设定后,要是服务器因意外关机,那么在停机期间,cron设定的循环任务是不会运行的,当服务器开机后,也不会执行过去到达时间点的循环任务,只能等待下个时间点到来才执行。要想重新执行,anacron就可以解决这个问题。
anacron 是一个程序不是一个服务,当centos进入crontab排程时,anacron 会主动每一小时运行一次。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)