#!/bin/bash # 持续查询 eef 进程的 pid while true do #查询进程pid eef_pid=$(pgrep eef) if [ -n "$pid" ]; then # 执行 top 命令,输出到 /tmp/test.txt top -b -d 60 -p "$eef_pid" >/tmp/test.txt # 记录top命令的进程号 top_pid=$! break fi #暂停1s后继续查询 sleep 1 done # 检测eef进程是否存在 while [[ -e /proc/$eef_pid ]] do sleep 1 done # 如果eef进程不存在了,就结束top命令 kill -9 $top_pid exit 结尾的exit为什么没有生效
时间: 2023-12-14 07:36:49 浏览: 37
这是因为 exit 命令只会终止当前 shell 进程,而不会终止在当前 shell 进程中启动的子进程。在你的脚本中,top 命令是在一个子进程中执行的,因此即使在该子进程中执行了 exit 命令,也不会终止主进程。如果你希望在 top 命令执行完毕后立即终止脚本,可以在执行 top 命令时使用 exec 命令将子进程替换为 top 命令,并在 top 命令执行完毕后直接退出脚本,例如:
```
#!/bin/bash
# 持续查询 eef 进程的 pid
while true
do
#查询进程pid
eef_pid=$(pgrep eef)
if [ -n "$eef_pid" ]; then
# 执行 top 命令,输出到 /tmp/test.txt
exec top -b -d 60 -p "$eef_pid" >/tmp/test.txt
fi
#暂停1s后继续查询
sleep 1
done
# 如果 top 命令执行完毕,就直接退出脚本
exit
```
这样,在 top 命令执行完毕后,脚本就会立即退出,不需要再使用 kill 命令终止 top 进程了。
相关问题
#!/bin/sh #!/bin/bash #!/bin/ksh 用哪个比较好
在选择使用哪个shell时,需要考虑以下几个因素:
1. 兼容性:`#!/bin/sh`是最通用的shell,几乎所有的Unix/Linux系统都有sh。而`#!/bin/bash`和`#!/bin/ksh`则需要在系统中安装bash或ksh才能使用。如果需要编写可移植的脚本,建议使用`#!/bin/sh`。
2. 功能:bash和ksh都比sh功能更强大,支持更多的特性和语法。如果需要使用更高级的特性,建议使用bash或ksh。
3. 性能:ksh比bash和sh更快,但差别不是很大。如果需要执行大量的脚本或需要更高的性能,建议使用ksh。
综上所述,选择使用哪个shell取决于你的具体需求。如果需要编写可移植的脚本,建议使用`#!/bin/sh`;如果需要使用更高级的特性,建议使用bash或ksh;如果需要更高的性能,建议使用ksh。
# !/bin/sh 和# !/bin/bash
#!/bin/sh 和 #!/bin/bash 是脚本文件中的特殊注释行,用于指定解释器执行脚本。
#!/bin/sh 是指定使用默认的shell解释器来执行脚本,通常是Bourne shell或其兼容版本。
而#!/bin/bash 则指定使用Bash shell来执行脚本。
在引用中,将mybash_1.sh的第一行改为#!/bin/sh,然后执行脚本时,会使用默认的shell解释器执行脚本。而在引用和引用中,将脚本的第一行改为#!/bin/bash,这样执行脚本时会使用Bash shell来解释执行脚本。
需要注意的是,在引用中提到的/bin/sh相当于/bin/bash --posix,这意味着将使用Bash shell的posix模式来解释执行脚本。而在引用中提到,当执行完source命令时并没有继续执行,这是因为脚本中的#!/bin/bash这一行只是一个注释,并没有起到指定解释器的作用。
所以,使用不同的注释行可以指定不同的shell解释器来执行脚本,这也会影响脚本的执行结果和行为。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [#!/bin/bash和#!/bin/sh区别](https://blog.csdn.net/qianniuwei321/article/details/126428896)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [关于#!/bin/bash和#!/bin/sh详细解析](https://blog.csdn.net/ankang654321/article/details/88698880)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)