Sida 1 av 1

Watch-dog, timer, eller annat

Postat: 20 mars 2020, 11:42:03
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?

Re: Watch-dog, timer, eller annat

Postat: 20 mars 2020, 12:43:50
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

Re: Watch-dog, timer, eller annat

Postat: 20 mars 2020, 20:36:26
av TomasL
Tja, du får väl vara lite tydligare med vad det är du jobbar med, inbäddat?, RTOS?, PC?, OS? osv

Re: Watch-dog, timer, eller annat

Postat: 20 mars 2020, 20:38:31
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

Re: Watch-dog, timer, eller annat

Postat: 21 mars 2020, 09:19:39
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.

Re: Watch-dog, timer, eller annat

Postat: 21 mars 2020, 11:08:39
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.

Re: Watch-dog, timer, eller annat

Postat: 23 mars 2020, 13:46:30
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.

Re: Watch-dog, timer, eller annat

Postat: 23 mars 2020, 14:00:44
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.

Re: Watch-dog, timer, eller annat

Postat: 23 mars 2020, 14:26:20
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.

Re: Watch-dog, timer, eller annat

Postat: 15 april 2020, 09:25:53
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.