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, amelyek listening.
  • 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, mint p1234.

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 a sudo
  • 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.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük