【问题标题】:Why can't I see my script on ps program output?为什么我在 ps 程序输出上看不到我的脚本?
【发布时间】:2015-02-04 12:38:52
【问题描述】:

我有一个简单的脚本(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

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

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”正在运行?另外,“-bash”在这种情况下是什么意思?

【问题讨论】:

    标签: bash pid ps


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的解释。我确信这不是我在旧版本的 BASH 或 KSH 中看到它的工作方式,但那是不久前的事了,内存不是那么好!
    • 是的,可能是过去处理方式不同,bash 脚本是使用扩展程序识别的。也可能是不同的外壳表现不同。就本 Q/A 而言,我很乐意提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-11-06
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多