Setelah menginstal Autodesk Smoke, saya memiliki dua proses httpd yang berjalan sepanjang waktu, dan saya ingin menghentikannya. Ketika saya gunakan sudo killall httpd
, mereka berhenti dan segera dimulai kembali. Activity Monitor menunjukkan bahwa proses induk launchd, tetapi bagaimana cara menentukan agen atau daemon mana yang memulai sehingga saya dapat menonaktifkannya?
launchctl list | grep httpd
menunjukkan hasil ini:
302 - 0x7f94ea700dd0.anonymous.httpd
92 - org.apache.httpd
Saya melihat /System/Library/LaunchDaemons/org.apache.httpd.plist
dan menunjukkan berikut ini. Anda dapat melihatnya diatur ke disabled
. launchd
Item lain dengan nama aneh tidak muncul dalam pencarian sistem file, jadi saya tidak tahu apa itu.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<true/>
<key>Label</key>
<string>org.apache.httpd</string>
<key>EnvironmentVariables</key>
<dict>
<key>XPC_SERVICES_UNAVAILABLE</key>
<string>1</string>
</dict>
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/httpd</string>
<string>-D</string>
<string>FOREGROUND</string>
</array>
<key>OnDemand</key>
<false/>
</dict>
</plist>
/usr/sbin/apachectl stop
tetapi saya masih tidak tahu cara menonaktifkannya setelah setiap reboot.launchctl unload
(walaupun saya tidak tahu apakah ini perlu Anda menentukan path ke plist), (ii) Jika ada di dalam loginitem Anda , gunakan alat System Preferences -> "Users and Groups" -> "Item Login" -> Hapus entri yang menyinggung jika ditemukan.Jawaban:
Anda dapat menerima output
launchctl list
untuk pid:Kemudian misalnya mencari file bernama
com.example.foo.plist
dalam~/Library/LaunchAgents/
,/Library/LaunchAgents/
atau/Library/LaunchDaemons/
.Sunting: kunci Dinonaktifkan dapat ditimpa
/var/db/launchd.db/com.apple.launchd/overrides.plist
, yang dimodifikasi ketikalaunchctl load -w
dijalankan sebagai root, atau di/var/db/launchd.db/com.apple.launchd.peruser.$UID/overrides.plist
, yang dimodifikasi ketikalaunchctl load -w
dijalankan sebagai pengguna.Jika plist Apache yang datang dengan OS X diaktifkan, Anda dapat menonaktifkannya dengan menjalankan
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
.sumber
sudo launchctl list
.launchctl list
sepertinya hanya mencakup pekerjaan yang dimuat oleh proses launchd pengguna.Ini memberi Anda daftar semua definisi pekerjaan yang dirujuk
httpd
.sumber
Disabled
key mungkin ditimpa olehoverrides.plist
file dalam / di bawah/var/db/launchd.db/
. Selain itu, pekerjaan yang dinonaktifkan mungkin masih dilakukan secara manual (tidak secara otomatis selama proses boot / login) dimulai.grep -rn apache /private/var/db/launchd.db
dan hanya menemukan satu hasil. Ini dinonaktifkan. Saya perlu mencari tahu bagaimana layanan ini sedang dimulai dan bagaimana cara menonaktifkannya.Perilaku launchctl telah berubah karena jika suatu layanan diaktifkan secara paksa, ia tidak akan mengubah konten source .plist, tetapi direktori terpisah (yang tidak boleh Anda modifikasi). Periksa halaman manual untuk launchctl, dan opsi "-w" di bawah perintah "load". Jadi, hanya memeriksa file tidak perlu memberi tahu Anda apakah itu dinonaktifkan atau tidak. Jelas tidak dinonaktifkan :)
Coba "launchctl unload -w org.apache.httpd.plist". Jika itu berhasil untuk Anda, maka Anda masih dapat memulainya sesuai permintaan dengan "launchctl start org.apache.httpd.plist"
Jika itu tidak berhasil, coba "launchctl remove org.apache.httpd.plist" yang tidak akan membiarkan Anda memulai secara manual.
sumber
Berdasarkan nilai label (misalnya
org.apache.httpd
), Anda dapat mencoba menemukan.plist
menggunakan perintah berikut:Untuk menemukan apa yang memulai proses, periksa PID induknya, mis
Atau gunakan
pstree
perintah dengan menentukan PID secara manual, missumber