小编ssh*_*980的帖子

为什么 pstree 显示我的脚本的名称而不是解释它的 shell 的名称?

我写了一个简单的shell脚本如下:

#!/bin/bash
sleep 90
Run Code Online (Sandbox Code Playgroud)

运行此 shell 后,我pstree在单独的 shell 中运行以查看进程树结构。

这是我看到的

-gnome-terminal-+-bash---sleepy.sh---sleep
Run Code Online (Sandbox Code Playgroud)

我期待这会像

-gnome-terminal-+-bash---bash---sleep
Run Code Online (Sandbox Code Playgroud)

为什么 shell 脚本被 pstree 表示为一个进程?该ps命令正确显示正在执行的命令为

10150  8771  0 08:13 pts/1    00:00:00 /bin/bash ./sleepy.sh
Run Code Online (Sandbox Code Playgroud)

这里的过程是 bash,而 sleepy.sh 是它的参数(这对我来说很有意义)。在我看来,一个进程必须是一个可执行链接格式的二进制文件 (ELF)。Bash 是一个 ELF 可执行文件,但 shell 脚本不是,因此我认为pstree不应该这样显示它?

shell process

3
推荐指数
1
解决办法
638
查看次数

标签 统计

process ×1

shell ×1