Avatar billede pbudk Nybegynder
17. januar 2002 - 22:27 Der 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.


/peter
Avatar billede peter_m Nybegynder
18. januar 2002 - 09:25 #1
Hvis du starter noget på runlevels 2345 så har du ikke shutdown/reboot med det er måske det ?
Avatar billede peter_m Nybegynder
18. januar 2002 - 09:25 #2
0 = shutdown
6 = reboot
Avatar billede peter_m Nybegynder
18. januar 2002 - 09:35 #3
Du kan også se om scriptet findes i
/etc/rc.d/rc6.d og rc0.d hvis det intet link findes der til scriptet så bliver det ikke kørt
Avatar billede pbudk Nybegynder
18. januar 2002 - 10:05 #4
vil du mene at jeg skal tilføje en chkconfig --levels 06 internetstart off ?

Hvis jeg kører chkconfig --list internetstart, siger den nemlig, at den er off i runlevels 0 og 6, mens den er on i levels 2345

Jeg tror ikke det er der problemet ligger.
Måske er det fordi killall bliver kørt inden mine scripts køres ?

/peter
Avatar billede peter_m Nybegynder
18. januar 2002 - 10:18 #5
Nu bruger jeg ikke chkconfig til at holde styr på hvad jeg gør i det forskellige runlevels..

Men du har et script som har nogle links i de forskellige /etc/rc.d/rcX.d levels

Hvis du kan finde et link til dit script rc0.d og rc6.0 så er det ok ellers bliver de ikke stoppet.

Linket skal iøvrigt være prefix med K for kill

Og killall skal udføre disse.
Avatar billede peter_m Nybegynder
18. januar 2002 - 10:22 #6
Dit script ligger i /etc/rc.d/init.d ?
Avatar billede pbudk Nybegynder
18. januar 2002 - 14:52 #7
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
Avatar billede peter_m Nybegynder
18. januar 2002 - 14:56 #8
Har du set om du har andet script med 90 som nummer?
Avatar billede pbudk Nybegynder
18. januar 2002 - 15:03 #9
hm - ja der var to andre med samme nummer, jeg prøver lige at ændre nummeret en tak
Avatar billede pbudk Nybegynder
18. januar 2002 - 15:24 #10
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.

Tak for hjælpen
Avatar billede pbudk Nybegynder
19. januar 2002 - 09:42 #11
argh - nedtur

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 ?

/Peter
Avatar billede peter_m Nybegynder
07. marts 2002 - 09:44 #12
pbudk sider lige og glor i gamle svar er dette problem blevet løst ?
Avatar billede pbudk Nybegynder
07. marts 2002 - 09:52 #13
nope - desværre ikke.

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.
Avatar billede peter_m Nybegynder
07. marts 2002 - 10:00 #14
Har du forsøgt at give den et nummer helt nede derefter prøvet helt oppe

alså først K0x derefter k9x ?
Avatar billede pbudk Nybegynder
07. marts 2002 - 10:01 #15
nej det tror jeg lige jeg vil.

Havde ellers opgivet ;o)
Avatar billede pbudk Nybegynder
07. marts 2002 - 12:18 #16
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
Avatar billede peter_m Nybegynder
07. marts 2002 - 12:29 #17
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.
Avatar billede pbudk Nybegynder
07. marts 2002 - 12:33 #18
Hm - jeg er lidt ny i at programmere noget til linux (har tidligere bare brugt den som fil- og webserver).

Hvad skal jeg sætte ind af linier for at debugge ?
Avatar billede peter_m Nybegynder
07. marts 2002 - 12:39 #19
i dit script kan du ligge nogle echo "noget" $variable >> /tmp/debug.info

mht variabler kan du kun udskrive dem hvis der er nogle

Du skal også sikre dig at der i toppen bruges #!/bin/bash eller#!/bin/sh alt efter hvilken shell der skal bruges til scriptet

Hvis der sættes variabler er det er foredel at udskrive dem da de kan fortælle dig om det er gået i ged eller ej.
Avatar billede pbudk Nybegynder
07. marts 2002 - 14:02 #20
hm - den skriver til min debug fil, når jeg starter. Men ikke når jeg slukker/rebooter.

Den kan sagtens, hvis jeg kører scriptet manuelt. Så det kan vel ikke være noget med scriptet eller ?
Avatar billede peter_m Nybegynder
07. marts 2002 - 14:10 #21
Hvis den kan starte så skal den også kunne kalde det ved at slukke at det så måske ikke virker det er en anden sag men den skal kunne kalde scripted.

d.v.s umiddelbart er det et problem med den måde du kalder det når du lukker ned.

print lige det første par linie af det script der lukker ned.
Avatar billede pbudk Nybegynder
07. marts 2002 - 14:17 #22
Det er jo ikke så langt - så du får lige det hele

#!/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.




mode=$1    # start or stop




case "$mode" 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" >> /data/internetstart.txt
 
    ;;

  '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" >> /data/internetstart.txt
   
    ;;

  *)
    # usage
    echo "usage: $0 start|stop"
    exit 1
    ;;
esac
Avatar billede pbudk Nybegynder
07. marts 2002 - 14:21 #23
Det er jo ikke så langt - så du får lige det hele

#!/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.
mode=$1    # start or stop
case "$mode" 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" >> /data/internetstart.txt
    ;;
  '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" >> /data/internetstart.txt
    ;;
  *)
    # usage
    echo "usage: $0 start|stop"
    exit 1
    ;;
