lauantai 28. joulukuuta 2024

Kuinka tappaa zombeja tosielämässä

Kun käyttöjärjestelmässä sovellusprosessi on luonut aliprosessin eli lapsiprosessin, niin tämä voi joskus kuolla siten, ettei äitiprosessi saakaan tietää lapsensa kuolemasta. Näin lapsiprosessi jää kuolleena zombiprosessina "elämään" eli se varaa resursseja itselleen aivan turhaan muulta järjestelmältä.

Joutessani opettelin jokin aika sitten myös tappamaan zombiprosesseja Linuxissa. Käyttämäni Linuxin levitysversio on Linux Mint 22. Yllättävää kyllä, niin zombeja löytyi kaksin kappalein, kun testasin asiaa.

Linux Mintissä toki on graafisella käyttöliittymällä varustettu sovellus nimeltä Järjestelmän valvonta. Kun laittaa sen asetuksista näkymään myös "tilan", niin sovellus kertoo myöskin siitä, jos pyörimässä on zombiprosesseja.

Mutta koska olin törmännyt hienoon englanninkieliseen artikkeliin otsikolla How to Find and Kill Zombie Process in Linux, päätin käyttää etsintäoperaatioon Linuxini komentoriviä (useita nimiä käytetään samalle asialle: komentorivi = pääte = terminaali).

Artikkeli kertoi, että zombiprosessien listaaminen, jotta nähdään niiden ID, tapahtuu näpyttelemällä komentorivillä seuraava komento:

ps aux | awk '$8 ~ /^[Zz]/'

Jos käsky antaa tulokseksi, että zombeja on käynnissä, kunkin zombin ID-numero näkyy rivillä heti käyttäjänimen jälkeen.

Pelkän lapsizombin tappaminen ei riitä, vaan myös äitiprosessi on tapettava, sillä muuten äiti käynnistää zombin uudestaan.

Ja niinpä seuraavaksi selvitetään sitten zombiprosessin äitiprosessi seuraavalla käskyllä:

ps -o ppid= -p <child_id>

Tuossa kohta <child_id> korvataan alku- ja loppuväkästä myöten ID-numerolla.

Kumpikin toimenpide voidaan myös toteuttaa yhdellä ainoalla loitsulla:

ps -A -ostat,pid,ppid | grep -e '[zZ]'

Ja kun on näin selvitetty äitiprosessi, se voidaan tappaa seuraavalla loitsulla:

kill -9 <parent_process_ID>

Se on niin kiva.

PS eli bonusasiaa:

Ennen wanhaan olin saattanut kokeilla erilaisia Linuxin levitysversioita tietokoneessa nk. kelkkasysteemillä. Eli otin tietokoneesta kelkan ulos, kiinnitin siihen kiintolevyn, työnsin kelkan takaisin sisään ja asensin kelkassa olevalle kiintolevylle jonkin Linuxin levitysversion.

Viime aikoina olen harrastanut samaa virtualisoimalla. Virtualisoinnissa käytän tietokoneessani olevaan käyttöjärjestelmään asentamaani erityistä virtualisointiohjelmistoa. Se tarkoittaa sitä, että voin käyttöjärjestelmän sisällä ajaa toista käyttöjärjestelmää siten, ettei kumpikaan häiritse toista. Näin minun on helpohko kokeilla erilaisia käyttöjärjestelmiä.

Isäntäkäyttöjärjestelmältä tämä vaatii hieman ylimääräisiä resursseja, koska sen pitää olla käynnissä samaan aikaan kun harjoittaa virtualisointia. Tarvitaan ylimääräisiä prosessointitehoja, ylimääräistä käyttömuistia (RAM) ja ylimääräistä kiintolevytilaa.

Kun virtualisoin jotain Linuxin levitysversiota, tai vaikkapa jopa laillista Windowsin näköiskäyttöjärjestelmää ReacOSia, joudun ihan normaaliin tapaan asentamaan sen, ja tämä tapahtuu käyttämäni virtualisointiohjelmiston ikkunassa.

Kun asennus on saatu valmiiksi, voin periaatteessa käyttää asentamaani käyttöjärjestelmää kuin se olisi tavalliseen tapaan asennettu tietokoneelle (mitä se ei ole).

On olemassa vuoden 2024 huhtikuussa julkaistu tuore ilmestys virtualisointiohjelmistomarkkinoilla nimeltään Gnome Boxes. Se on älyttömän yksinkertainen käyttää, ja se onkin peräisin yliyksinkertaistavasta Gnome-työpöytäympäristöprojektista.

Ihastuin siihen, koska se toimi kuin junan vessa, vaikkakaan sitten siinä ei voi kokemusta isommin mitenkään viilata.

Mutta Gnome Boxes ei jostain syystä ole pelittänyt viime aikoina Linux Mintissäni. Voi olla, että vika iski vuotemme 2024 kesällä saapuneen Mintin version 22 myötä. Toivottavasti muutaman viikon sisällä ilmestyvä jakeluversion pisteversio Linux Mint 22.1 korjaa asian. Usea muukin ihminen näyttää ärsyyntyneen samasta asiasta.

En saanut toimimaan Boxesia myöskin Mintin käyttäjäfoorumin ohjeilla. Jokin osa ei voinut saapua järjestelmääni, koska se ei tukenut Mint 22:ta.

Mutta Gnome Boxes on vasta tullut maailmaan. Odotanpa korjauksia. Johonkin ne tulevat.

Keksin sitten hyvän ainakin väliaikaisen ratkaisun ongelmaani nimeltä Quickgui. Kyseessä on toimiva käyttöliittymä Quickemulle, joka taas toimii QEMU:n päällä. Turha tässä on enempää selittää. Joutui näkemään pikkaisen enemmän vaivaa saadakseen ratkaisun toimimaan

Mutta saatuani sen asennettua olen kokeillut sen avulla jo useampaa eri Linuxin levitysversiota. Jokaisella pitää olla jokin harrastus.

Quickgui-sovelluksessa klikkaa ensin kohtaa "Create new machines", ja sitten sovellus listaa vaihtoehdot, joista voi valita, ja sitten se imuroi internetistä käyttäjän haluaman käyttöjärjestelmän. Jostain syystä kaikista tarjolla olevista käyttöjärjestelmistä ei löydy kaikkein uusinta versiota. Voi olla, että sellaisten käyttöjärjestelmien valmistajat eivät olleet itse prosessissa mukana riittävän aktiivisesti.

Mielenkiintoista kyllä, niin listalta löytyvät myös sellaiset vaihtoehdot kuin Windows ja Windows Server. Imurointi voi kestää vain varttitunnin tai se voi kestää kaksi tuntia.

Kun se on tehty, klikkaa kohtaa "Dismiss", jolloin pääsee takaisin alkuvalikkoon. Sitten klikkaa kohtaa "Manage existing machines". Ja ko. vaihtoehdon kohdalla klikkaa Play-näppäintä, ja niin asennus alkaa. Ja kun on tehnyt sen, ja kun käyttöjärjestelmän asennusohjelma on suljettu, niin saman napukan painaminen käynnistää sitten aina jatkossa asennetun käyttöjärjestelmän.

Mutta toki toivoisin, että Gnome Boxes alkaisi jälleen pelittää.

...

PS. 3.1.2024:

Jostain kumman syystä Gnome Boxes on jälleen pelissä mukana! Mitähän tässä nyt on tapahtunut? Mutta en valita.

Quickgui on muuten siitä ikävä sovellus, että sillä ei voi käyttää itse imuroimiaan levykuvia.

Ei kommentteja:

Lähetä kommentti