Zainstalowałem dnsmasq i teraz chcę móc uruchomić go z launchctl. Problem polega na tym, że za każdym razem, gdy uruchamiam aplikację launchctl, rozpoczyna się anonimowy proces zamiast używania określonej etykiety.
10247 - 0x100107c30.anonymous.dnsmasq
- 0 com.example.dnsmasq
Ale chcę, żeby tak było
10247 0 com.example.dnsmasq
Problem z anonimowym procesem polega na tym, że nie mogę go zatrzymać za pomocą launchctl. Kiedy biegnę
launchctl stop com.example.dnsmasq
anonimowy proces wciąż pozostaje żywy.
Oto mój plik właściwości:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.dnsmasq</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/sbin/dnsmasq</string>
<string>-p</string>
<string>2155</string>
<string>-R</string>
<string>-A</string>
<string>/.dev/127.0.0.1</string>
<string>-x</string>
<string>/usr/local/var/run/dnsmasq.pid</string>
</array>
<key>RunAtLoad</key>
<false/>
<key>KeepAlive</key>
<false/>
</dict>
</plist>
Masz pomysł, jak to naprawić?
Odpowiedzi:
To nie jest tak naprawdę
launchctl
tworzenie nowego procesu; najprawdopodobniejdnsmasq
sam. Jeślifork()
jest w tle,launchd
nie można powiedzieć; wtedy, gdy mówilaunchd
,launchd
tworzy dla niego anonimowy wpis. Upewnij się, żednsmasq
samo tło nie jest w tle.(Podana
-
dla zwykłegolaunchctl list
wyjścia wskazuje, żednsmasq
proces oryginalny został zakończony.)źródło