Bash a dolar vykřičník

Kurz koruny vůči dolaru trhá rekordy (o víkendu prolomil historickou hranici 16 korun), ale americká měna nebude předmětem mého zápisku. Potřeboval jsem vytvořit startovací skripty na Solarisu, ale pro program, který neukládal PID do souboru a vytvářel další podprocesy s předem neznámým jménem. Zjištění PIDu tedy bylo možné za pomoci proměnné $! v Bashi. Ve startovacím skriptu jsem použil něco takovéhoto:

PID=$(su - $USER -c "nohup java -args &; echo \"$!\"")

Proměnná dolar-vykřičník obsahuje PID posledního spuštěného procesu na pozadí. Ten mohu uložit do souboru a poté využít program pkill k zastavení služby. Ovšem pozor! Hodně aplikací (například ty co jsou napsané v Javě – ale nejen ony) mají různé startovací skripty, které až poté spouštějí vlastní procesy. Tyto startovací skripty jsou po úspěšném startu ukončeny a PID zanikne, server pak běží pod jiným číslem.

Diskuze

Petr Vavra, 17.03.2008 22:42:

Pokud zanikne PIN spousteciho skriptu a jeho PID zustane, pak to nevadi ;-)

Ale jak ti zanikne PIN na SIM karte od mobilu, tak te zachrani jedine PUK, tam ti ani PID nepomuze.

 
Lukáš Zapletal, 17.03.2008 23:43:

Hehe, opraveno. Na vysvětlenou – měl jsem překlep – PID a PIN. Tak to dopadá, když se spěchá.

 
Milan Kozák, 18.03.2008 11:18:

Kdysi jsem $! neznal a tak jsem pouzival hardcore reseni (naprikald pro mc)

grep -l mc /proc/*/cmdline | grep -v self | awk -F “/“ '{print $3}'

 
If you can't read the letters on the image, download this .wav file to get them read to you.
pridej.cz
blog/bash_a_dolar_vykricnik.txt · Poslední úprava: 29.05.2008 09:04 (external edit)
Creative Commons License Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0