задание запущено не в списке, но все еще выполняется

296
dgig

У меня есть запущенная работа, которая запускается каждые две минуты, но ее нет sudo launchctl list.

Я менял plist-файл, как имя файла, так и ключ Label. Я не выгрузил его раньше, но загрузил только что названный файл. Возможно, именно это и вызвало это, но я все еще ожидаю этого в списке.

Но это никогда не в sudo launchctl listсписке. Я тоже проверил cronкак хорошую меру.

Я проверил других пользователей. Я вижу скрипт, который запускает задание запуска каждые две минуты ps aux. Есть ли способ, который я могу использовать, ps auxчтобы увидеть, какой процесс запуска его породил?

Что еще я могу сделать, чтобы остановить это? Перезапуск сервера должен быть последним средством, как и перезапуск launchd, но если это единственный вариант, то это единственный вариант.

Там тоже есть этот вопрос, но никто не ответил на него: https://apple.stackexchange.com/questions/240550/weird-launchd-behaviour-process-still-running-after-deleting-launchd-file-and-r

0

1 ответ на вопрос

1
SaxDaddy

Есть ли способ, который я могу использовать, ps auxчтобы увидеть, какой процесс запуска его породил?

Если вы используете ps -ef, первые 3 записи в каждой строке сообщают вам UID, PID и Parent PID процесса. Вот пример:

$ ps -ef|head -2 UID PID PPID C STIME TTY TIME CMD 0 1 0 0 30May16 ?? 25:05.63 /sbin/launchd 

Между этими тремя вы должны быть в состоянии выяснить источник процесса, который вы ищете. Вот довольно очевидный пример, на который я смотрю softwareupdated(демон softwareupdate):

Сначала я ищу процесс, а затем подтверждаю его, используя ps -ef <some_PID>. У меня появилась привычка прекращать поиски, grep -v grepчтобы исключить grep из моих результатов

$ ps -ef|grep softwareupdated|grep -v grep 200 3711 1 0 30May16 ?? 6:45.49 /System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdated $ ps -ef 3711 UID PID PPID C STIME TTY TIME CMD 200 3711 1 0 30May16 ?? 6:45.49 /System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdated 

Родительский PID пронумерован, 1поэтому я проверяю, что:

$ ps -ef 1 UID PID PPID C STIME TTY TIME CMD 0 1 0 0 30May16 ?? 25:08.24 /sbin/launchd 
отлично! Работал как шарм. И оказалось, что это было под другим пользователем - я предполагал, что `sudo launchctl list` покажет все, но это для каждого пользователя. Живи и учись. Спасибо за вашу помощь! dgig 7 лет назад 0

Похожие вопросы