esac
Avatar billede peter_m Nybegynder
07. marts 2002 - 14:31 #24
Prøv at rette følgende.

mode=$1 Den fjerne du
case "$1" in rettes til fra case "$mode" in
'start') rettes til start) samme med stop
Avatar billede peter_m Nybegynder
07. marts 2002 - 14:32 #25
sikre dig at der ingen speciel tegn er.
brug :set list i vi.
Avatar billede peter_m Nybegynder
07. marts 2002 - 14:39 #26
Lig følgende debug linie i scripted for slic stop

echo "er ved at stoppe slic - $1" >> /data/internetstart.txt
Avatar billede peter_m Nybegynder
07. marts 2002 - 14:43 #27
Hvis det ikke virker kan det være du måske skal se om det script virker i bash...retter følgende

#!/bin/sh -> #!/bin/bash
Avatar billede pbudk Nybegynder
07. marts 2002 - 14:44 #28
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)
Avatar billede pbudk Nybegynder
07. marts 2002 - 14:53 #29
nope den der med bash, virkede heller ikke.
Avatar billede peter_m Nybegynder
07. marts 2002 - 14:55 #30
Bliver dit script kaldt med parameter stop ?
Avatar billede pbudk Nybegynder
07. marts 2002 - 14:56 #31
ja hvis jeg skriver /etc/rc.d/init.d/internetstart stop

Så stopper den som den skal
Avatar billede peter_m Nybegynder
07. marts 2002 - 15:03 #32
Den linie jeg skrev

echo "er ved at stoppe slic - $1 med shell $SHELL" >> /data/internetstart.txt

Hvad visser denne ved en reboot i din log fil ?

Du kan også rette /usr/local/stofaControl/slic stop til
/usr/local/stofaControl/slic $1
Avatar billede pbudk Nybegynder
07. marts 2002 - 15:12 #33
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.
Avatar billede peter_m Nybegynder
07. marts 2002 - 16:27 #34
Bare i dit rc script.

Hvis din start bliver kaldt så skal stop også er du sikker på at dit stop kald bliver udført korrekt ?
Avatar billede pbudk Nybegynder
07. marts 2002 - 17:16 #35
Når jeg stopper den manuelt kommer følgende output:

er ved at stoppe slic - stop med shell /bin/bash

Men der er intet output ved shutdown/reboot.
Avatar billede peter_m Nybegynder
07. marts 2002 - 20:12 #36
hrm,

Oplevet lidt spøjsed noget for mine kommentare har dit navn som opretter.

Kan du vise din linkning for dit script ?
Avatar billede pbudk Nybegynder
07. marts 2002 - 21:29 #37
Jeg har oplevet en del problemer på eksperten her til aften.
Hvad mener du med linkning ?

Der ligger "symbolske" links her:

rc0.d: K09internetstart
rc2.d: S89internetstart
rc3.d: S89internetstart
rc4.d: S89internetstart
rc5.d: S89internetstart
rc6.d: K09internetstart

Var det det du mente ?
Avatar billede peter_m Nybegynder
08. marts 2002 - 09:12 #38
Yderst mærkeligt jeg fatter ikke lige hvorfor K scripted ikke bliver kørt

Laver lige et test script på min egen.
Avatar billede pbudk Nybegynder
08. marts 2002 - 09:29 #39
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.
Avatar billede peter_m Nybegynder
08. marts 2002 - 10:14 #40
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.
Avatar billede peter_m Nybegynder
08. marts 2002 - 10:16 #41
Og hvis du brug #!/bin/sh i toppen og

rette kald af slic og wget til dette.

. /usr/local/stofaControl/slic start/stop
. /usr/bin/wget xxxxxxx
Avatar billede pbudk Nybegynder
08. marts 2002 - 10:36 #42
Den skriver blot:

starter - kørte netværk yes
Avatar billede pbudk Nybegynder
08. marts 2002 - 10:37 #43
Jeg har prøvet både med sh og bash
Avatar billede peter_m Nybegynder
08. marts 2002 - 10:39 #44
d.v.s. den skriver intet når du udføre en shutdown -r ???
Avatar billede peter_m Nybegynder
08. marts 2002 - 10:39 #45
Og har du husket det subsys jeg har tilføjet ?
Avatar billede pbudk Nybegynder
08. marts 2002 - 10:39 #46
ja
Avatar billede pbudk Nybegynder
08. marts 2002 - 10:41 #47
jeg har erstattet mit oprindelige script (pånær de øverste 5 linier) med dit nye script.
Avatar billede peter_m Nybegynder
08. marts 2002 - 10:45 #48
Jeg må give fortabt.

Det virkede ellers på min 6.2 RH
Avatar billede pbudk Nybegynder
08. marts 2002 - 10:46 #49
pyt med det.
Jeg kan godt leve med at den starter og stopper sammen med mysql i stedet.
Avatar billede peter_m Nybegynder
08. marts 2002 - 10:48 #50
Vil du have nogle point tilbage eftersom det ikke kom til at virke ?
Avatar billede pbudk Nybegynder
08. marts 2002 - 10:49 #51
Nej - du har lagt hårdt arbejde i det, så de er skam velfortjent :o)
Avatar billede peter_m Nybegynder
08. marts 2002 - 10:52 #52
Det er så iorden :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester