shell批处理删除特定文本 | 您所在的位置:网站首页 › 批处理删除文本指定内容 › shell批处理删除特定文本 |
最近有个需求:定时检测某个目录下的文件个数是否超过n个,若超过则清理日期较早的m-1个文件;由于第一个文件可能被有些进程占用,因此删除日期较早的前m个除去最早的一个。 具体的shell脚本如下: ############################ # author : lijd # date : 2021-04-20 ############################ #!/bin/bash main() { while [ 1 ] do datapath=$(date +%Y)"/"$(date +%m)"/"$(date +%d)"/" filepath="/data/sp"$datapath file_num=`ls "/data/sp"$datapath -l | grep ".dq" | wc -l` if [ $file_num -gt 15 ] then cd $filepath && ls -ltr | grep ".dq" | awk '{print $9}' | head -n 10 | tail -n 9 | xargs rm -rf fi sleep 60 done } main主要执行语句:ls -ltr | grep ".dq" | awk '{print $9}' | head -n 10 | tail -n 9 | xargs rm -rf 定时检测某个进程是否存在,不存在启动。具体的shell脚本如下: ############################ # author : lijd # date : 2021-04-20 ############################ #!/bin/bash main() { while [ 1 ] do process_num=`ps aux | grep hqccgsvc | grep -v grep |wc -l` if [ $process_num -eq 0 ] then cd /root/ccg_cvi/ccg/ && ./hqccgsvc -start nowtime=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"` echo $nowtime hqccgsvc segfault >> /root/ccg_cvi/cvi_ccg_monitor.log fi sleep 60 done } main部分数据文件可能导致进程读取崩溃,删除异常的数据文件然后重启进程。具体的shell脚本如下: ############################ # author : lijd # date : 2021-04-20 ############################ #!/bin/bash BakErrFile() { datapath=$(date +%Y)"/"$(date +%m)"/"$(date +%d)"/" filepath="/data/sp"$datapath file_num=`ls "/data/sp"$datapath -l | grep ".dq" | wc -l` if [ $file_num -gt 5 ] then cd $filepath && ls -ltr | grep ".dq" | awk '{print $9}' | head -n 1 | xargs -t -i mv {} {}.bak fi } main() { while [ 1 ] do process_ccg_num=`ps aux | grep hqccgsvc | grep -v grep |wc -l` if [ $process_ccg_num -eq 0 ] then cd /root/ccg_cvi/ccg/ && ./hqccgsvc -start nowtime=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"` echo $nowtime hqccgsvc segfault >> /root/ccg_cvi/cvi_ccg_monitor.log fi process_sp_num=`ps aux | grep spsvc_analyze | grep -v grep |wc -l` if [ $process_sp_num -eq 0 ] then cd /root/ccg_cvi/spanalyze/ && ./spsvc_analyze -start nowtime=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"` echo $nowtime spsvc_analyze segfault >> /root/ccg_cvi/cvi_ccg_monitor.log fi process_spa_num=`ps aux | grep spasvc_analyze | grep -v grep |wc -l` if [ $process_spa_num -eq 0 ] then BakErrFile cd /root/ccg_cvi/spanalyze/ && ./spasvc_analyze -start nowtime=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"` echo $nowtime spasvc_analyze segfault >> /root/ccg_cvi/cvi_ccg_monitor.log fi sleep 60 done } main主要执行语句:ls -ltr | grep ".dq" | awk '{print $9}' | head -n 1 | xargs -t -i mv {} {}.bak |
CopyRight 2018-2019 实验室设备网 版权所有 |