5.计划任务以及文本三剑客的使用

计划任务

单次执行

需要安装at

需要安装at

at now +1min 设置1分钟后执行的命令,后面写上要执行的命令
mkdir haha
如果没有其他要执行的,ctrl+d 结束

systemctl start atd.service 开启at服务

systemctl status atd.service 查看服务状态

使用文件的形式设置定时任务
nano at.jobs 在at.jobs里设置一连串的命令(类似批处理)

at now +1min < at.jobs 设置1min后执行at.jobs的命令

循环执行

需要安装crond

systemctl start crond 开启服务

systemctl enable crond 启动自动运行

ps aux | grep cron 查看进程

ls /var/spool/cron 里面的东西每分钟执行一次

crontab -l 列出所有用户的计划任务

crontab -r 删除所有计划任务

crontab -e 编辑计划任务

创建一个包含命令的run.sh文件

0 2 * * * /root/run.sh 每天2点执行
0 2 14 * * /root/run.sh 每个月14号2点执行
0 [点] [日] [月] [星期] [执行的代码]

0 2 2 * 5 /root/run.sh 每个月2号的2点或星期5的2点执行

0 2 2 6 5 /root/run.sh 每年6月2号2点或者周五2点执行

* /5 * * * * /root/run.sh 每5分钟执行一次

0 2 1,4,6 * * /root/run.sh 每个月的1,4,6号的2点执行

* * * * * /root/run.sh 每分钟执行
0 * * * * /root/run.sh 每个整点执行

* * 2 * * /root/run.sh 每个月2号的每分钟运行

nano /etc/crontab 编辑任务的循环
/etc/cron.daily/hourly/mouthly/weekly 每隔多少时间执行

无法执行计划命令排错

1.打开计划文件,查看其中代码是否在路径上存在不明确等问题

2.systemctl status crond查看报错

3.根据报错修改,写法,格式或者其他问题,再次查看不出现报错后等待结果

文本三剑客

grep——文本过滤工具

- E 支持正则表达式
-i 忽略大小写
-n 打印行号
-o 只打印匹配的内容
-c 打印匹配文件的匹配函数
-B 打印匹配的前几行
-A 打印匹配的后几行
-C 打印匹配的前后几行
-v 打印不匹配的行
-e 多点操作 
--color 匹配字体有颜色

grep -in "a" test1.txt 忽略大小写并打印行号test1.txt中的包含a的部分

grep -in "haho" -B 2 test1.txt 返回有haho的一行以及它的前两行

grep -e "^h" -e "o$" 以h开头,o结尾正则表达式匹配,忽略大小写并打印行数

grep -in "root" /etc/passwd 查看passwd文件里的包含root的行,相当于cat /etc/passwd | grep -in "root"

sed——文本编辑器

动作说明

a   新增
c   取代
d   删除
i   插入
p   打印
s   正则表达式取代

sed -e '4a\newline1' test1.txt 在test1.txt的第四行添加文本newline1(如果改行存在文字会添加到第三行,第三行之后文字后移一行)

nl /etc/passwd | sed '2,5d' 输出/etc/passwd删除2-5行

sed 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 在etc目录中修改selinux的参数,将enforcing改为disabled

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 真正修改数据进去

sed在不添加i参数的其他操作不会真正修改文本自身的内容

awk——文本报告分析工具

awk '{print $0}' /etc/passwd   对每一行执行print命令,$0表示全部

awk -F ':' '{print $1 $2 $3}' /etc/passwd   使用冒号进行分割,并取出其中第一、二、三个字段

root : x : 0 : 0 : root : /root : /bin/bash
 $1    $2 $3

awk -F ':' '{print "username is " $1 “\t” "password is " $2}' /etc/passwd   按照username和password的顺序输出1号和2号位置的数据,中间tab换行

awk -F ':' '{if(NR>=2 && NR<=5) print "username is " $1 " password is " $2}' /etc/passwd   指定2-5行输出

awk -F ':' '/root/{print $1}' /etc/passwd   使用:分割,匹配关键词root所在的行,打印以:进行分割的第一个内容
posted @ 2022-03-20 11:25  icui4cu  阅读(84)  评论(0编辑  收藏  举报