1、except
要监控 "process_run"进程的输出,
当输出为 “this is a new message”的时候,这个程序才会退出,否则一直等待中
#!/usr/bin/expect
set timeout -1
spawn process_run hz /v2x/obstacles
expect {
"this is a new message" { exit }
}
expect eof
2、打印top free df ifconfig到log
#!/bin/bash
d=`date +%Y%m%d_%H%M%S`
cd "$(dirname $1)"
if [ ! -d $1 ];then mkdir $1;fi
function info_log(){
while(2>1)
do
date >>$1/free_$d.txt
free >>$1/free_$d.txt
date >>$1/df_$d.txt
df -h >>$1/df_$d.txt
date >> $1/smi_$d.txt
nvidia-smi >>$1/smi_$d.txt
sleep 30
done
}
info_log $1 $2
#!/bin/bash
d=`date +%Y%m%d_%H%M%S`
log_folder="./log"
cd "$(dirname $log_folder)"
if [ ! -d $log_folder ];then mkdir $log_folder;fi
function info_log(){
while(2>1)
do
date >>$log_folder/ifconfig_$d.txt
ifconfig >>$log_folder/ifconfig_$d.txt
sleep 10
done
}
info_log
打印 top指令:
脚本:
增加环境变量,防止top打印不全。
#!/bin/bash
export COLUMNS=200
d=`date +%Y%m%d_%H%M%S`
log_folder="./log"
if [ ! -d $log_folder ];then mkdir $log_folder;fi
nohup /usr/bin/top -c -d 30 -b >> $log_folder/top_$d.txt &
指令:
nohup top -c -d 3 -b > top.log &
ai相机:
top -b -d 30 > top_cpu.log &
top -m -d 30 > top.log < /dev/null &
3、将文件等份为几份,分别保存到不同文件
#!/bin/bash
count=0
source_dir='/var/log/'
all_files=$(find $source_dir | grep 'web*.log') # 将所有的web.*.log找出来
target_dir1='/tmp/dir1'
target_dir2='/tmp/dir2'
target_dir3='/tmp/dir3'
for file in $files
do
if expr $count % 3 == 0
then
mv -v $file ${target_dir1}
elif expr $count % 3 == 1
then
mv -v $file ${target_dir2}
else
mv -v $file ${target_dir3}
fi
((count++))
done
4、grep查找log中包含特定字符串的行
## 从日志中,提取出有用的文件:
grep -r -E "stage_pre_func|idg r34|stage2_jieduan" ai_cam_run_record.log > latency.log --对特定某log文件进行 查找
grep -r -E "stage_pre_func|idg r34|stage2_jieduan" ./ai_cam_run_record_log/ > Latency.Log 对文件夹下的所有文件递归查找