Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Automatische reboot na vastlopen van een programma  (gelezen 1056 keer)

Offline Eduard2

  • Lid
Automatische reboot na vastlopen van een programma
« Gepost op: 2023/07/25, 09:08:41 »
Beste forumleden,

Ik zoek een bash script dat mijn computer automatisch herstart zodra een specifiek programma vast loopt. Mijn programma bewerkt een audiostream afkomstig uit internet en stuurt een luidspreker. Na enige tijd (1 tot 10 uur) stopt de muziek. Na reboot is alles weer in orde en die historie herhaalt zich.  Het programma verdwijnt dan uit de lijst opgewekt door het commando ‘top’. Het is me nog niet gelukt een script op te stellen dat op basis van top | grep ‘programma_naam’ een timestamp op scherm te schrijven. (het tijdstip waarop het programma vastloopt)  Als dit zou lukken dan wil ik het afdrukken van het tijdstip vervangen door “sudo reboot”.

Ook een script op basis van het commando ‘ps’ kent nog geen succes.

Dingen proberen gaat langzaam want het kan lang duren voor de fout optreedt. Het vastlopen van het programma geeft een ander resultaat als "kill PID"

Op voorhand bedankt voor uw advies.

Vriendelijke groeten,

Eduard

Re: Automatische reboot na vastlopen van een programma
« Reactie #1 Gepost op: 2023/07/25, 09:20:39 »
Hallo, het is volgens mij niet zeker dat het jouw programma is dat vastloopt. Streams over internet hebben, bij mij althans, de neiging af en toe te stoppen. Na enig wachten gaat de stream weer verder - of niet. Ik zoek de oorzaak bij een haperende wifi-verbinding of een haperende internetverbinding. Ook kan het probleem aan de bron optreden, bij de stream zelf dus. Internet is geen perfect medium dat het altijd doet!

Offline Eduard2

  • Lid
Re: Automatische reboot na vastlopen van een programma
« Reactie #2 Gepost op: 2023/07/25, 10:55:40 »
Dag Paul,

Onderbreking van de internet verbinding zou kunnen. Het blijft vreemd dat die verbinding niet terugkeert nadat de packets een nieuwe weg over het web hebben gevonden of de bron opnieuw actief wordt. Wifi kan ik uitsluiten want binnenshuis loopt de verbinding over utp kabel. Onderbrekingen extern zullen er zeker zijn. Wellicht is dit niet de belangrijkste bron van ellende want zodra de pc wordt herstart is de muziek weer daar. Het kan zijn dat een externe onderbreking even lang duurt als de tijd die ik nodig heb om dit op te merken en de pc te herstarten. Dat dit iedere keer het geval is lijkt onwaarschijnlijk.

Bedankt voor het meedenken,

Eduard

Re: Automatische reboot na vastlopen van een programma
« Reactie #3 Gepost op: 2023/07/25, 13:40:34 »
Het blijft vreemd dat die verbinding niet terugkeert nadat de packets een nieuwe weg over het web hebben gevonden of de bron opnieuw actief wordt.

Ik zeg wel eens dat "die packets onderweg tegen een boom zijn geknald en niet meer verder kunnen want autootje kapot". Bedoeld als: gaat er ergens onderweg wat mis, dan is een automatisch herstel van de verbinding niet gegarandeerd.

Overigens knap dat je een stream tien uur lang kunt beluisteren, heb dat zelf nog nooit gedaan. ;)

Re: Automatische reboot na vastlopen van een programma
« Reactie #4 Gepost op: 2023/07/25, 21:00:44 »
Weet je de naam van dat proces en is die uniek? Dan zou je een script kunnen maken dat om de zoveel tijd kijkt of er nog een proces met die naam is. Kan denk ik op veel manieren maar in elk geval met pgrep.

Voorbeeld voor Firefox
naam=Firefox
if [[ $(pgrep -i $naam) ]]; then echo "$naam draait!"; fi

Of juist de negatie daarvan:
naam=Firefox
if ! [[ $(pgrep -i $naam) ]]; then echo "$naam draait niet (meer)!"; fi

Offline bart85

  • Lid
Re: Automatische reboot na vastlopen van een programma
« Reactie #5 Gepost op: 2023/07/26, 08:29:00 »
process=firefox
[[ $(pgrep $process) ]] && echo "$process draait" || echo "$process draait niet"
« Laatst bewerkt op: 2023/07/26, 08:36:42 door bart85 »
Je leert maar mooi over weg gaan met de commandline.
Linus: "I'm happy with the people who are wandering around looking at the stars but I am looking at the ground and I want to fix the pothole before I fall in."
I look to the clouds behind me and see the thunder coming.

Offline Bloom

  • Lid
Re: Automatische reboot na vastlopen van een programma
« Reactie #6 Gepost op: 2023/07/26, 09:47:16 »
Een subshell is niet nodig.
pgrep -i "$process" &>/dev/null && echo "$process draait" || echo "$process draait niet"

Offline Eduard2

  • Lid
Re: Automatische reboot na vastlopen van een programma
« Reactie #7 Gepost op: 2023/07/29, 22:56:15 »
Goede avond,

De scripts die jullie aangaven werken. De voorbeelden heb ik zowel met firefox als met mijn programma getest. In beide gevallen werkt de IF goed. Omdat het lang kan duren vooraleer de fout optreedt zullen er enkele dagen nodig zijn om dit in de werkelijkheid te testen. Met "sudo kill PID werkt het in ieder geval.

Het valt me op dat verschillende deelnemers met mpd aan de slag zijn.   Fijn dat te horen. Het geeft een indicatie dat de combinatie mpd+mpc populair is om audiostreams uit internet te plukken. Het was een gok van mpd/mpc niet naar de geluidskaart maar naar een FIFO te sturen. Mijn programma leest 8 zulke FIFO's uit. Dat lukt zelfs op een klein computertje zoals de Raspberry pi3B+ of de Orangepi Zero2.

Bedankt voor uw hulp,

Vriendelijke groeten,

Eduard2