写一个shell脚本,持续查询eef进程的pid,直到找到eef进程,并执行top -n 600 -b -d 60 -p pid >/tmp/test
时间: 2023-12-10 10:42:09 浏览: 26
可以尝试以下脚本:
```bash
#!/bin/bash
# 定义需要查询的进程名
process_name="eef"
# 循环查询进程pid并执行top命令
while true
do
# 查询进程pid
pid=$(pgrep $process_name)
# 如果找到了进程pid,则执行top命令
if [ ! -z "$pid" ]
then
top -n 600 -b -d 60 -p $pid >/tmp/test
break
fi
# 暂停5秒后继续查询
sleep 5
done
```
脚本中使用了 `pgrep` 命令来查询进程pid,如果找到了进程pid,则执行top命令,并将结果输出到 `/tmp/test` 文件中。如果没有找到进程,则暂停5秒后继续查询。
相关问题
写一个shell脚本,持续查询eef进程的pid,直到找到eef进程,并执行top -n 600 -b -d 60 -p pid >/tmp/test 自动结束运行
可以尝试使用以下脚本:
```shell
#!/bin/bash
# 定义要查询的进程名
proc_name="eef"
# 循环查询进程pid
while true
do
pid=$(pgrep "$proc_name")
# 如果找到了进程pid,则执行 top 命令并退出循环
if [ -n "$pid" ]
then
top -n 600 -b -d 60 -p "$pid" >/tmp/test
break
fi
# 每隔 1 秒钟查询一次
sleep 1
done
```
脚本的核心部分是使用 `pgrep` 命令查询进程的 pid,然后使用 `top` 命令监控该进程。为了让 `top` 命令运行 10 小时,我们设置了 `-n 600` 参数,表示运行 600 次,每次间隔 60 秒钟(即 `-d 60` 参数),并将输出重定向到 `/tmp/test` 文件。脚本会在找到进程并执行完 `top` 命令后自动退出。
写一个shell脚本,查询eef进程的pid,并执行top -n 600 -b -d 60 -p pid >/tmp/test。txt
可以尝试以下脚本:
```bash
#!/bin/bash
# 查询 eef 进程的 pid
pid=$(ps aux | grep eef | grep -v grep | awk '{print $2}')
# 执行 top 命令,并将结果输出到 /tmp/test.txt
top -n 600 -b -d 60 -p $pid >/tmp/test.txt
```
解释一下:
首先使用 `ps aux` 命令查找所有进程,然后使用 `grep` 命令找到包含 eef 的进程,再通过 `awk` 命令获取进程的 pid。
然后使用 `top` 命令监控进程的运行情况,其中 `-n` 参数指定 top 命令执行的次数,本例中是 600 次;`-b` 参数表示以批处理模式运行 top 命令,不需要交互式输入;`-d` 参数表示 top 命令每次更新的时间间隔,本例中是 60 秒;`-p` 参数指定要监控的进程 pid。最后,将 top 命令的输出结果重定向到 `/tmp/test.txt` 文件。