在Linux中,我们有命令/etc/init.d/process_name status
,这将指示进程/守护进程是正在运行还是已停止。
root@Ubu91032b-Bassu:~# /etc/init.d/ssh status
* sshd is running
root@Ubu91032b-Bassu:~#
我的问题是,Mac中是否有任何命令(如上所述)来检查守护程序/进程的状态?
答案 0 :(得分:16)
我认为,记录在案的“现代”方式是问launchctl
,launchd
的控制工具,Apple用来取代init
,inetd
, crond
还有一点:
~> 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
。