如果不知道.sh的名称呢,只知道它在哪个文件夹下,用的是./*.sh启动的,怎么知道他的进程呢?
时间: 2024-09-20 09:04:08 浏览: 32
Java系列:Window 10 安装 Weblogic 12.2.1.4.0并简单部署
如果你在一个目录下用通配符`./*.sh`启动了多个shell脚本,并想要知道它们对应的进程,可以这样做:
1. 使用`find`命令定位目录下的所有.sh脚本文件:
```
$ find /path/to/directory -name "*.sh"
```
这会列出所有该目录及其子目录下的.sh文件。
2. 然后结合`ps`命令,对每个脚本文件都执行一次搜索:
```
for file in $(find /path/to/directory -name "*.sh"); do
ps aux | grep "$file"
done
```
这会显示每个脚本运行的相关进程信息。
3. 为了更简洁地操作,你也可以使用`xargs`命令把`grep`的结果传给`ps`,但是需要注意`xargs`的选项,因为它可能会导致意外的结果:
```
find /path/to/directory -name "*.sh" -exec ps aux | grep {} \;
```
如果需要避免这种情况,最好先将结果保存到临时文件,然后再处理。
4. 如果想一次性看到所有.sh脚本相关的所有进程,可以使用`pgrep`查找以.sh为扩展名的进程ID:
```
pgrep -f "*.sh"
```
请注意,这些方法都需要有适当的权限访问这些脚本所在的目录。另外,由于脚本可能被多个进程共享,因此找到的结果可能并不精确,可能需要进一步确认。
阅读全文