命令分别有data
、at
、corntab
、sleep
、atq
date命令
调节时间
定制date的输出
date "+%H:%M:%S" #输出时分秒
date "+%Y:%m:%d" #输出年月日
date "+%H时:%M分:%S秒" #输出时分秒-带中文
date命令修改系统时间
修改系统时间需要使用root身份
sudo date 10121430 #表示修改时间为 10月12号14点30分
at命令
延迟执行一个程序 , 可以用at命令来设定一个程序的执行时间, at是英文 “...时刻”的意思, 注意:at命令只能让程序执行一次
如果没有at命令,就可以安装sudo yum install at
在指定时刻执行程序
先用at命令后接 想要程序执行的确定时刻
再输入你想要在以上指定时刻执行的命令
[root@VM_0_4_centos ~]# at 14:12
at> touch file.txt
at> <EOT>
job 1 at Wed Nov 11 14:12:00 2020
我这里写:在14:12分的时候去执行创建一个文件,可以指定多个命令,结束 用ctrl+D
去退出at命令。
- job 表示“工作,任务” 的意思,表示创建一个任务
- 1 是job的编号,表示1号任务
- at就是执行的任务时间
- 如果想在明天14:12分执行,就
at 14:12 tomorrow
, 如果想在指定日期 2020年5月10号执行 就at 14:12 05/10/20
(格式是美国日期 月/日/年 )
在指定间隔之后执行程序
比如在10分钟之后执行 at now +10 minutes
at now +10 minutes #10分钟后执行
at now+7 weeks #在7个星期后执行
关键词:minutes-分钟
,hours-小时
,days - 天
,weeks-星期
, months-月
, years-年
atq命令
列出正等待执行的at任务
, q是英文 queue 的首字母,表示 “队列”
[root@VM_0_4_centos ~]# atq
3 Wed Nov 11 14:48:00 2020 a root
atrm命令
删除正在等待执行的at任务
,rm是英文 remove 的首字母,表示“删除”, atrm命令后接at任务的编号,例如1,2,3,4...
atrm 3
sleep命令
休息一会
,sleep英文 是“睡觉、睡眠”的意思 ,
- 可以用分号隔开多个命令,使之一个接一个执行 ,跟管道不一样,管道是前一个命令的输出作为后一个命令的输入
- 用分号隔开的命令并没有关联 ,例如
touch file.txt ; rm file.txt
创建文件再删除。在2句命令之间可以插入一定的暂停等待时间。
touch file.txt ; sleep 10 ; rm file.txt #10秒后删除
sleep 10是表示暂停10秒
默认sleep后面数值表示“秒” , m 表示分钟
,h表示小时
, d表示天
touch file.txt ; sleep 10m ; rm file.txt #10分钟后删除
&&和|| 符号
这2个在编程语言一般称为“逻辑与”和 “逻辑或” 符号 ,&&及|| 和分号一样,用于分割2个命令,使得命令依次执行
- && : &&前的命令执行成功,才会执行后面的命令
- || : ||前的命令执行失败才会执行后面的命令
- 分号 : 不论分号前的命令执行成功与否,都户执行分号后的命令
crontab命令
定时执行程序
用来读取和修改名为crontab的文件,包含了要定时执行的程序列表,at命令只能执行一次,crontab可以重复执行名,例如每小时,每分钟,每天,每个星期等等..
安装crontab
//在Cetnos(Red Hat一族)中安装
sudo yum install vixie-cron crontabs #安装crontab
chkconfig crond on #设为开机自启动
service crond start #启动
//在Ubuntu(Debian一族)中安装
sudo apt install cron #安装crontab
service cron retart 或者 restart cron #重启crontab
- 实际上有2个命令,一个叫
crontab
,一个叫cron
- crontab 用于修改crontab文件, cron用于实际执行定时的程序
主要3个参数
-l
: 显示crontab文件-e
: 修改crontab文件-r
: 删除crontab文件
修改crontab格式
m h dom mon dow command
- m : minute的缩写, 表示“分钟”
- h : hour的缩写,表示“小时”
- dom : day of month 的缩写,表示 “一个月的哪一天”
- mon : month的缩写,表示“月份”
- dow : day of week 的缩写,表示“星期几”
- command : 英文“命令”,表示需要定时执行的命令
简单理解: 分时日月周
每天的22点10分都在家目录下创建file.txt 文件
10 22 * * * touch ~/file.txt #10表示分钟,22表示小时,其它3个区域是*
每个小时的47分都执行command命令
47 * * * * command
每个礼拜一的凌晨都执行command命令
0 0 * * 1 command
每1分钟执行command命令 并写入日志进去
*/1 * * * * echo "1111" >> /home/1.txt
每个月的1~15日的5点30分执行command命令
30 5 1-15 * * command
每个礼拜一,礼拜三,礼拜四的凌晨执行command命令
0 0 * * 1,3,4 command
每2个小时的整点(0,2,4,6 等等)都执行command命令
0 */2 * * * command
每个礼拜1到礼拜5的每个10的倍数的分钟(0,10,20,30等等) 都执行command命令
*/10 * * * 1-5 command
每30秒执行一次 (虽然最小值是分钟,可以利用sleep去进行操作)
* * * * * sleep 30; /home/run.sh
0 */2 * * * command
里的 */2 是2个倍数
,意思就是每2个小时(2/4/6/8)
路径最好用绝对路径 , 因为你并不能确定cron命令执行这些语句的时候是否在哪个目录 , 上面 ~是代表家目录 。
如果语法正确的话,crontab会显示 crontab : installing new crontab
安装新的crontab文件
删除crontab文件
crontab -r
总结
- date命令可以显示系统时间,可以按自定义格式显示,修改系统时间
- at命令可以延迟执行程序,但它只能执行一次
- 分号、&& 和|| 都可以用来连接多个命令 ,用于依次执行前后命令
- sleep命令用于使前后2个命令执行之间隔一定时间
- crontab命令用户定时执行程序,例如每天17点12分,每个礼拜2和礼拜3在12点,每个月的7号,等等..
- 用crontab -e 来修改crontab程序
评论 (0)