如何检查Mac中进程/守护程序的状态(运行/已停止)?

时间:2010-08-07 12:25:09

标签: macos

在Linux中,我们有命令/etc/init.d/process_name status,这将指示进程/守护进程是正在运行还是已停止。

例如在Ubuntu中:

root@Ubu91032b-Bassu:~# /etc/init.d/ssh status  
 * sshd is running  
root@Ubu91032b-Bassu:~#

我的问题是,Mac中是否有任何命令(如上所述)来检查守护程序/进程的状态?

4 个答案:

答案 0 :(得分:16)

我认为,记录在案的“现代”方式是问launchctllaunchd的控制工具,Apple用来取代initinetdcrond还有一点:

~> sudo launchctl list | grep ssh
41032   -   0x100502860.anonymous.sshd
-   0   com.openssh.sshd

答案 1 :(得分:3)

是的,有一种方法可以在launchd / launchctl范例中执行此操作:

sudo launchctl bslist

将使用

为您提供所有已加载的启动进程的输出

A表示活跃。它正在运行

我不活跃。它不应该运行。它不应该独立运行,我希望你注意到我的语气不是最终的。但它不应该让你感到惊讶,我的意思是说。

D按需提供。现在没有运行,但可能是,因为它可以随时启动。

此外,如果你想要一个树状结构,那么你可以看到哪个过程是什么:

sudo launchctl bstree

你会得到

 A  com.apple.windowserver.active
    D  com.apple.DirectoryService.localonly
    com.apple.metadata.mds[46].subset.109 (Explicit Subset)/
        D  com.apple.Spotlight.ImporterWorker.89
        D  com.apple.Spotlight.ImporterWorker.i386.89
        A  com.apple.Spotlight.ImporterWorker.501
        D  com.apple.Spotlight.SyncScanWorker

这是流程及其状态的树。

如果你像我一样,你会想要使用here中的一些东西,因为你看起来可能会发现一些特殊的东西。

答案 2 :(得分:1)

要切换远程登录,请使用“系统偏好设置”=> “分享”=>通过用户界面“远程登录”启用SSH(有关详细信息,请参阅http://support.apple.com/kb/PH13759。)

通过SSH禁用远程登录(未选中):

$ sudo launchctl list com.openssh.sshd
launchctl list returned unknown response

通过SSH启用远程登录(已选中):

$ sudo launchctl list com.openssh.sshd
{
    "Label" = "com.openssh.sshd";
    "LimitLoadToSessionType" = "System";
    "OnDemand" = true;
    "LastExitStatus" = 0;
    "TimeOut" = 30;
    "Program" = "/usr/libexec/sshd-keygen-wrapper";
    "StandardErrorPath" = "/dev/null";
    "ProgramArguments" = (
        "/usr/sbin/sshd";
        "-i";
    );
    "inetdCompatibility" = {
        "Wait" = false;
    };
    "Sockets" = {
        "Listeners" = (
            file-descriptor-object;
            file-descriptor-object;
        );
    };
};

答案 3 :(得分:0)

您可以使用service shell命令实现此目的:

bash-3.2$ service
usage: service service command
       service --list
       service --test-if-configured-on service
       service --test-if-available service
bash-3.2$ service --test-if-configured-on ssh && echo "SSH running"
SSH running

该命令已在10.6以上的OS X版本(Snow Leopard)中删除。请改用launchctl