По сути, есть некоторые системные процессы, которые я хочу предотвратить. Если я принудительно завершу их работу, они просто перезапустятся. Как мне предотвратить их запуск / перезапуск.
Прежде чем вы скажете, что мне не следует связываться с системными процессами: я полностью понимаю возможные последствия.
Это зависит от того, как процесс запускается и перезапускается. Большинство системных процессов обрабатываются с помощью launchd; если это так с процессом, от которого вы хотите избавиться, вам нужно найти элемент launchd, который управляет им (это будет один из файлов .plist в / System / Library / LaunchDaemons или / Library / LaunchDaemons) и отключить его с помощью sudo launchctl unload /path/to/launchd/item.plist
. Если вы хотите сделать это постоянным (т.е. оставаться отключенным даже при перезагрузке), добавьте флаг -w: sudo launchctl unload -w /path/to/launchd/item.plist
. Вот пример поиска и завершения процесса krb5kdc:
# First, find the pid of the running process:
$ ps -axwww | grep [k]rb5kdc
3143 ?? 0:33.38 /usr/sbin/krb5kdc -n
# Now find label of the the launchd item controlling it
$ sudo launchctl list | grep 3143
3143 - edu.mit.Kerberos.krb5kdc
# Now find the .plist file that defines that item label:
$ grep -l edu.mit.Kerberos.krb5kdc /Library/LaunchDaemons/* /System/Library/LaunchDaemons/*
/System/Library/LaunchDaemons/edu.mit.Kerberos.krb5kdc.plist
# Finally, disable the launchd item (permanently):
$ sudo launchctl unload -w /System/Library/LaunchDaemons/edu.mit.Kerberos.krb5kdc.plist