写一个shell脚本,查询eef进程的pid,并执行top -n 600 -b -d 60 -p pid >/tmp/test。txt 如果检测到eef不存在了,就结束top命令
时间: 2023-12-10 11:40:06 浏览: 135
可以尝试使用以下的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,直到找到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秒后继续查询。
写一个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` 命令后自动退出。
阅读全文