Oto proces, który chcę zabić:
sooorajjj@Treako ~/Desktop/MerkMod $ sudo netstat -tunap | grep :80
tcp6 0 0 :::80 :::* LISTEN 20570/httpd
Istnieje kilka sposobów sprawdzenia, który uruchomiony proces używa portu.
Użycie utrwalacza da PID (y) wielu wystąpień związanych z portem nasłuchującym.
sudo apt-get install psmisc
sudo fuser 80/tcp
80/tcp: 1858 1867 1868 1869 1871
Po dowiedzeniu się, możesz zatrzymać lub zabić proces (y).
Możesz również znaleźć PID i więcej szczegółów za pomocą lsof
sudo lsof -i tcp:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1858 root 6u IPv4 5043 0t0 TCP ruir.mxxx.com:http (LISTEN)
nginx 1867 www-data 6u IPv4 5043 0t0 TCP ruir.mxxx.com:http (LISTEN)
nginx 1868 www-data 6u IPv4 5043 0t0 TCP ruir.mxxx.com:http (LISTEN)
nginx 1869 www-data 6u IPv4 5043 0t0 TCP ruir.mxxx.com:http (LISTEN)
nginx 1871 www-data 6u IPv4 5043 0t0 TCP ruir.mxxx.com:http (LISTEN)
Aby ograniczyć się do gniazd nasłuchujących na porcie 80 (w przeciwieństwie do klientów łączących się z portem 80):
sudo lsof -i tcp:80 -s tcp:listen
Aby zabić ich automatycznie:
sudo lsof -t -i tcp:80 -s tcp:listen | sudo xargs kill
-k
przełącznik, który zabija wszystkie pasujące procesy i-i
zabija interaktywnie (monitując o każdy z nich).Oto oneliner, który pokazuje polecenie do uruchomienia:
Zastąp
echo
przez,sudo
aby proces został zabity.źródło
echo
nasudo
80
.Trzy opcje wystawianie otwarte porty są oferowane w JSH „s
whatisonport
:Wolę,
netstat
ponieważ jest szybki, zwięzły i może wyświetlać porty otwarte przez innych użytkowników. (Chociaż nadal będzie potrzebował uprawnień administratora / użytkownika, aby wyświetlić listę nazw i PID takich procesów).Wyjścia
W
grep
dwóch przypadkach można użyć tylko portu lokalnego i pomiń otwarte połączenia ze zdalnym portem 80. (Alternatywą byłoby użycie-l
znetstat
lub zlsof
użyciem-sTCP:LISTEN
, ale podobają mi się greps powyżej, ponieważ będą przechwytują również połączenia wychodzące z danego portu, które czasami mogą być interesujące.)Z
lsof
używamy-P
, aby wyświetlić:80
zamiast:http
aby grep możliwe. Te-S 2
siły opcjalsof
do wykonania w krótkim czasie.Zabicie procesu
Zakładając, że chcemy użyć
netstat
, możemy pobrać PID w następujący sposób:I moglibyśmy nawet przekazać te PID do
kill
:Jednak często występuje błąd fałszywie dodatni podczas używania wyrażeń regularnych, więc polecam po prostu przyjrzeć się wyjściowemu wynikowi,
netstat
a następnie ręcznie zdecydować, czy uruchomić:Zobacz też
Mam inny skrypt o nazwie,
listopenports
który może być interesujący.źródło
Dowiedziałeś się już, który proces zabić: jest to numer procesu,
20570
a jego plik binarny ma nazwęhttpd
zapisaną na końcu wiersza wynikunetstat
. Możesz go zabić według numerukill 20570
lub imienia,killall httpd
ale nie poleciłbym tego zrobić w ten sposób.Porty mniejsze niż 1024 mają standardowe zastosowanie (normalnie), możesz sprawdzić te i wiele innych
less /etc/services
. Wpis dotyczący portu 80 jest nawet komentowany:Więc najprawdopodobniej jest to serwer WWW. Nazwa masz jest
httpd
iman httpd
powinno dać dużą wskazówkę, że jest to binarny, który pasuje Apache. Apache jest jednym z dużych graczy, ma kilka wygodnych programów do zarządzania, ale nie potrzebujesz ich do zwykłej akcji start / stop.Masz Mennicę? Z normalnym pulpitem? Następnie spójrz w
Control Center
dółSystem
i kliknijServices
. Musisz być administratorem, aby cokolwiek tam zrobić. Przewiń w dół, aż znajdziesz coś o nazwie „serwer WWW” (mam lighttpd zamiast Apache i nie wiem dokładnie, jak wyglądałby wpis Apache) i odznacz to.Jeśli chcesz tylko tymczasowo go zatrzymać, spróbuj w konsoli
i zacznij od
sudo service start httpd
.service --status-all
zwraca listę wszystkich usług, któreservice
wie i może obsłużyć. Skrót do restartu usługi (czyli: zatrzymać i uruchomić go w tej kolejności) toservice --full-restart SERVICE
zSERVICE
bycia nazwą usługi, np .:httpd
w przypadku Apache.Większość programów, z którymi się znajdujesz,
netstat
można obsługiwać w ten sposób. Niektóre nie mogą, a niektóre nawet nie mają strony podręcznika, ale są one rzadkie.źródło
Jest na to prosty sposób. Najpierw sprawdź, który proces używa portu 80 przez netstat :
Teraz masz nazwę procesu i zabij proces za pomocą polecenia killall :
źródło
killall
bez wyjaśnienia lub ostrzeżenia.