restart programa - raspberry PI
Moderator/ica: Moderatori/ce
Pravila foruma
U naslovu teme unutar uglatih zagrada navesti o kojem jeziku je riječ. Primjer: [Java]
U naslovu teme unutar uglatih zagrada navesti o kojem jeziku je riječ. Primjer: [Java]
restart programa - raspberry PI
Pozdrav.
Koristim jedan program kojeg je davno napravio kolega ali nazalost isti ima jedan bug a ja nemam source za njega.
Program je poveći i radi ok ali u jednom trenutku počinje primati krive podatke i mora se ga restartati.
Nakon restarta sve radi ok kojih jedan sat pa onda opet isto.
Privremeno rješenje bi bilo da se program prisilno restarta svakih sat vremena.
Kako to najbezbolnije riješiti. Znam da pid-ovi nisu najbolje riješenje ali to mi jedino pada na pamet.
Program se pokreže na system boot-u tako da je aktivan cijelo vrijeme.
Platforma: raspberry PI / debian
Molim prijedloge kako to riješiti.
Unaprijed hvala !
E.
Koristim jedan program kojeg je davno napravio kolega ali nazalost isti ima jedan bug a ja nemam source za njega.
Program je poveći i radi ok ali u jednom trenutku počinje primati krive podatke i mora se ga restartati.
Nakon restarta sve radi ok kojih jedan sat pa onda opet isto.
Privremeno rješenje bi bilo da se program prisilno restarta svakih sat vremena.
Kako to najbezbolnije riješiti. Znam da pid-ovi nisu najbolje riješenje ali to mi jedino pada na pamet.
Program se pokreže na system boot-u tako da je aktivan cijelo vrijeme.
Platforma: raspberry PI / debian
Molim prijedloge kako to riješiti.
Unaprijed hvala !
E.
Re: restart programa - raspberry PI
Mislim da bi to mogao sa killall.
Znači,
bi mogao cronati svakih sat vremena.
EDIT: disclamer - ovo je vjerojatno jako loše rješenje jer nemam pojma o tome / može dovesti do gubitka podataka & stuff / nisam ja kriv
Znači,
Kod: Označi sve
killall ime-programa (da ubije proces)
ime-programa (da ponovno pokrene proces)
EDIT: disclamer - ovo je vjerojatno jako loše rješenje jer nemam pojma o tome / može dovesti do gubitka podataka & stuff / nisam ja kriv
- Medojedni jazavac
- Postovi: 1536
- Pridružen/a: 22 tra 2012, 08:55
- Spol: M
- OS: eOS Luna
- Lokacija: ForHill Croatia
- Kontakt:
Re: restart programa - raspberry PI
cekas
Dobijes pid
Ugasis
Pa pokrenes
Kod: Označi sve
sleep 1000Kod: Označi sve
ps -e | grep <ime_programa>Kod: Označi sve
kill -9 pidKod: Označi sve
ime_programastefan je napisao/la:tu mač gemišta
To understand recursion, you must first understand recursion.
- jurastublic
- Postovi: 1907
- Pridružen/a: 16 tra 2011, 08:34
- Spol: M
- OS: Mint 10 LXDE itd...
- Lokacija: i grupa Film
Re: restart programa - raspberry PI
Nije dobro baš isključivati sa kill -9 ako može normalno.
Evo napravio sam ti skriptu:
Samo je prekopiraj, ispuni prazno polje za ime programa, podesi timere, snimi i postavi dozvolu fajla na "izvršno".
I stavi negdje u autostart.
Ako baš neće krepat sa kill -15, onda tek sa kill -9.
Evo napravio sam ti skriptu:
Kod: Označi sve
#!/bin/bash
# PROG upiši puni path do programa za sv. slučaj, bez razmaka kod =, npr. PROG=/usr/bin/vlc
PROG=
# glavni timer, za 1 sat je 3600 sekundi
GLAVNI_TIMER=3600
# isklj. timer, pauza nakon gašenja a prije restarta, da program ima vremena sve pospremiti
ISKLJ_TIMER=5
while :
do
PID=$(pidof $PROG)
if [ $PID ]; then
kill -15 $PID && sleep $ISKLJ_TIMER
else
(nohup $PROG &) &>/dev/null && sleep $GLAVNI_TIMER
fi
doneI stavi negdje u autostart.
Ako baš neće krepat sa kill -15, onda tek sa kill -9.
Re: restart programa - raspberry PI
Imam ti ja stariju verziju programa koja bi možda pojednostavnla stvar.
Naime kod te verzije, kad program očita krive vrijednosti, automatsko se sruši.
To bi nam u biti moglo pomoči jer ne bi trebali timer a restartao bi se točno kad treba.
Samo puknemo do while `true`; do ./imePrograma ...;
Može za to skripta ?
E.
Naime kod te verzije, kad program očita krive vrijednosti, automatsko se sruši.
To bi nam u biti moglo pomoči jer ne bi trebali timer a restartao bi se točno kad treba.
Samo puknemo do while `true`; do ./imePrograma ...;
Može za to skripta ?
E.
- jurastublic
- Postovi: 1907
- Pridružen/a: 16 tra 2011, 08:34
- Spol: M
- OS: Mint 10 LXDE itd...
- Lokacija: i grupa Film
Re: restart programa - raspberry PI
Pa onda samo umjesto linije kill -15 ... stavi NOP, tj dvotočku i obriši tajmere i to je to. Kad program crasha ostat će bez PID-a i uključit se ponovo.
Kod: Označi sve
blabla...
while
do
PID=$(pidof $PROG)
if [ $PID ]; then
:
else
(nohup $PROG &) &>/dev/null
fi
doneRe: restart programa - raspberry PI
Pozz.
Kad pokrenem ovo :
PROG =/home/pi/code/programStart
while:
do
PID=$(pidof $PROG)
if [ $PID ]; then
:
else
(nohup $PROG &) &>/dev/null
fi
done
----------------------
You must pass tha path of the uart you want to use.
Kad pokrenem ovo :
PROG =/home/pi/code/programStart
while:
do
PID=$(pidof $PROG)
if [ $PID ]; then
:
else
(nohup $PROG &) &>/dev/null
fi
done
----------------------
You must pass tha path of the uart you want to use.
- jurastublic
- Postovi: 1907
- Pridružen/a: 16 tra 2011, 08:34
- Spol: M
- OS: Mint 10 LXDE itd...
- Lokacija: i grupa Film
Re: restart programa - raspberry PI
Prvo, imaš pogrešku jer između while i dvotočke mora biti razmak, kao while : a ne while: .
Ja sam u zadnjem primjeru slučajno izostavio, tipkam po touchscreenu.
Taj je program vjerojatno neka pos kasa ili sl. što ima neki uređaj povezan na serijski port. Moraš u PROG nakon programa dodati i naziv ser. porta (/dev/ttySx gdje je x normalno od 0-3, najlakše ćeš ga prnaći sa dmesg |grep tty).
Npr.
PROG="/usr/bin/mojakasa /dev/ttyS1"
Ja sam u zadnjem primjeru slučajno izostavio, tipkam po touchscreenu.
Taj je program vjerojatno neka pos kasa ili sl. što ima neki uređaj povezan na serijski port. Moraš u PROG nakon programa dodati i naziv ser. porta (/dev/ttySx gdje je x normalno od 0-3, najlakše ćeš ga prnaći sa dmesg |grep tty).
Npr.
PROG="/usr/bin/mojakasa /dev/ttyS1"
Re: restart programa - raspberry PI
Program ti čita podatke koji ti dolaze iz serijskog na USB adapter.
Ok. budem dodao pa se čujemo za dan dva...
Ok. budem dodao pa se čujemo za dan dva...
Re: restart programa - raspberry PI
OK. sad sam malo zbunjen 
Ne mogu definirati path do programa.
Program se nalazi u direktoriju eProg/code/mojaKasa
a ovo je user pi@raspberrypi
Probao sam:
PROG = "/home/pi/eProg/code/mojakasa /dev/ttyUSB0"
PROG = "/pi/eProg/code/mojakasa /dev/ttyUSB0"
pa sam stavio skriptu u direktorij code i probao:
PROG = "/code/mojakasa /dev/ttyUSB0"
ali cijelo vrijeme javlja no such file or directory.
Pošto na raspberriju nemam ništa tipa locate a spojen sam preko ssh nemam ideju gdje je greška.
Instalirao sam neki mlocate ali ne radi, probao sam s find ali nemam full path.
btw. program -mojaKasa- se pokreće na ovaj način:
./mojaKasa -u/dev/ttyUSB0;
Ne mogu definirati path do programa.
Program se nalazi u direktoriju eProg/code/mojaKasa
a ovo je user pi@raspberrypi
Probao sam:
PROG = "/home/pi/eProg/code/mojakasa /dev/ttyUSB0"
PROG = "/pi/eProg/code/mojakasa /dev/ttyUSB0"
pa sam stavio skriptu u direktorij code i probao:
PROG = "/code/mojakasa /dev/ttyUSB0"
ali cijelo vrijeme javlja no such file or directory.
Pošto na raspberriju nemam ništa tipa locate a spojen sam preko ssh nemam ideju gdje je greška.
Instalirao sam neki mlocate ali ne radi, probao sam s find ali nemam full path.
btw. program -mojaKasa- se pokreće na ovaj način:
./mojaKasa -u/dev/ttyUSB0;