A hadoopot telepítem az Ubuntu rendszeremre. Amikor elindítom, azt jelenti, hogy a 9000-es port foglalt.
Azt használtam:
netstat -nlp|grep 9000
, hogy lássam, létezik-e ilyen port, és Ezt megkaptam:
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
De hogyan kaphatom meg a folyamatot tartó PID azonosítót?
Megjegyzések
Válasz
Linux rendszeren a kívánt információ megszerzéséhez root vagy a folyamat tulajdonosa kell, hogy legyen. Mint ilyen, egy másik felhasználóként futó folyamatok esetében a sudo
előkészítésre van leginkább szükség. Ezenkívül a modern Linux rendszereken az ss
eszköz erre használható:
$ sudo ss -lptn "sport = :80" State Local Address:Port Peer Address:Port LISTEN 127.0.0.1:80 *:* users:(("nginx",pid=125004,fd=12)) LISTEN ::1:80 :::* users:(("nginx",pid=125004,fd=11))
Ön ugyanazt a hívást is használhatja, amelyet jelenleg használ, de ne felejtse el sudo
:
$ sudo netstat -nlp | grep :80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 125004/nginx
használja az lsof:
$ sudo lsof -n -i :80 | grep LISTEN nginx 125004 nginx 3u IPv4 6645 0t0 TCP 0.0.0.0:80 (LISTEN)
megjegyzéseket
- Megjegyzés: OSX alatt a opció a protokoll helyett a folyamatért felel. Lásd ezt a kérdést
- @BryanP az operációs rendszer Ubuntu-t kért, hogy ' s kissé irreleváns …
- @AdamB Hacsak nem érkezett ide egy Mac-felhasználó, aki
Finding the PID of the process using a specific port
- Ez a válasz valószínűleg javulna, ha a
sudo
szükségletet a tetejére állítaná. - @MrOnyancha Használja a rövid (-t) opciókat –
lsof -ti tcp:80
Válasz
Használhatja a lsof
hasznos ity. Gyökérszintűnek kell lennie.
# lsof -i :25 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME exim4 2799 Debian-exim 3u IPv4 6645 0t0 TCP localhost:smtp (LISTEN) exim4 2799 Debian-exim 4u IPv6 6646 0t0 TCP localhost:smtp (LISTEN)
Megjegyzések
- Ez a parancs a
established
kapcsolatok, nem csak olyan folyamatok, amelyeklistening
. - Nem feltétlenül rootok. Azok számára, akik csak PID-t szeretnének kapni, megteheti
lsof -i :25 -Fp
, amely olyan kimenetet produkál, mintp1234
.
Válasz
“CentOS 7 minimal” -t használok, amelynek nincs netstat
sem lsof
. De sok linux disztribúció rendelkezik a socket Statistics paranccsal (azaz ss
).
Itt van egy példa a végrehajtásra:
# ss -tanp | grep 6379 LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=2531,fd=4))
megjegyzések
- Lásd még:
ss -pntl 'sport = :6379'
Válasz
Használhatja a fuser
szót is:
fuser -v -n tcp 22
A kimenet:
USER PID ACCESS COMMAND 22/tcp: root 598 F.... sshd
Megjegyzések
- Nem ' t működik fuser -v -n tcp 80 , még én is megpróbálom sudo-val
- Megjegyzés: Ehhez
sudo
ha az elkövetési folyamatot is asudo
- szóval kezdték. A Linux parancsai általában nem fognak ' t adni a root / sudo által elindított folyamatokról, kivéve, ha a parancsot Sudo-val futtatják. Ez akkor is igaz, ha a parancsnak általában nem kell a sudo a megfelelő futtatáshoz.
Válasz
A parancs futtatása a sudo
paranccsal megkapja a PID
fájlt. A fejlesztőgépemen a következőket kapom:
$ netstat -nlp | grep 8080 tcp6 0 0 :::8080 :::* LISTEN - $ sudo netstat -nlp | grep 8080 tcp6 0 0 :::8080 :::* LISTEN 16449/java
És ahogy más válaszokban említettük, használhatja a ss
ill. a lsof
parancsokat.
Megjegyzések
- a parancs futtatása
sudo
folyamatazonosító megjelenítése - De mi van akkor, ha a
sudo netstat -nlp | grep 34157
továbbra is a-
-t jeleníti meg PID helyett?
Válasz
Olyan Yocto Linux rendszeren dolgozom, amely korlátozott számú rendelkezésre álló Linux eszközzel rendelkezik. Sikerült megtalálni egy futó port folyamata a következő parancsokkal (ahol megtalálom a folyamatot az 1883-as port használatával):
root@root:~# netstat -lt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:hostmon 0.0.0.0:* LISTEN tcp 0 0 localhost.localdomain:domain 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:9080 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN tcp 0 0 :::hostmon :::* LISTEN tcp 0 0 localhost:domain :::* LISTEN tcp 0 0 :::ssh :::* LISTEN tcp 0 0 :::1883 :::* LISTEN root@root:~# fuser 1883/tcp 290 root@root:~# ps | grep 290 290 mosquitt 25508 S /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf 12141 root 8444 S grep 290
Amint azt a fentiekből láthatjuk, “az a program, /usr/sbin/mosquitto
, amely az 1883-as portot használja.
netstat
parancs sok operációs rendszerben működhet annak érdekében, hogy ezt megkapja, csak meg kell találnia azokat az argumentumokat, amelyek biztosítják, hogy az összes ismert megnyitott port mentén a pideket jelenítse meg.