Minulla on skripti, joka tulostaa päivämäärän tiedostoon ja sitten logittaa kaiken sarjaportilta tulevat cat /dev/ttyS0 -komennolla. Tiedoston lopettaminen toimii tällä hetkellä kill -komennolla tuolle sarjaportin cat:lle. Tämän jälkeen skripti pääsee jatkamaan ja tulostelee vielä lopetusajan tiedoston loppuun. Nyt heräsi kysymys, kun vahingossa käytin kill -KILL -switch:iä ja aika jäi lopusta puuttumaan. Mitenkäs tämä tehdään oikeaoppisesti? Onko mahdollista, että tuo pelkkä "kill" ilman parametreja joskus saisi myös skriptin päättymään ennen aikojaan?
Skripti:
#!/bin/sh
date >> file.txt
cat /dev/ttyS0 >> file.txt <--suoritus jää tähän maailman tappiin
date >> file.txt
Skripti:
#!/bin/sh
date >> file.txt
cat /dev/ttyS0 >> file.txt <--suoritus jää tähän maailman tappiin
date >> file.txt
Vastaukset 4
Vanhimmat
Voisi tutkia miten minicom toimii, josko se sulkisi lokitiedoston ja sarjaportin kauniisti.
http://linux.die.net/man/1/minicom
Varmaan löytyy muitankin sarjaportiin monitorointiin, itse käytän CuteCom:ia.
http://cutecom.sourceforge.net/
Tuo on väärinpäin.
cat /dev/ttyS0 >> file.txt
Ei ku luettiinkin sarjaportilta.
Koska kyseessä on cat-komento, riittää näköjään lähettää sille ctrl-c, eli SIGTERM
kill -s SIGTERM $PID
Ilmeisesti tuosta kill:sta sellaisenaankaan ei tosin ole haittaa..
http://unix.stackexchange.com/questions/42287/terminating-an-infinite-loop
Ja tuon PID:n saa "pgrep -o -x cat" komennolla selville. Homma alkaa olla selvä!