Portál AbcLinuxu, 10. května 2025 02:10

Dotaz: Bash a PID procesu v rámci funkcie

12.10.2008 16:37 pupala | skóre: 21
Bash a PID procesu v rámci funkcie
Přečteno: 498×
Odpovědět | Admin
Ahojte

Mám časť kódu, ktorý by mal byť spustený ako daemon "nohup ./shel_script &":
#!/bin/sh

set +o verbose
set +o xtrace
set +o nounset

function smak () {

        cat  /dev/urandom > pokus
        echo $$
}

conf=/tmp/shell_daemon.conf
echo $$

smak

trap 'source $conf' 1
trap 'echo "Kto a prečo ma zastavil" >> pokus; kill -9 $$' 3
Dostane po spustení skriptu nejakú internú premennú PID príkazu cat vo funkcii smak ? Alebo jeho PID viem dostať do samotného tela skriptu už len pomocou konštrukcie ps aux | grep cat ... ? A nefunguje mi 2. trap . Keď má skript povedzme PID 2000, samozrejme beží v pozadí a ja zadám kill -3 2000, tak sa nič neudeje. Predpokladal som, že ukončí cat, doplní do súboru pokus výraz "Kto a prečo ma zastavil" a killne sám seba. V conf samozrejme nie je nič, je to len v rámci schémy, pre konfiguráciu daemonov.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

12.10.2008 20:27 diverman | skóre: 32 | blog: život s tučňáčkem
Rozbalit Rozbalit vše Re: Bash a PID procesu v rámci funkcie
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nemel by se ten trap volat jeste pred zavolanim smak? Jinak o nem shell jeste nevi...
deb http://ftp.cz.debian.org/debian jessie main contrib non-free
13.10.2008 06:36 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Bash a PID procesu v rámci funkcie
Odpovědět | | Sbalit | Link | Blokovat | Admin
ja moc nechapu popis problemu, ale rekl bych ze na $$ je dost spoleh a zadny triky s ps to nezachrani. spis hledejte chybu jinde.
In Ada the typical infinite loop would normally be terminated by detonation.
13.10.2008 07:27 luky
Rozbalit Rozbalit vše Re: Bash a PID procesu v rámci funkcie
Odpovědět | | Sbalit | Link | Blokovat | Admin
V dobe behu smak() jeste nemate nastavene trapy.
Ten cat musite spustit na pozadi (protoze dalsi prikazy se jinak provadeji az potom co dobehne). PID posledniho programu spusteneho na pozadi je v promenne $!. Pro cekani na dokonceni behu programu beziciho na pozadi muzete pouzit prikaz wait.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.