Signalering mha trap och kill

Här diskuteras programmering och utveckling
so_savar
Inlägg: 15
Blev medlem: 17 sep 2009, 22:10
OS: Ubuntu
Utgåva: 16.04 Xenial Xerus LTS

Signalering mha trap och kill

Inlägg 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
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Signalering mha trap och kill

Inlägg 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.
so_savar
Inlägg: 15
Blev medlem: 17 sep 2009, 22:10
OS: Ubuntu
Utgåva: 16.04 Xenial Xerus LTS

Re: Signalering mha trap och kill [LÖST]

Inlägg 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 :D

/SO
so_savar
Inlägg: 15
Blev medlem: 17 sep 2009, 22:10
OS: Ubuntu
Utgåva: 16.04 Xenial Xerus LTS

Re: Signalering mha trap och kill

Inlägg av so_savar »

Tjaba.

Är iofs fortfarande intresserad om det finns någon som har en elegantare lösning på interprocesskommunikation än filer ;-)

/SO
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Signalering mha trap och kill [LÖST]

Inlägg av Konservburk »

so_savar skrev:OK, men jag forkar inte utan skapar flera parallella processer
Hur skapar du flera paralllella processer utan att forka?
so_savar
Inlägg: 15
Blev medlem: 17 sep 2009, 22:10
OS: Ubuntu
Utgåva: 16.04 Xenial Xerus LTS

Re: Signalering mha trap och kill

Inlägg 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
gusse02
Inlägg: 258
Blev medlem: 16 maj 2008, 12:17
OS: Ubuntu
Utgåva: 20.04 Focal Fossa LTS

Re: Signalering mha trap och kill

Inlägg 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.
Skriv svar

Återgå till "Programmering och webbdesign"