TCP-порт 5901 открыт на моей машине и причиняет вред, и я хочу знать, какой процесс его открывает. Когда я запускаю, lsof -i -Pя вижу, что launchd — это процесс, который открыл порт.
Есть ли быстрый способ определить, какой файл plist запуска используется для открытия этого порта? Я бы предпочел не просматривать каждый список, упомянутый launchctl list.
Во-первых, открывается ли он системой launchd (идентификатор процесса 1, работающий от имени пользователя root) или пользователем launchd (работающий от имени пользователя)? Если это система launchd, вам нужен LaunchDaemon; если это пользовательский launchd, вам нужен LaunchAgent.
Предполагая, что это системный launchd, вы можете найти соответствующий LaunchDaemon следующим образом:
grep 5901 {,/System}/Library/LaunchDaemons/*
(примечание: если бы порт 5901 был указан в /etc/services, вам также пришлось бы искать его по имени и по номеру. Но это не так, так что вам не о чем беспокоиться.)
Также возможно, что LaunchDaemon был загружен из какого-то другого места; отследить это было бы запутанно, поэтому сначала начните с простой проверки.
Порт 5901 используется для VNC ( совместное использование экрана удаленного рабочего стола в OS X ), и по замыслу launchd фактически считывает все файлы конфигурации, загруженные на ваш Mac, а затем прослушивает порты, а не запускает программу, которая в конечном итоге будет получать сообщения через этот порт. .
В этом случае, поскольку вы видите только launchd, а не процесс screensharingd или ScreensharingAgent , вы можете сделать вывод, что launchd прослушивает в качестве прокси другой процесс, который в данный момент не запущен (или, возможно, еще не запущен).
Вы можете проверить это, отключив настройки общего доступа к экрану в Системных настройках или удалив любое другое программное обеспечение удаленного сервера VNC, которое у вас есть, а затем повторно изучив файлы lsof
.
bmike
grep
там. Хорошее обобщение для /etc/services .