我对bash脚本的经验很少(这是我正在编写的第一个脚本,所以...),但是我想写遍历日志文件的sript(当然,每个分钟)并扫描特定词组(在我的情况下为Task x_1 is running
)。
如果找到了该短语,则启动命令top
(过滤结果),将其结果写入单独的文件(每次都不同-名称由ID x_1
和当前日期组成) )。
写入top
命令的结果,直到找到短语Task x_1 is completed
。
理想情况下,它应该再次开始寻找Task x_2 is running
,直到找到所有x。 x_1
,x_2
,...,x_n
是进程的ID,我将它们存储在一个单独的文件中(list.txt由以不同的行编写的ID组成)。 / p>
IFS=$'\n\r' read -d '\r' -r -a mylist < list.txt
echo ${mylist[1]}
NOW=$(date +"%m-%d-%y")
echo $NOW
for i in "${mylist[@]}"; do
touch "log_${i}_$NOW.txt"
if grep "Task ${i} is running" Log.log; then
grep "Task ${i} is running" Log.log > "log_${i}_$NOW.txt"
while grep -v "Task ${i} is completed" Log.log; do
top -b | grep "Process Name" > "log_${i}_$NOW.txt"
done
grep "Task ${i} is completed" Log.log > "log4_${i}_$NOW.txt"
fi
done
嗯,(显然)它不起作用。我的主要问题是-是否可以同时执行top
命令并同时通过Log.log文件进行过滤?也许有一个简单的命令可以执行与ifs和loops相同的操作?如果不是,如何固定当前的“脚本”以达到预期的效果?
任何帮助将不胜感激!