尝试:
sudo lsof -n -i :8080 -s TCP:LISTEN
前两列将是侦听端口8080的进程的名称和PID。
使用PID在“活动监视器”,“获取信息”中找到它,并注意它已打开的文件。它将打开一堆库,但列表中的高位将是可执行文件。
或者,从名称中查看它对应的服务
sudo launchctl list | grep theprocessname
例如,如果名称是httpd
,则上面的命令会告诉您服务名称org.apache.httpd
。如果你没有得到任何命中(因为它没有作为守护进程运行),请不要尝试sudo
。
请向launchctl询问有关该服务的更多信息。继续使用Apache作为示例:
sudo launchctl list org.apache.httpd
会告诉你的
{
"LimitLoadToSessionType" = "System";
"Label" = "org.apache.httpd";
"TimeOut" = 30;
"OnDemand" = false;
"LastExitStatus" = 0;
"PID" = 39660;
"Program" = "/usr/sbin/httpd";
"ProgramArguments" = (
"/usr/sbin/httpd";
"-D";
"FOREGROUND";
);
};
注意“Program”行,它为您提供可执行文件的路径。大部分信息来自/System/Library/LaunchAgents/org.apache.httpd.plist,该文件告诉Launch Services何时运行程序以及如何运行。
在端口8080上侦听的Web服务器不是来自Apple,因此它不在/ System / Library中。查看/ Library / LaunchDaemons,或者甚至在〜/ Library / LaunchAgents中(如果它只在您登录时运行)。(在端口8080上侦听不需要root权限,因此可以想象它可以像你一样运行,尽管它具有有趣的安全隐患。)
另一个要查看的位置是系统偏好设置→用户和组→登录项目。由于我们不知道如何将其设置为自动运行,因此可能是您没有通过将文件放在任何... Library / Launch *目录中来实现。