开发者

How to check the status(running/stopped) of a process/daemon in Mac?

In Linux, we have the command 开发者_开发百科/etc/init.d/process_name status, this will give whether the process/daemon is running or stopped.

For Example In Ubuntu:

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

My question is, is there any command (like above) in Mac to check the status of a daemon/process?


The documented “modern” way would, I believe, be to ask launchctl, the controlling tool for launchd, which Apple uses to replace init, inetd, crond and a bit more:

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


To toggle remote login use the "System Preferences" => "Sharing" => "Remote Login" via the user interface to enable SSH (see http://support.apple.com/kb/PH13759 for more).

Remote Login via SSH Disabled (Unchecked):

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

Remote Login via SSH Enabled (Checked):

$ 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;
        );
    };
};


Yes there is a way to do this within the launchd/launchctl paradigm:

sudo launchctl bslist

will give you output of all loaded launchd processes, with

A for active. It's running

I for inactive. It's not supposed to run. It should not run on it's own, and I hope you notice how my tone is not definitive. But it's not supposed to surprise you, I should mean off.

D for on demand. Not running now, but could be, since it could have started at any time.

Also, if you want a treelike structure, so you can see which process fathered what:

sudo launchctl bstree

You'll get

 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

Which is a tree of the processes and their states.

If you are anything like me, you'll be wanting to use some stuff from here because you might find some peculiar things when you look.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