我写了一个简单的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不应该这样显示它?