Jak "odblokovat" porty?

Založil MrDojo, 15. 12. 2012, 20:41:23

Předchozí téma - Další téma

MrDojo

Zdravím,

mám problém... Mám server s Debianem (squeeze, pravidelně aktualizovaný pomocí příkazu apt get upgrade a update) a na něm Bukkit (Minecraft server - běží v terminálu). Ten Bukkit (web:bukkit.org) občas spadne a je potřeba ho manuálně nahodit.
Pokud spadne tak se řádně neukončí a nejde spustit bez restartu celého serveru-HW, protože port na kterém má běžet Bukkit je obsazený stále běžcím Bukkitem (na který se však nelze připojit a hrát)

Jsem ve správě serveru lama, takže mám v Debianu grafické prostředí - vím že to není dobré, ale jakmile si budu jistý v příkazech odstraním ho :)

Můje dotazy jsou:
1) Jak manuálně - tj. v terminálu ukončit běžící proces - vyčistit port (aby nebyl obsazený a mohl jsem ho znova použít)
2) Jak automaticky (asi pomocí Cronu, ale nevím jak) zjistit, zda Bukkit je funkční či nikoli a pokud tak ho znova spustit (ukončit a spustit)
3) Jak při startu (ne až po přihlášení) spustit aplikaci nebo jak zajistit start grafického prostředí bez připojeného monitoru - graf. prostředí nenaběhne a začne nabíhat, až když připojím monitor

Děkuji.
Dojo

Roman Horník

#1
Zabít se dá jednoduše, navíc je dost pravděpodobný, že tím uvolníš port.
Nejprve zkus aplikaci killnout jako normální uživatel:
killall bukkit
Jestli to nepůjde, budeš to muset zkusit jako root:
sudo killall bukkit
Jestli to nepůjde po dobrým, sestřel ho kanónem:
sudo kill -19 `pidof bukkit`; sudo kill -9 `pidof bukkit`
Pokud je totiž ve stavu, kdy se nedá zastavit, nedá se jen tak killnout, proto mu nejdřív pošleme SIGSTOP (19), až pak SIGKILL (9)
Jestliže se binárka, kterou spouštíš (a tedy i proces), jmenuje jinak, v příkazech nahraď bukkit správným názvem.

Ten program neznám, nevím tedy, jak zjistit, jestli funguje nebo ne. Možná by se to dalo vyřešit malým skriptíkem, (ana)cron/at se na to nehodí

Nikde neuvádíš, jaký prostředí používáš
Debian Sid/Experimental 64bit + Mate Desktop Environment
* CPU: Intel i5 3570
* GPU: NVIDIA GTX650 1GD5
* MB: Lenovo IH61M
* RAM: 16GiB Deutsche Demokratische Republik 3 @ 1600MHz

MrDojo


MrDojo

Ještě jeden dotaz..
Ten Bukkit je java aplikace. Na serveru mi jich běží více zároveň a když dám killall -9 java ukončím všechny. Jde nějak specifikovat, že chci ukončit jen jeden java proces?

Roman Horník

Proces můžeš ukončit právě podle jeho PID (ID procesu; nejstarší proces, init, má PID 1, čím novější, tím vyšší číslo).
PID každýho procesu zjistíš pomocí příkazu:
pidof proces
Vyleze z toho například:
uzivatel@debian:~$ pidof bukkit
13498 8192 4176 2048

To znamená, že bukkit má procesy s ID 13498, 8192, 4176 a 2048. A jestliže zlobí proces s ID 13498, zabijeme ho pomocí:
kill 13498
PID 8192, 4176 a 2048 zůstanou žít, kdežto 13498 zemře.
Debian Sid/Experimental 64bit + Mate Desktop Environment
* CPU: Intel i5 3570
* GPU: NVIDIA GTX650 1GD5
* MB: Lenovo IH61M
* RAM: 16GiB Deutsche Demokratische Republik 3 @ 1600MHz

MrDojo


Roman Horník

Debian Sid/Experimental 64bit + Mate Desktop Environment
* CPU: Intel i5 3570
* GPU: NVIDIA GTX650 1GD5
* MB: Lenovo IH61M
* RAM: 16GiB Deutsche Demokratische Republik 3 @ 1600MHz