[Shell Scripting] Monitoren van sub processen

Pagina: 1
Acties:

  • T.I.M
  • Registratie: Juni 2001
  • Niet online
Ik ben bezig met het maken van een scriptje dat een aantal programma's opstart.
Indien een programma afgesloten wordt (kill) dan wil ik dan het script daarvan op de hoogte wordt gebracht.

code:
1
2
3
4
5
6
7
8
9
10
11
12
trap processKilled CHLD

processKilled() {
 echo "er is een proces dood"
}

echo "start proces"
./proces
sleep 2
./proces2

exit 0


Het probleem is nu dat er na een sleep een CHLD signal binnen komt en de functie gaat lopen. Op zich niet zo erg want in kan een teller inbouwen die het eerste signal negeert.
Alleen zodra er een CHLD signal binnenkomt blijft dit achter elkaar binnenkomen.
Als ik het script uitvoer wordt er achter elkaar oneindig veel keer de regel 'er is een proces dood' weergegeven.


Op de een of andere manier moet ik dit signal kunnen resetten. Wie weet hoe ik dit kan doen?


alvast bedankt:)

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Welk OS/shell gebruik je? Als ik met bash "set -m" erbij zet, en "sleep 1" in proces* zet, dan krijg ik keurig 3x "er is een proces dood".
Het lijkt wel alsof bij jou de "echo" een nieuw signaal opwekt..

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • T.I.M
  • Registratie: Juni 2001
  • Niet online
Het blijkt toch iets anders te zitten als ik dacht.

Ik gebruik de sh shell (#!/bin/sh). op een Linux systeem met BusyBox.

Als ik in de functie die aangeroepen wordt de teller neer zet:

code:
1
SLEEPCOUNT=$(expr 5 + 1)


dan gaat het mis. Haal ik de bovenstaande regel weg uit de functie dan krijg ik idd gewoon netjes de output zoals het moet.

Heeft iemand een idee waarom ik door het plaatsen van een soort van teller oneindig veel keer de functie aangeroepen wordt. Het lijkt wel of hij in de functie 'vast' komt te zitten want regels die na deze regel komen worden niet uitgevoerd.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 00:48

Creepy

Tactical Espionage Splatterer

Ff een move naar NOS aangezien daar meer bash scripting guru's zitten dan hier. Zie ook Waar hoort mijn topic?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

T.I.M schreef op donderdag 24 januari 2008 @ 16:41:
Het blijkt toch iets anders te zitten als ik dacht.

Ik gebruik de sh shell (#!/bin/sh). op een Linux systeem met BusyBox.

Als ik in de functie die aangeroepen wordt de teller neer zet:

code:
1
SLEEPCOUNT=$(expr 5 + 1)


dan gaat het mis. Haal ik de bovenstaande regel weg uit de functie dan krijg ik idd gewoon netjes de output zoals het moet.

Heeft iemand een idee waarom ik door het plaatsen van een soort van teller oneindig veel keer de functie aangeroepen wordt. Het lijkt wel of hij in de functie 'vast' komt te zitten want regels die na deze regel komen worden niet uitgevoerd.
Ik denk dat het komt omdat expr ook een process wordt. Ik heb net even gekeken en expr is idd geen (bash) builtin. Je kan trouwens in bash $((5 + 1)) gebruiken voor rekenkundige operaties.

[ Voor 8% gewijzigd door Verwijderd op 24-01-2008 19:56 ]


  • maleadt
  • Registratie: Januari 2006
  • Laatst online: 26-01 20:38
Verwijderd schreef op donderdag 24 januari 2008 @ 19:50:
[...]


Ik denk dat het komt omdat expr ook een process wordt. Ik heb net even gekeken en expr is idd geen (bash) builtin. Je kan trouwens in bash $((5 + 1)) gebruiken voor rekenkundige operaties.
in busybox zijn alle binaries toch built in (de bestanden in /usr/bin zijn dan gewoon symlinks naar /bin/busybox, die detecteerd welke de aanroepende symlink was)?

Verwijderd

MALEADt schreef op donderdag 24 januari 2008 @ 20:08:
[...]


in busybox zijn alle binaries toch built in (de bestanden in /usr/bin zijn dan gewoon symlinks naar /bin/busybox, die detecteerd welke de aanroepende symlink was)?
Ja klopt, maar dan word er nog steeds een nieuw process aangemaakt, namelijk een instantie van de busybox executable.

  • T.I.M
  • Registratie: Juni 2001
  • Niet online
Verwijderd schreef op donderdag 24 januari 2008 @ 19:50:
[...]


Ik denk dat het komt omdat expr ook een process wordt. Ik heb net even gekeken en expr is idd geen (bash) builtin. Je kan trouwens in bash $((5 + 1)) gebruiken voor rekenkundige operaties.
Dank je.. dit is idd het probleem.

  • daft_dutch
  • Registratie: December 2003
  • Laatst online: 02-12-2025

daft_dutch

>.< >.< >.< >.<

voor de duidelijkheid
sh is meestal een symlink naar bash

>.< >.< >.< >.<

Pagina: 1