Watch-dog, timer, eller annat

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Watch-dog, timer, eller annat

Inlägg av Oltronix »

Jag har en process som hänger sig. Processen startas med ett tidsintervall. Det resulteras att jag får ett gäng hängande processer. Hur slår jag ihjäl dessa automatisk? Jag började glatt ha kod i processen själv. Inte så smart. (den slog ihjäl sig själv. Hur dum får man vara!?) Dock kan jag förståss kolla om det finns en annan process med samma namn och döda den första. Känns inte så bra lsg.

-Ett annat sätt att ha ett script som dödar processen körs via crontab med lämpligt intervall.

-Att processen sätter upp en timer som dödar processen eller bara gör något continue. Jag har inte sett hur man gör i linux. (jag får goggla lite och och se om jag hittar något)

Andra tankar. Hur brukar ni göra?
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4694
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Watch-dog, timer, eller annat

Inlägg av Swech »

Det optimala är väl att fixa så att processen inte hänger sig
men det är ju ett drygt svar... :D
Antar att den delen inte går att fixa

Swech
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45304
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Watch-dog, timer, eller annat

Inlägg av TomasL »

Tja, du får väl vara lite tydligare med vad det är du jobbar med, inbäddat?, RTOS?, PC?, OS? osv
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45304
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Watch-dog, timer, eller annat

Inlägg av TomasL »

EN variant är ju att starta processen ifrån ett överliggande program, som sedan övervakar "Barn-processen" och slår ihjäl den vid behov
Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: Watch-dog, timer, eller annat

Inlägg av Oltronix »

Swech skrev:Det optimala är väl att fixa så att processen inte hänger sig
Javisst. Tänkte inte på det :)
ThomasL skrev:Tja, du får väl vara lite tydligare med vad det är du jobbar med, inbäddat?, RTOS?, PC?, OS? osv
Tja frågan var väl lite dubbel.
1) Generellt
2) Problemet som fick mig fundera just nu är baserat på:

Kod: Markera allt

pi@mumin1 ~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 7 (wheezy)"
NAME="Raspbian GNU/Linux"
och bash samt ftp mot ett webhotell. Bash-kommandon är kanske inte smartaste att använda i realtidssammanhang men det funger bra om inte har krav på bra felhantering. Bash funger bra innan det går åt helvete.
Användarvisningsbild
mrfrenzy
Co Admin
Inlägg: 14863
Blev medlem: 16 april 2006, 17:04:10

Re: Watch-dog, timer, eller annat

Inlägg av mrfrenzy »

Du vill alltså ha ett enkelt fulhack som dödar din process. Inga problem!

Börja med att installera coreutils apt install coreutils

Sen antar jag att du startar din process med crontab?
Ändra kommandot som startar enligt följande:
5 * * * * timeout 4m buggig_process
Om inte processen avslutats efter fyra minuter dödar "timeout" den automatiskt.
Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: Watch-dog, timer, eller annat

Inlägg av Oltronix »

Timeout fungerar utmärkt

Kod: Markera allt

*/10 * * * * timeout 8m /home/pi/send-to-one.sh &> /dev/null
även om det inte är som exception-hantering som finns i en del högnivåspråk.

Tack!

Att gräva i fel ger många spinn-off som tex att hitta dena godisfabrik
https://www.gnu.org/manual/manual.html
https://www.gnu.org/software/coreutils/ ... index.html

Jag har lärt mig nått om xargs och pipe (som jag naivt trodde att jag förstod)

Så här ser mitt problem med ftp mot one.com ut:

Kod: Markera allt

$ ftp -n -i
ftp> open ftp.astranko.se
Connected to accessproxy.webpod9-cph3.one.com.
220 Welcome to One.com FTP.
ftp> user astranko.se
331 User astranko.se OK. Password required
230 OK. Current restricted directory is /
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> binary
200 TYPE is now 8-bit binary
ftp> put log_500h.png
local: log_500h.png remote: log_500h.png
200 PORT command successful.
425 Could not open data connection to port 33781: Connection timed out

ftp> ls
200 PORT command successful.
425 Could not open data connection to port 45677: Connection timed out
Var felet ligger vet jag inte men misstänker one.com. sftp verkar fungera att ladda upp filer med.
davidi
Inlägg: 577
Blev medlem: 13 oktober 2011, 16:45:38
Ort: Ekerö

Re: Watch-dog, timer, eller annat

Inlägg av davidi »

SFTP använder bara en enda tcp-anslutning, så det brukar vara rätt okomplicerat. FTP använder en separat anslutningen för dataöverföringen. Det ser ut som att du kör aktiv ftp, och att det då antagligen är din brandvägg som inte släpper igenom när servern försöker ansluta till din klient. Prova att sätta din klient i passiv mod istället.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45304
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Watch-dog, timer, eller annat

Inlägg av TomasL »

Man får ställa in sin FTP-klient att den instruerar servern att använda passiv anslutning, då är det klienten som öppnar anslutningen, annars är det servern som öppnar data-anslutningen, och då blir det tvärstopp i alla brandväggar.
Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: Watch-dog, timer, eller annat

Inlägg av Oltronix »

Tack!

Att lägga till -p i ftp-kommandot löste mitt problem.

Kod: Markera allt

$man ftp ...
    -p    Use passive mode for data transfers. Allows use of ftp in environments where a firewall prevents connections from the outside
           world back to the client machine. Requires that the ftp server support the PASV command. This is the default if invoked as
           pftp.

Skriv svar