最近有个需求:定时检测某个目录下的文件个数是否超过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
shell批处理删除特定文本
最新推荐文章于 2021-11-24 16:04:26 发布