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
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.
Hehe, opraveno. Na vysvětlenou – měl jsem překlep – PID a PIN. Tak to dopadá, když se spěchá.
Kdysi jsem $! neznal a tak jsem pouzival hardcore reseni (naprikald pro mc)
grep -l mc /proc/*/cmdline | grep -v self | awk -F “/“ '{print $3}'