Miten tapetaan sellainen prosessi, jonka numero ei ole tiedossa, mutta parametreissa on sana "xxx" ?
Eli voidaan ensin katsoa mikä numero on prosessilla: "ps -aux | grep xxx" Ja sitten tappaa se. Mutta onnistuuko tämä yhdellä komennolla?
Eli voidaan ensin katsoa mikä numero on prosessilla: "ps -aux | grep xxx" Ja sitten tappaa se. Mutta onnistuuko tämä yhdellä komennolla?
Vastaukset 5
Vanhimmat
pelkällä parametrilla. Jos tiedossa on ohjelman nimi, niin killall kyllä sen tappaa.
Ohjelman nimi on tiedossa, mutta on käynnissä useampi samanniminen prosessi ja ainoastaan parametrilla ne voi erottaa.
Katso saatko tästä kehiteltyä mitään. Luo tiedosto nimeltä killem ja liitä tämä teksti siihen:
#!/bin/bash
ps -eLf | grep firefox | grep 7695 >> kill.txt
kill `cut -c11-14 kill.txt`
Joudun tässä käyttämään esimerkkinä firefoxia joten sen tilalle tulee halutun ohjelma nimi, samoin minulla on tässä LWP eli säikeennumero jolla poimin yhden säikeen joukosta mutta sun täytyy poimia sillä "xxx" jutskalla se haluttu rivi. Tuo rivi tulostetaan "kill.txt" nimiseen tiedostoon josta PID poimitaan cut-komennolla. Huomaa että koska tuloste ei ole sarakemuotoista niin cutin kanssa ei voi käyttää -f optiota vaan on tyydyttävä merkkien poimimiseen, esimerkissä "cut -c11-14" poimitaan siis riviltä merkit 11-14 joissa on PID sulla se voi olla eri kohdassa jos käyttäjänimessä on enemmän kirjaimia eli tapauskohtaisesti numerointi.
Lopuksi sitten annetaan kill-komento poimitulle PID-numerolle.
Komento ajetaan komentoriviltä
./killem
mikäli sen voi ajaa userina.
Jos teet siitä aliaksen niin riittä pelkkä kirjain "k" jolloin k-kirjaimen enteröinti tappaa prosessin.
Kokeile jos saat tuolla rakennettu jotain hyödyllistä.
Tätä on turhaa kenenkään uteliaan kokeilla koska PID on aina erilainen eli tämä ei toimi tällaisenaan, tuo PID pitäisi aina poimia erikseen jos yksi prosessi haluttaisiin tappaa eikä tuossa olisi mitään mieltä, tämä toimii siis vain jos tuon LWP-numeron sijaan pystyy pistämään jonkin kiiteänä pysyvän arvon jota voi suodattaa grepillä.
Oli vain periaatteellinen esimerkki.
Tee pikku 3-rivinen bash-skripti:
etsittava_sana="$1"
sisaltaa_pidn=(`ps | grep "$etsittava_sana"`)
kill -KILL "${sisaltaa_pidn[0]}"
Käyttö:
bash skripti xxx
Käytä tätä omalla vastuulla... :)