17. januar 2002 - 22:27Der er
51 kommentarer og 1 løsning
problemer med at stoppe service ved shutdown eller reboot
jeg har problemer med at stoppe en service i RH7.1 ved shutdown og reboot.
Servicen (et script) bruges til at skabe forbindelse til internettet (kabelmodem med login) og opdatere min status hos dyndns.dk.
Det er ret vigtigt at scriptet kører både ved boot og shutdown da jeg ellers ikke kan logge ind hos min internetudbyder (stofanet).
Scriptet kører perfekt ved boot med kører altså ikke ved shutdown.
Jeg har tilføjet scriptet med flg kommando: chkconfig --levels 2345 internetstart on
scriptet ser således ud: #!/bin/sh # Comments to support chkconfig on RedHat Linux # chkconfig: 2345 90 90 # description: Script for starting and stopping stofanet connection and # for updating dyndns. mode=$1 # start or stop case \"$mode\" in \'start\') # Start /usr/local/stofaControl/slic start /usr/bin/wget -q -O /data/html/linux/dyntest.htm \"http://dyndns.dk/opdat.php?name=username&pw=XXX&silent=1&state=on\" ;; \'stop\') # Stop /usr/bin/wget -q -O /data/html/linux/dyntest.htm \"http://dyndns.dk/opdat.php?name=username&pw=XXX&silent=1&state=msg\" /usr/local/stofaControl/slic stop ;; *) # usage echo \"usage: $0 start|stop\" exit 1 ;; esac
Er der nogen, der kan gennemskue, hvad der er galt ? Det er lidt et luksusproblem, jeg fandt nemlig efter lidt testing ud af, at hvis jeg placerede kommandoerne sammen med min mysql service, så virkede det fint. Jeg ville bare helst at scriptet var uafhængig af mysql.
linket ligger godt nok i både rc0.d og rc6.d og som K90internetstart.
Og ja scriptet ligger godtnok i /etc/rc.d/init.d
Det der jo er det mærkelige, er at det kører fint i opstarten. Altså under forudsætning af, at det er kørt ved nedlukning (hvilket jeg så gør manuelt). Hvis ikke scriptet er kørt ved nedlukning - kan maskinen slet ikke starte - så hænger den bare når den kører scriptet
det så rent faktisk ud til at det hjalp - den er i hvert fald ikke gået i stå under opstarten endnu, hvilket jeg tolker som positivt, da det jo må betyde at den er stoppet rigtigt under nedlukning.
Jeg troede at den stoppede servicen rigtigt, men jeg tog grueligt fejl, hvilket jeg kom til at mærke, da jeg i morges skulle start uden skærm og tastatur.
Har det nogen betydning hvilket nummer nummer scriptet får ?
Det der bare er vigtigt er, at scriptet kører INDEN network og firewall stoppes.
jeg ændrede den i går til K89, men det gav altså desværre samme resultat - skal den køres tidligere ? Jeg kan se, at killall først køres efter at network og firewall er stoppet. Er det muligt at lave scriptet, således at det styres udenom killall ?
Men jeg har fundet ud af, at problemet opstår, fordi min internetforbindelse ikke bliver stoppet (/usr/local/StofaControl/slic stop). Idet den ikke bliver stoppet, tror programmet at den stadig kører, når den skal startes igen, og forbindelsen bliver derfor ikke startet. Hvilket så medfører, at maskinen går i stå, når jeg kører wget.
jeg har ændret lidt i opsætningen på netværket siden jeg oprindelig oprettede spørgsmålet. Dvs. jeg har fået en router imellem lokalnettet og kabelmodemmet. Tidligere var det min linuxserver, der klarede den opgave. Derfor kan jeg nu også bedre holde øje med, om maskinen lukker internetforbindelsen eller ej.
Jeg har nu prøvet med K01 i rc0.d og rc6.d - ingen ændring. Derefter med K89 - heller intet resultat. (da Network kører som K90)
Det ser altså ikke ud til at løse mit problem - desværre
Jeg har lige forsøgt at udføre en reboot på min linux og den udføre K0x først og udføre tilsidst S00.
Har du forsøgt at ligge nogle debug info ind i dit script for nedlukning så du kan se hvad der sker reelt de kan joh være at du kalder det forkert...f.eks brug af sh istedet for bash eller sådan noget.
#!/bin/sh # Comments to support chkconfig on RedHat Linux # chkconfig: 2345 89 99 # description: Script for starting and stopping stofanet connection and # for updating dyndns.
jeg har lige prøvet de to førte ting du skrev - uden held :o(
slic er et kompilet c++ program, det har ikke noget egentligt script. Men når jeg starter eller stopper slic, kommer den med kommentarer på skærmen. (slic connected)
vil du have den linie til at stå i slic eller i internetstart ?
Jeg vil nemlig helst være fri for at skulle kompile igen slic igen.
I realiteten kan scriptet køres uden slic, idet den er blevet overflødig efter der er kommet en anden router på systemet. Jeg prøver lige at slette den linie. Men jeg tror ikke at problemet ligger der, idet jeg jo skriver til debug filen inden jeg begynder at stoppe og når alt er stoppet. Men hverken stopper eller stoppet kommer i debug filen - hvilket jo tyder på, at scriptet overhovedet ikke bliver kørt.
ja jeg skal da ærlig talt indrømme, at jeg er på nippet til at give op. Som jeg skriver i toppen, kan jeg jo køre de samme kommandoer ved at indsætte dem i scriptet, der styrer min mysql database. Og det er jo sådan jeg hidtil har afviklet dem, så det må jeg jo nok lære at leve med. Men det kunne da være rart at vide, hvorfor det ikke virker.
Prøv at implementere følgende. Jeg kan få killall til at udføre den ved at gøre følgende. #Find ud af om nettet er startet eller lukket ved udførelse. if [ -f /var/lock/subsys/network ] ; then NET="yes" else NET="no" fi
case "$1" in start) # Start daemon /usr/local/stofaControl/slic start /usr/bin/wget -q -O /data/html/linux/dyntest.htm "http://dyndns.dk/opdat.php?name=username&pw=passwd&silent=1&state=on" echo "starter - kørte netværk $NET" >> /data/internetstart.txt touch /var/lock/subsys/slic #Siger at process er startet ;; stop) # Stop daemon. echo "stopper" >> /data/internetstart.txt /usr/bin/wget -q -O /data/html/linux/dyntest.htm "http://dyndns.dk/opdat.php?name=username&pw=passwd&silent=1&state=msg" /usr/local/stofaControl/slic stop echo "stoppet, kørte netværk $NET" >> /data/internetstart.txt rm -f /var/lock/subsys/slic # Process er nu fjernet. ;; *) # usage echo "usage: $0 start|stop" exit 1 ;; esac
På denne måde er det killall som udføre det hele og det styres via subsys.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.