Sida 1 av 1
Signalering mha trap och kill
Postat: 07 okt 2009, 21:42
av so_savar
Tjena.
Har två script som jag vill kunna styra flödet mellan mha signaler. Jag vet hur trap och kill funkar, men hur hittar jag PID och kommunicerar det utan att behöva skriva till en fil? I cygwin-Unix funkar kill -signal -1 för att skicka till alla processer, men försöker jag med det i Ubuntu så startar hela sessionen om, lika om jag använder 0 istf PID. Det verkar heller inte spela någon roll vilken signal jag använder - har provat med 40 men samma resultat.
Har varit inne på att göra ps och grep el dyl för att hitta PID för processerna som går och utesluta parent shell men det verkar ju vedeldat ....
Hoppas på det bästa
/SO
Re: Signalering mha trap och kill
Postat: 07 okt 2009, 21:57
av Konservburk
När du forkar loss det ena skriptet så kan du spara undan pid:en från $!
Annars är pgrep hyffsat smidigt, men då måste du tänka på vad som händer om du råkar ha flera matchande processer igång.
Re: Signalering mha trap och kill [LÖST]
Postat: 14 okt 2009, 19:16
av so_savar
Konservburk skrev:När du forkar loss det ena skriptet så kan du spara undan pid:en från $!
Annars är pgrep hyffsat smidigt, men då måste du tänka på vad som händer om du råkar ha flera matchande processer igång.
OK, men jag forkar inte utan skapar flera parallella processer och då verkar det inte finnas någon enkel mekanism.
Nåväl, jag gick runt problemet genom att använda signalfiler - precis som på den gamla goda tiden
/SO
Re: Signalering mha trap och kill
Postat: 24 okt 2009, 15:33
av so_savar
Tjaba.
Är iofs fortfarande intresserad om det finns någon som har en elegantare lösning på interprocesskommunikation än filer ;-)
/SO
Re: Signalering mha trap och kill [LÖST]
Postat: 24 okt 2009, 15:51
av Konservburk
so_savar skrev:OK, men jag forkar inte utan skapar flera parallella processer
Hur skapar du flera paralllella processer utan att forka?
Re: Signalering mha trap och kill
Postat: 24 okt 2009, 17:03
av so_savar
Ursäkta, men jag kanske inte har riktigt koll på terminologin. Jag trodde att "forka" betydde att skapa en process från en annan, men det kanske skulle heta "spawna" ist. Nåväl, jag kör ett script "vrec" som ser ut så (i princip):
#! /bin/sh
echo här är jag
xawtv &
"loop med sleep i varje varv
"läser kontrollfilen men det är här jag skule vilja läsa en variabel/signal i stället"
"om kontrollfilen finns then
echo hoppar ut
else
loopa på
Detta script snurrar alltså tills dess jag kör jag ett annat script "vstopp" som meddelar en stoppsigna från terminalen:
#! /bin/sh
echo stoppa allt
"skapar kontrollfilen men det är här jag skule vilja sätta en variabel/signal i stället"
xawtv-remote quit &
echo har stoppat hopas jag
I det gamla förnämliga realtidssystemet RSX fanns det executiver man kunde anropa för meddelandehantering och det är det jag försöker efterlikna. Gör att man kan skapa en serie av operationer som man sedan kan skedulera via tex cron utan att jobba med armarna i kors, dvs med mus ;-)
/SO
Re: Signalering mha trap och kill
Postat: 24 okt 2009, 19:04
av gusse02
Det ser ut som du i ett script startar xawtv och väntar på att nån skall stänga av. Ett annat script signalerar att det är dags för det första att sluta, dvs stänga av xawtv. Jag kanske har missuppfattat det helt. Men om det är så så kan du väl i avstängningsscriptet bara använda "killall xawtv". Detta dödar xawtv. Det första scriptet kan starta xawtv med nohup och sen slutar det.
Som sagt, kan vara jag som missuppfattat.
Annars är det vanliga att ett script sparar sin pid i en fil: /var/run/xxx.pid. Scriptet som skall döda den första processen läser denna fil och skickar signal till det processnummer som står i filen.