写一个shell脚本,查询eef进程的pid,并执行top -n 600 -b -d 60 -p pid >/tmp/test。txt 如果检测到eef不存在了,就结束top命令
时间: 2023-12-10 19:40:06 浏览: 27
可以尝试使用以下的shell脚本:
```bash
#!/bin/bash
# 查找eef进程pid
eef_pid=$(pgrep eef)
# 如果找到了eef进程
if [[ -n $eef_pid ]]; then
# 执行top命令,输出到/tmp/test.txt文件中
top -n 600 -b -d 60 -p $eef_pid >/tmp/test.txt &
# 记录top命令的进程号
top_pid=$!
# 检测eef进程是否存在
while [[ -e /proc/$eef_pid ]]; do
sleep 1
done
# 如果eef进程不存在了,就结束top命令
kill $top_pid
fi
```
这个脚本首先会使用`pgrep`命令查找eef进程的pid,如果找到了eef进程,就执行`top`命令,并将输出重定向到`/tmp/test.txt`文件中。
然后,脚本会记录`top`命令的进程号,并进入一个循环,每秒钟检测一次eef进程是否存在。如果eef进程不存在了,就使用`kill`命令结束`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` 文件。
写一个shell脚本,持续查询eef进程的pid,直到找到eef进程,并执行top -n 600 -b -d 60 -p pid >/tmp/test
可以尝试以下脚本:
```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秒后继续查询。