Discussion:
Ohjelman käynnin tarkkailu.
(too old to reply)
Juha Lyytikäinen
2005-01-04 22:38:58 UTC
Permalink
Laitoin tuossa Manrake 10.1 serverille yhden graafisessa
ympäristössä (TWM) pyörivän ohjelman jonka pitäisi olla aina
käynnissä. Parin päivän jälkeen tuo oli kaatunut dumpannut coren.
Ohjelman dokuissa mainittiin memory leakin mahdollisuus.

Mikä olisi hyvä tapa tarkkailla pyöriikö ohjelma?
Mahdollisesti voisi tarkkailla myös paljonko muistia ohjelmalla
on käytössä ja restartata se jos muisti täyttyy?
Ari Makela
2005-01-05 08:38:46 UTC
Permalink
Post by Juha Lyytikäinen
Mikä olisi hyvä tapa tarkkailla pyöriikö ohjelma?
Sievintä on jos ohjelmata voi kysyä sen tilaa. Graafiselta kikkareelta
tuskin voi :/ Käytännössä todennäköisesti ainoa keino on kirjoittaa
ohjelman PID tiedostoon ja kirjoittaa cronityö, joka käy katsomassa,
että ko. pid on hengissä ja että ko. PIDillä on oikea ohjelma (tuon
näkee vaikkapa /proc/PID/cmdlinestä tai järkevämmin

$ ps --no-headers -o cmd 2684
emacs20

Pidin saat talteen näin:

1) Käynistämällä ohjelman skriptistä ja käskemällä exec:

#!/bin/sh

echo $$ > /tmp/progname.pid
exec progname

Tästä en tykkää, koska se ei toimi Solariksessa, jossa execissä ei PID
periydy. Linuxissa kyllä ainakin vielä 2.4:ssa. 2.6:ssa en ole
testannut.

2) Puhaltamalla Debianista start-stop-daemon -nimisen ohjelman.
Post by Juha Lyytikäinen
Mahdollisesti voisi tarkkailla myös paljonko muistia ohjelmalla
on käytössä ja restartata se jos muisti täyttyy?
ps:n sopivilla vivuilla, mutta käyttiksessä, joka tukee jaettua muistia
tämä ei ole ihan triviaalia. ps:n manuaalisivun vipu -o sekä kohta
"STANDARD FORMAT SPECIFIERS".

Esimerkki:

$ ps --noheaders -p 2684 -o size
2768
--
Ari Makela no escaping it -
***@arska.org I must step on fallen leaves
http://arska.org/hauva/ to take this path (Suzuki Majoko)
Sami Ketola
2005-01-05 13:00:51 UTC
Permalink
Post by Ari Makela
#!/bin/sh
echo $$ > /tmp/progname.pid
exec progname
Tästä en tykkää, koska se ei toimi Solariksessa, jossa execissä ei PID
periydy. Linuxissa kyllä ainakin vielä 2.4:ssa. 2.6:ssa en ole
testannut.
ÖH? siis haluaisit execin ajavan progname-softan samalla pid:llä
kuin scriptinkin? HÄH? Eikait kukaan oikeasti tommosen luule toimivan.
Missään.

#!/bin/ksh

exec progname &
pid=$!
echo $pid > /tmp/progname.pid
wait $pid

Sami
--
.signature: no such file or directory
Ari Makela
2005-01-05 13:14:38 UTC
Permalink
Post by Sami Ketola
ÖH? siis haluaisit execin ajavan progname-softan samalla pid:llä
kuin scriptinkin? HÄH? Eikait kukaan oikeasti tommosen luule toimivan.
Missään.
En halua, mutta linuxissa nämä tulostavat saman pidin:

$ ./foo.sh
6060
foo
6060
bar

0 ***@laphroaig:/tmp
$ cat foo.sh bar.sh
#!/bin/sh

echo $$
echo foo
exec ./bar.sh
#!/bin/sh

echo $$
echo bar

