咱们能够经过一些设置。来让电脑定时提醒咱们该作什么事了。或者咱们提早设置好,告诉电脑你几点作什么几点作什么,这种咱们就叫它定时任务。而遇到一些须要执行的事情或任务。咱们也能够经过命令来告诉电脑一会临时把这个工做给作一下算法
总结:在咱们LINUX中,咱们能够经过crontab和at这两个东西来实现vim
计划任务的做用:是作一些周期性的任务,在生产中的主要用来按期备份数据测试
计划任务的安排方式分两种:spa
一种是定时性的,也就是例行。就是每隔必定的周期就要重复来作这个事情rest
一种是突发性的,就是此次作完了这个事,就没有下一次了,临时决定,只执行一次的任务code
at和crontab这两个命令:blog
at:它是一个能够处理仅执行一次就结束的指令进程
crontab:它是会把你指定的工做或任务,好比:脚本等,按照你设定的周期一直循环执行下去crontab
at语法格式:at 时间ip
at中编辑,删除打错的字,Ctrl+back(删除),Ctrl+d(保存)
1. 下载at程序
[root@ken ~]# yum install at -y
2. 启动atd服务,启动程序at,通常都是后面+d(daemon),atd表示启动at
[root@ken ~]# systemctl restart atd [root@ken ~]# ps aux | grep atd root 1166 0.0 0.1 25904 944 ? Ss 17:52 0:00 /usr/sbin/at -f root 1168 0.0 0.1 112704 956 pts/0 S+ 17:52 0:00 grep --color=auto atd
3. 设置at计划任务
[root@ken ~]# at 10:00 #若是是上午时间,后面加上am,好比9:20am at> touch /tmp/test1 #输入你要执行的命令 at> <EOT> #按ctrl+d保存 job 1 at Fri Mar 1 10:00:00 2019 [root@ken ~]# at -l #查看计划任务 1 Fri Mar 1 10:00:00 2019 a root [root@ken ~]# atq #查看计划任务 1 Fri Mar 1 10:00:00 2019 a root
4. 删除计划任务atrm
[root@ken ~]# at -l #第一步查看计划任务,获取前面编号 1 Fri Mar 1 10:00:00 2019 a root [root@ken ~]# atrm 1 #删除计划任务加上编号 [root@ken ~]# at -l #再次查看计划任务发现已经删除
5. at计划任务的特殊写法
[root@ken ~]# at 20:00 2018-10-1 在某天 [root@ken ~]# at now +10min 在 10分钟后执行 [root@ken ~]# at 17:00 tomorrow 明天下午5点执行 [root@ken ~]# at 6:00 pm +3 days 在3天之后的下午6点执行
语法:#crontab -u -e
经常使用选项:
-l:list,列出指定用户的计划任务列表
-e:edit,编辑指定用户的计划任务列表
-u:user,指定的用户名,若是不指定,则表示当前用户
-r:remove,删除指定用户的计划任务列表
1. 查看进程是否启动
[root@ken ~]# ps aux | grep crond root 621 0.0 0.3 126284 1600 ? Ss 17:46 0:00 /usr/sbin/crond -n root 1194 0.0 0.1 112704 956 pts/0 S+ 18:05 0:00 grep --color=auto crond
2. 查看计划任务
[root@ken ~]# crontab -l no crontab for root
3. 编写计划任务
计划任务的规则语法格式,以行为单位,一行为一个计划:
分 时 日 月 周 须要执行的命令
执行的命令建议写成绝对路径的格式!
若是分钟那个位置,显示的是*,就表示计划任务是每分钟执行一次计划任务,也就是一个小时执行60次。
若是须要每隔n分钟执行一次计划任务,那就是/n取代第一颗*。
小诀窍:寻找systemctl的绝对路径时候,由于编辑crontab计划任务时候,就是经过vim打开文件,进行编辑,故而咱们可使用!which来进行查找你所用的命令的绝对路径。
例如:若是想要天天的0点0分执行reboot指令,则能够写成
0 0 * * * reboot
取值范围(常识):
分:0~59
时:0~23
日:1~31
月:1~12
周:0~7,0和7表示星期天
四个符号:
*:表示取值范围中的每个数字
-:作连续区间表达式的,要想表示1~7,则能够写成:1-7
/:表示每多少个,例如:想每10分钟一次,则能够在分的位置写:*/10
,:表示多个取值,好比想在1点,2点6点执行,则能够在时的位置写:1,2,6
平常常常须要操做的是进行备份,将某个文件备份到另外一个文件夹中,此时通常备注为时间+,因此常用date命令。这时候须要注意date命令中的%,由于%在vim中是有特殊的含义,%表示的是消除后面的全部,所以,这时候须要用\进行转义以下图。
若是不加\,以下图出现错误
问题1:每个月一、十、22日的4:45重启network服务
45 4 1,10,22 * * systemctl restart network (每个月,周没有制定)
问题2:每周6、周日的1:10重启network服务
10 1 * * 6,7 systemctl restart network (日、月没有指定)
问题3:天天18:00至23:00之间每隔30分钟重启network服务
*/30 18-23 * * * systemctl restart network ( 日 月 周 没有指定)
问题4:每隔两天的上午8点到11点的第3和第15分钟执行一次重启
3,15 8-11 */2 * * reboot (月和周没有指定)
案例:真实测试案例,每1分钟往root家目录中的ken.txt中输一个123,为了看到效果使用追加输出
[root@ken ~]# crontab -e #编写计划任务 * * * * * echo "123" >> /root/ken.txt [root@ken ~]# tail -f ken.txt #查看计划任务执行结果 123 123
4. 删除计划任务
[root@ken ~]# crontab -l * * * * * echo "123" >> /root/ken.txt [root@ken ~]# crontab -r [root@ken ~]# crontab -l no crontab for root
注意:在计划任务中,默认的最小单位就是分,不能再小了。
经常使用选项组合:
压缩归档:czvf
解压:xzvf
v是显示操做进程的,通常能够不须要。也就是直接压缩文档是czf,解压xzf
zip通常用unzip进行解压,gz通常用gunzip解压,tar.gz用tar xf 进行解压
1. 压缩归档
[root@ken ~]# mkdir test [root@ken ~]# cd test [root@ken test]# touch {1..10}.txt [root@ken test]# tar czvf test.tar.gz ./* ./10.txt ./1.txt ./2.txt ./3.txt ./4.txt ./5.txt ./6.txt ./7.txt ./8.txt ./9.txt [root@ken test]# ls 10.txt 2.txt 4.txt 6.txt 8.txt test.tar.gz 1.txt 3.txt 5.txt 7.txt 9.txt
2. 解压
[root@ken test]# rm -rf {1..10}.txt [root@ken test]# ls test.tar.gz [root@ken test]# tar xzvf test.tar.gz ./10.txt ./1.txt ./2.txt ./3.txt ./4.txt ./5.txt ./6.txt ./7.txt ./8.txt ./9.txt [root@ken test]# ls 10.txt 2.txt 4.txt 6.txt 8.txt test.tar.gz 1.txt 3.txt 5.txt 7.txt 9.txt
能够加上-C制定解压到那个目录
[root@ken test]# tar xvf test.tar.gz -C /tmp ./10.txt ./1.txt ./2.txt ./3.txt ./4.txt ./5.txt ./6.txt ./7.txt ./8.txt ./9.txt [root@ken test]# ls /tmp 10.txt 2.txt 4.txt 6.txt 8.txt ks-script-8jIJc_ yum.log 1.txt 3.txt 5.txt 7.txt 9.txt vmware-root