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所在的行,打印以:进行分割的第一个内容
本文来自博客园,作者:icui4cu,转载请注明原文链接:https://www.cnblogs.com/icui4cu/p/16029360.html