Ja kuten sanoin niin se ei tosiaan ole hyvä tapa. Itse en ole asiaa
suuremmin murehtinut vaan käyttänyt tuota start-stop-daemonia.
--
Ari Makela no escaping it -
***@arska.org I must step on fallen leaves
http://arska.org/hauva/ to take this path (Suzuki Majoko)
Eero Häkkinen
2005-01-05 16:17:10 UTC
Permalink
Post by Ari Makela
#!/bin/sh
echo $$ > /tmp/progname.pid
exec progname
Tästä en tykkää, koska se ei toimi Solariksessa, jossa execissä ei PID
periydy. Linuxissa kyllä ainakin vielä 2.4:ssa. 2.6:ssa en ole
testannut.
Lukiessani POSIX-standardia olen saavinani käsityksen, että execissä PID
periytyy, aina. Tarkoitatko, että alkuperäinen Solariksen /bin/sh, joka ei
ole POSIX-shell vaan Bourne-shell (tai vastaava), ei toimi execin osalta
POSIX:in mukaisesti?

Minulla on tunnukset muutamaan Solaris-koneeseen, mutta niihin kaikkiin on
asennettu lähiaikoina uusi /bin/sh (ilmeisesti POSIX-shell), joten en pysty
tarkistamaan vanhan /bin/sh:n toimintaa.
Ari Makela
2005-01-05 16:41:02 UTC
Permalink
Post by Eero Häkkinen
periytyy, aina. Tarkoitatko, että alkuperäinen Solariksen /bin/sh, joka ei
ole POSIX-shell vaan Bourne-shell (tai vastaava), ei toimi execin osalta
POSIX:in mukaisesti?
Kokeillessani uudelleen näitä skriptejä Solariksessa:

$ cat foo.sh bar.sh
#!/bin/sh

echo $$
echo foo
exec ./bar.sh
#!/bin/sh

echo $$
echo bar


$ ./foo.sh
25469
foo
25469
bar

Saan ihan saman tuloksen kuin Linuxissakin eli että PID säilyy. Hmm, ja
sinä kaivelit standardeista että se säilyy, joten ilmeisesti minä olen
edellisellä kerralla sekoillut jotain.
--
Ari Makela no escaping it -
***@arska.org I must step on fallen leaves
http://arska.org/hauva/ to take this path (Suzuki Majoko)
Ville Ettala
2005-01-05 13:58:18 UTC
Permalink
Post by Juha Lyytikäinen
Laitoin tuossa Manrake 10.1 serverille yhden graafisessa
ympäristössä (TWM) pyörivän ohjelman jonka pitäisi olla aina
käynnissä. Parin päivän jälkeen tuo oli kaatunut dumpannut coren.
Ohjelman dokuissa mainittiin memory leakin mahdollisuus.
Mikä olisi hyvä tapa tarkkailla pyöriikö ohjelma?
Mahdollisesti voisi tarkkailla myös paljonko muistia ohjelmalla
on käytössä ja restartata se jos muisti täyttyy?
teet oheisenlaisen perl scriptin
#!/usr/bin/perl -w
use strict;
`/foo/bar > /dev/null 2>&1 &` unless `ps -ef`=~/bar/;

ja sitten laitat crontabiin kyseisen scriptin pyörimään esim:
* * * * * /foo/scripti.pl
--
Ville Ettala
Premind Oy
http://www.premind.fi
m***@poista.helsinki.fi.invalid
2005-01-08 20:36:59 UTC
Permalink
Post by Ville Ettala
Post by Juha Lyytikäinen
Laitoin tuossa Manrake 10.1 serverille yhden graafisessa
ympäristössä (TWM) pyörivän ohjelman jonka pitäisi olla aina
käynnissä. Parin päivän jälkeen tuo oli kaatunut dumpannut coren.
Ohjelman dokuissa mainittiin memory leakin mahdollisuus.
Mikä olisi hyvä tapa tarkkailla pyöriikö ohjelma?
Mahdollisesti voisi tarkkailla myös paljonko muistia ohjelmalla
on käytössä ja restartata se jos muisti täyttyy?
teet oheisenlaisen perl scriptin
#!/usr/bin/perl -w
use strict;
`/foo/bar > /dev/null 2>&1 &` unless `ps -ef`=~/bar/;
* * * * * /foo/scripti.pl
Jos tarve on saada ohjelman käynnistymään automaattisesti uudestaan vaikkapa
kaatumisen vuoksi, niin itse pistäisin ohjelman inittab:iin respawn
määreellä.

Muistinkäytön valvontaan tämä ei sitten mitenkään vaikuta.
seur
Post by Ville Ettala
--
Ville Ettala
Premind Oy
http://www.premind.fi
Money, it's a crime
-------------------------------------------------------------------------------
Mika Reunanen | Homepage:
Mika . Reunanen @ helsinki . fi | http://www.helsinki.fi/~mreunane/
-------------------------------------------------------------------------------
Loading...