如何根据条件启动和停止top命令?

时间:2019-06-25 06:27:42

标签: linux bash

我对bash脚本的经验很少(这是我正在编写的第一个脚本,所以...),但是我想写遍历日志文件的sript(当然,每个分钟)并扫描特定词组(在我的情况下为Task x_1 is running)。
如果找到了该短语,则启动命令top(过滤结果),将其结果写入单独的文件(每次都不同-名称由ID x_1和当前日期组成) )。
写入top命令的结果,直到找到短语Task x_1 is completed
理想情况下,它应该再次开始寻找Task x_2 is running,直到找到所有x。 x_1x_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相同的操作?如果不是,如何固定当前的“脚本”以达到预期的效果?

任何帮助将不胜感激!

0 个答案:

没有答案