Linux:Szignál kezelés
(Változatok közti eltérés) (Új oldal, tartalma: „=Szignál kezelés= * (Bevezető gyakorlat) Készíts shell scriptet, mely másodpercenként kiírja a saját processID-jét, s mindezt legfeljebb 1000-szer teszi meg! (A…”) |
(→Szignál kezelés) |
||
1. sor: | 1. sor: | ||
=Szignál kezelés= | =Szignál kezelés= | ||
- | + | <kivonat>trap</kivonat> | |
- | * (Bevezető gyakorlat) Készíts shell scriptet, mely másodpercenként kiírja a saját processID-jét, s mindezt legfeljebb 1000-szer teszi meg! (Az aktuális processz ID-je a $$ shell változóban van). | + | * (Bevezető gyakorlat) Készíts shell scriptet, mely másodpercenként kiírja a saját processID-jét, s mindezt legfeljebb 1000-szer teszi meg! (Az aktuális processz ID-je a $$ shell változóban van). <megoldas> |
<code lang="bash"> | <code lang="bash"> | ||
#!/bin/bash | #!/bin/bash | ||
9. sor: | 9. sor: | ||
done | done | ||
</code> | </code> | ||
+ | </megoldas> | ||
- | * Készíts egy shell scriptet, mely abban az esetben, ha azt a kill paranccsal le akarják állítani, még törli az átmeneti fájljait! Ahhoz, hogy ki tudjuk próbálni a programot, az másodpercenként írja ki az ő process ID-jét! (Kill szignált küldeni a <b>kill <processID></b> paranccsal kell, ehhez érdemes egy újabb putty-t indítva még egyszer bejelentkezni a szerverbe.) | + | * Készíts egy shell scriptet, mely abban az esetben, ha azt a kill paranccsal le akarják állítani, még törli az átmeneti fájljait! Ahhoz, hogy ki tudjuk próbálni a programot, az másodpercenként írja ki az ő process ID-jét! (Kill szignált küldeni a <b>kill <processID></b> paranccsal kell, ehhez érdemes egy újabb putty-t indítva még egyszer bejelentkezni a szerverbe.) <megoldas> |
<b>Példa a futtatásra:</b> | <b>Példa a futtatásra:</b> | ||
<code lang="bash"> | <code lang="bash"> | ||
19. sor: | 20. sor: | ||
ls: /tmp/at*: Nincs ilyen fájl vagy könyvtár | ls: /tmp/at*: Nincs ilyen fájl vagy könyvtár | ||
</code> | </code> | ||
+ | </megoldas> | ||
+ | <code lang="bash"> | ||
- | |||
- | |||
TMPFILE="/tmp/atmeneti-$$.tmp" | TMPFILE="/tmp/atmeneti-$$.tmp" | ||
37. sor: | 38. sor: | ||
done | done | ||
</code> | </code> | ||
- | + | </megoldas> | |
- | * Készíts shell scriptet sigtest néven, mely az előző feladathoz hasonlóan folyamatosan fut, másodpercenként írja ki a processID-jét és a NEV változó tartalmát. A NEV változó értékét a scriptnek a programmal azonos könyvtárban levő parameters.conf fájlból olvassa be a futás megkezdésekor! | + | * Készíts shell scriptet sigtest néven, mely az előző feladathoz hasonlóan folyamatosan fut, másodpercenként írja ki a processID-jét és a NEV változó tartalmát. A NEV változó értékét a scriptnek a programmal azonos könyvtárban levő parameters.conf fájlból olvassa be a futás megkezdésekor! <megoldas> |
A scriptnek HUP szignált küldve az olvassa újra a parameters.conf fájlban levő változó értékét, és a másodpercenkénti kiírásban onnantól kezdve használja azt anélkül, hogy a programot leállítanánk! A parameters.conf tartalma a következő legyen: | A scriptnek HUP szignált küldve az olvassa újra a parameters.conf fájlban levő változó értékét, és a másodpercenkénti kiírásban onnantól kezdve használja azt anélkül, hogy a programot leállítanánk! A parameters.conf tartalma a következő legyen: | ||
+ | <box> | ||
<code lang="bash"> | <code lang="bash"> | ||
NEV="Koczka Ferenc" | NEV="Koczka Ferenc" | ||
</code> | </code> | ||
- | + | </box> | |
Példa a sigtest futására az egyik putty ablakban: | Példa a sigtest futására az egyik putty ablakban: | ||
+ | <box> | ||
<code lang="bash"> | <code lang="bash"> | ||
feri@aries:~/signalDemo$ ./sigtest | feri@aries:~/signalDemo$ ./sigtest | ||
55. sor: | 58. sor: | ||
21703: 7 Lajos | 21703: 7 Lajos | ||
</code> | </code> | ||
- | + | </box> | |
- | Példa a szignál küldésére és a NEV változó "Lajos"-ra változtatására egy másik putty-ban (innentől a másik ablakban futó program a Lajos nevet fogja másodpercenként a kimenetre írni): | + | Példa a szignál küldésére és a NEV változó "Lajos"-ra változtatására egy másik putty-ban (innentől a másik ablakban futó program a Lajos nevet fogja másodpercenként a kimenetre írni): <megoldas> |
- | < | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
<code lang="bash"> | <code lang="bash"> | ||
#!/bin/bash | #!/bin/bash | ||
77. sor: | 74. sor: | ||
done | done | ||
</code> | </code> | ||
+ | </megoldas> | ||
+ | |||
+ | <box> | ||
+ | <code lang="bash"> | ||
+ | feri@aries:~/signalDemo$ echo "NEV=Lajos" >parameters.txt | ||
+ | feri@aries:~/signalDemo$ kill -HUP 21703 | ||
+ | </code> | ||
+ | </box> |
A lap 2010. április 22., 21:33-kori változata
Szignál kezelés
Kivonat: trap
- (Bevezető gyakorlat) Készíts shell scriptet, mely másodpercenként kiírja a saját processID-jét, s mindezt legfeljebb 1000-szer teszi meg! (Az aktuális processz ID-je a $$ shell változóban van).
- Készíts egy shell scriptet, mely abban az esetben, ha azt a kill paranccsal le akarják állítani, még törli az átmeneti fájljait! Ahhoz, hogy ki tudjuk próbálni a programot, az másodpercenként írja ki az ő process ID-jét! (Kill szignált küldeni a kill <processID> paranccsal kell, ehhez érdemes egy újabb putty-t indítva még egyszer bejelentkezni a szerverbe.)
TMPFILE="/tmp/atmeneti-$$.tmp" trap exit_handler EXIT exit_handler() { echo "Atmeneti fajlok torlese" rm $TMPFILE } touch $TMPFILE for i in `seq 1 1 1000`; do echo $$: $i sleep 1 done
</megoldas>
- Készíts shell scriptet sigtest néven, mely az előző feladathoz hasonlóan folyamatosan fut, másodpercenként írja ki a processID-jét és a NEV változó tartalmát. A NEV változó értékét a scriptnek a programmal azonos könyvtárban levő parameters.conf fájlból olvassa be a futás megkezdésekor!
feri@aries:~/signalDemo$ echo "NEV=Lajos" >parameters.txt feri@aries:~/signalDemo$ kill -HUP 21703