Linux计划任务及压缩归档
1. 计划任务
Linux用at和crontab两个命令来实现计划任务的功能:
at:处理仅执行一次就结束;
crontab:将指定的工作、任务按设定的周期循环执行下去。
1.1 at
1)启动atd服务: systemctl restart atd
2)设置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
3)删除计划任务:atrm
[root@ken ~]# at -l #第一步查看计划任务,获取前面编号 1 Fri Mar 1 10:00:00 2019 a root [root@ken ~]# atrm 1 #删除计划任务加上编号 [root@ken ~]# at -l #再次查看计划任务发现已经删除
1.2 crontab
格式:crontab opinion
常用opinion:
-l |
list |
列出指定用户的计划任务列表 |
-e |
edit |
编辑指定用户的计划任务列表 |
-u |
user |
指定用户名,如不指定则默认当前用户 |
-r |
remove |
删除指定用户的计划任务列表 |
形式:
取值范围 |
分 |
0-59 |
时 |
0-23 |
|
天 |
1-31 |
|
月 |
1-12 |
|
周 |
0-7,0和7表示周天 |
|
四个符号 |
* |
表示范围中的每一个数字 |
- |
连续区间的表达,如0-7 |
|
/ |
每多少个,每隔多少,如每分钟10个:*/10 |
|
, |
多个取值,并列取值 |
注意:执行命令必须是绝对路径/目录,如执行echo必须是`which echo`,即/usr/bin/echo ,绝对路径;linux中#表示注释,其后的内容不执行;在crontab下%无法执行,如设置日期、时间时必须加/进行转义:“+/%F”;在计划任务中,最小的单位是分。
例子:
例1:在root家目录下创建文件test.txt,每分钟追加写入“123”,实验后再删除计任务进程。
[root@localhost ~]# ll -rw-r--r--. 1 root root 0 May 3 19:07 test.txt [root@localhost ~]# crontab -e #创建计划任务 */1 * * * * /usr/bin/echo "123" >> /root/test.txt #每分钟给test.txt写入123 [root@localhost ~]# crontab -l #查看计划任务 */1 * * * * /usr/bin/echo "123" >> /root/test.txt [root@localhost ~]# tail -f test.txt #监测文件 123 123 [root@localhost ~]# crontab -r #删除计划任务 [root@localhost ~]# crontab -l #查看计划任务 no crontab for root #无计划任务
-f 表示实时监控
例2:设置重启和关机时间;每周1、3、5的4:45分重启,每月1、10、25日23:45关机。
[root@localhost ~]# crontab -e 45 4 * * 1,3,5 /usr/sbin/reboot 45 23 * 1,10,25 /usr/sbin/poweroff
2. 压缩归档
2.1
归档 :将多个文件(目录)打包成一个文件;
目的 :方便备份、还原及文件的传输操作。
2.2 tar命令:
将将多个文件(也可能包括目录,因为目录本身也是文件)放在一起存放到一个磁带或磁盘归档文件中。并且将来可以根据需要只还原归档文件中的某些指定的文件。
常用选项:
c |
创建一个新的tar文件 |
t |
列出tar文件中目录的内容 |
x |
从tar文件中抽取文件(解压) |
f |
指定归档文件或磁带(也可能是软盘)设备(一般都要选) |
v |
verbose,显示所打包的文件的详细信息 |
z |
使用gzip压缩算法来压缩打包后的文件 |
j |
使用bzip2压缩算法来压缩打包后的文件(文件压缩的更小) |
|
|
常用选项组合:czvf,压缩文档;xzvf,解压。
例子:
压缩文件tar czvf test.tar,gz ./* [root@localhost ~]# mkdir test [root@localhost ~]# cd test/ [root@localhost test]# touch {1..10}.txt [root@localhost test]# ls 10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt [root@localhost test]# tar czvf test.tar.gz ./* #压缩 ./10.txt ./1.txt ./2.txt ....... [root@localhost 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 解压 tar xzvf test.tar.gz ,加-C表示解压到指定的目录 [root@localhost test]# tar xzvf test.tar.gz -C zxj