Osaisiko joku kertoa, mitä ohjelman lopettaminen päätteestä oikein tarkoittaa.
Voin käynnistää Writerin taustalle päätteestä komennolla
lowriter -accept="socket,host=localhost,port=2002;urp;" &
Writerin ikkuna ilmestyy näytölle, ja kaikki näyttää toimivan normaalisti. Mutta kun lopetan Writerin päätteestä (kill), Writer-ikkuna toimii yhä. Jos käynnistän Writerin edustatyöksi, käynnistävä pääte lukkiutuu siksi ajaksi, kun Writer on käynnissä, mikä sekin on ihan normaalia. Jos sen sijaan keskeytän Writer-työn päätteeltä (ctrl-Z), Writer-ikkuna jumittuu.
Voisinko jollain tavalla lopettaa Writerin päätteestä, vaikka se ei olisikaan turvallista, koska tekstimuutokset voisivat sillion hävitä.
Kyllä sen pitäisi sammua kill komennolla, jos vain osaa antaa oikean id-numeron. Kun ohjelman käynnistää päätteestä taustalle, niin ne numerot jotka komentorivi näyttää (tyyliä
[1] 1234) ovat job-id ja prosessiryhmä-id.
Jos haluaa lopettaa ohjelman job-id:n perusteella niin numero täytyy antaa prosenttimerkin kanssa, eli:
kill %1
Jos haluaa lopettaa ohjelman prosessiryhmä-id:n perusteella niin numero täytyy antaa negatiivisena, ja jotta kill ei luule miinusmerkkiä jonkin kytkimen alkumerkiksi, pitää numero erottaa kytkimistä kahdella viivalla, eli:
kill -- -1234
Jos haluaa lopettaa ohjelman prosessi-id:n perusteella, täytyy kyseinen numero kaivaa ensin ps komennolla esiin, jonka jälkeen sen voi antaa sellaisenaan kill komennolle.
Jos ohjelma jostain syystä käynnistää useita eri prosesseja, niin kaikki prosessit voi sammuttaa joko yksitellen prosessi-id:n perusteella, tai sammuttamalla prosessiryhmän, tai sammuttamalla session johtajan. Nämä id-numerot voi kaivaa esille esim. komennolla
ps -j. PID on prosessi-id, PGID on ryhmä-id, ja SID on sessiojohtajan-id.
Oletuksena kill lähettää ohjelmalle signaalin numero 15 (symboliselta nimeltään TERM tai SIGTERM). Ohjelmat voivat jossain määrin itse määritellä miten ne reagoivat eri signaaleihin, joten ohjelma ei välttämättä heti sammu signaalin saatuaan. On kuitenkin olemassa signaali numero 9 (KILL tai SIGKILL) jota ohjelma ei voi ohittaa vaan se sammutetaan väkisin.
Jos siis pelkkä kill ei jostain syystä toimi, niin ohjelman voi sammuttaa väkisin komennolla kill -9 1234 tai kill -KILL 1234.
Jos haluan ajaa ohjelmaa, joka muuttaa Writerin tekstiä, miten voin laittaa sen skriptiin niin, että se aloittaa tekstin muuttelun vasta sitten, kun Writer on käynnistynyt kunnolla. Ajastaminen ei ehkä ole hyvä ajatus, koska Writerin käynnistysaika riippuu monista tekijöistä.
Teele
Kaikkien muiden ohjelmien näkökulmasta Writer on käynnistynyt sitten kun se on käynnistynyt. Ne eivät tunne mitään "käynnistynyt kunnolla" käsitettä, vaan käynnissä oleva Writer on käynnissä, se vaan tekee käynnissä ollessaan niin että se ensin valmistelee käyttöliittymää ym., jolloin ihmiskäyttäjän mielestä ohjelma ei ole "kunnolla" käynnistynyt. Tähän ei taida olla mitään muuta ratkaisua kuin se että Writerin pitää pystyä itse jotenkin viestittämään milloin se on "kunnolla käynnistynyt", eli jos Writerista löytyy jokin ominaisuus jolla kyseistä käynnistymisen astetta voisi kysellä niin silloin tämä voisi olla mahdollista. En tosin tiedä onko kyseistä ominaisuutta olemassa.