为什么在 ps 程序输出中看不到我的脚本?

Why can't I see my script on ps program output?

我有一个简单的脚本 (x.sh):

echo $$
sleep 60

当我 运行 这个和 "ps -ef | grep x.sh" 我什么也得不到。 运行 "ps -ef | grep " 我得到:

jsm_adm+  7695  5700  0 12:25 pts/0    00:00:00 -bash
jsm_adm+  7696  7695  0 12:25 pts/0    00:00:00 sleep 60
jsm_adm+  7698  5841  0 12:25 pts/1    00:00:00 grep --color=auto 7695

如果我在第一行添加“#!/bin/bash”x.sh,那么我会得到:

jsm_adm+  7693  5700  0 12:25 pts/0    00:00:00 /bin/bash ./x.sh
jsm_adm+  7694  7693  0 12:25 pts/0    00:00:00 sleep 60
jsm_adm+  7701  5841  0 12:25 pts/1    00:00:00 grep --color=auto 7693

如果用户没有将 hashbang 作为他们脚本的第一行,我有没有办法发现 "x.sh" 是 运行ning?另外,“-bash”在这种情况下是什么意思?

因为您在此 x.sh 文件中没有 bash 脚本。问题正是您描述的主题标签 #!/bin/bash。如果您不将它放入您的文件中,bash 不会将您的文件解释为 bash 脚本。如果您想了解更多,可以导航至此 guide 并查看。

在你的情况下发生的情况是没有主题标签,这两个命令被解释为你直接在 shell 中输入它们,你可以在你看到程序时在第一个 ps 输出中观察到sleep(60).