Trädvy Permalänk
Medlem
Plats
Dalarna
Registrerad
Apr 2016

Bash script restart en daemon

Hej (igen),
Har ett C-program i en Raspberry (Linux) som måste leva. Har ibland märkt att programmet kan hoppa ur med Exit 139 och vet inte riktigt var det kommer ifrån. Har för lite tid också för att gå djupare. Kanske också okunnig i Linux - än.
Därför har jag knåpat ihop ett script och undrar om det duger för husbehov? Svagheter? Nackdelar? Blir det en rest kvar efter varje omstart?
Har tänkt lägga scriptet autostart efter reboot. Nåt där att tänka på?

Tacksam för hjälp.

Scriptet är som följer:

#!/bin/bash sudo ./read_can while [ $? > 0 ] #$? är efter googlande returvärdet. do echo "startar om server och program!" sudo service restart apache2 sleep 10 sudo pkill read_can #Kanske onödlgt. sudo ./read_can #Omstarten.. done

Trädvy Permalänk
Medlem
Plats
Bålsta
Registrerad
Nov 2010

@Sweedland: Måste du starta om apache också när ditt program kraschar?

Annars kan du egentligen bara köra en until loop.
Att ligga och kolla i en while loop känns oerhört ineffektivt och slöseri med resurser.

until myserver; do echo "Server 'myserver' crashed with exit code $?. Respawning.." >&2 sleep 1 done

http://stackoverflow.com/questions/696839/how-do-i-write-a-ba...

edit:
Vet inte om det är korrekt syntax, men något i den stilen borde fungera

until ./read_can; do echo "startar om server och program!" sudo service restart apache2 sudo ./read_can done

~. Citera så jag hittar tillbaka .~

Trädvy Permalänk
Medlem
Plats
Dalarna
Registrerad
Apr 2016

Jag trodde att programmet "read_can" stannade upp scriptet i while-satsen och när/om det blir en exit så hoppar den ur och fortsätter? Eller? C-programmerare som jag i grunden är så kanske jag har fel...Är newbee på bash!

Att jag startar om Apache2 är väl en ren säkerhetsåtgärd. Har nåt av mina PHP spårat ur så är det bra att starta om servern...tror jag. Har dock en timeout på den...tror jag.
Som du ser så tror jag mycket o det är för jag har inte hunnit läsa in mig på allt.

Tacksam för input.

Trädvy Permalänk
Medlem
Plats
Dalarna
Registrerad
Apr 2016
Skrivet av KeVVa:

@Sweedland: Måste du starta om apache också när ditt program kraschar?

Annars kan du egentligen bara köra en until loop.
Att ligga och kolla i en while loop känns oerhört ineffektivt och slöseri med resurser.

until myserver; do echo "Server 'myserver' crashed with exit code $?. Respawning.." >&2 sleep 1 done

http://stackoverflow.com/questions/696839/how-do-i-write-a-ba...

edit:
Vet inte om det är korrekt syntax, men något i den stilen borde fungera

until ./read_can; do echo "startar om server och program!" sudo service restart apache2 sudo ./read_can done

Jag läste Stackoverflow-länken. Klart som korvspad. Utmärkt sida!

Skickades från m.sweclockers.com

Trädvy Permalänk
Medlem
Plats
Dalarna
Registrerad
Apr 2016

Har testat scriptet och det fungerar utmärkt. Testade med att lägga in exit(44) i koden och den startade om. Mitt script som jag angav först i tråden gav en massa "bioset" när jag kollade med "top" sist. Jag vet inte vad "bioset" kommer av men ska googla. Jag kan föreställa mig att det är nån form av trådar som inte stängts ner riktigt - men här är jag på tunn is.