Avaleht
uus teema   vasta Tarkvara »  Linux & UNIX »  Skripti käivitamine "teenusena" ebaõnnestub märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
warwas
HV Guru
warwas

liitunud: 06.07.2003



Autoriseeritud ID-kaardiga

sõnum 29.10.2015 19:37:25 Skripti käivitamine "teenusena" ebaõnnestub vasta tsitaadiga

Lugu iseenesest lihtne - on üks bash'i skript, mis oleks vaja init skripti abil käima tõmmata.

Skript selline:
bash:
  1. #!/bin/bash
  2. . /etc/adex-player.conf
  3.  
  4. while true; do
  5.         down=$(ifstat -b -q -S 0.1 1 | perl -n -e '/(\d+\.\d+).*(\d+\.\d+)/ && print "$1"')
  6.         threshold=1000
  7.         comp=$(echo $down'<'$threshold | bc -l)
  8.  
  9.         if [ $comp -ne 0 ]
  10.         then
  11.                 logger "Restarting player service"
  12.                 service adex-player restart
  13.         fi
  14.  
  15.         logger "Sleeping for $CHECK_DELAY"
  16.         sleep $CHECK_DELAY
  17. done

Init selline:
bash:
  1. #!/bin/bash
  2. # Start on runlevels 3, 4 and 5.
  3. # chkconfig: 345 95 05
  4. #!/bin/bash
  5.  
  6. # absolute path to executable binary
  7. progpath='/usr/bin/adex-watchdog.sh'
  8.  
  9. # arguments to script
  10. opts=''
  11.  
  12. # binary program name
  13. prog=$(basename $progpath)
  14.  
  15. # pid file
  16. pidfile="/var/run/${prog}.pid"
  17.  
  18. # make sure full path to executable binary is found
  19. ! [ -x $progpath ] && echo "$progpath: executable not found" && exit 1
  20.  
  21. eval_cmd() {
  22.   local rc=$1
  23.   if [ $rc -eq 0 ]; then
  24.     echo '[  OK  ]'
  25.   else
  26.     echo '[FAILED]'
  27.   fi
  28.   return $rc
  29. }
  30.  
  31. start() {
  32.   # see if running
  33.   local pids=$(pgrep $prog)
  34.  
  35.   if [ -n "$pids" ]; then
  36.     echo "$prog (pid $pids) is already running"
  37.     return 0
  38.   fi
  39.   printf "%-50s%s" "Starting $prog: " ''
  40.   $progpath $opts &
  41.  
  42.   # save pid to file if you want
  43.   echo $! > $pidfile
  44.  
  45.   # check again if running
  46.   pgrep $prog >/dev/null 2>&1
  47.   eval_cmd $?
  48. }
  49.  
  50. stop() {
  51.   # see if running
  52.   local pids=$(pgrep $prog)
  53.  
  54.   if [ -z "$pids" ]; then
  55.     echo "$prog not running"
  56.     return 0
  57.   fi
  58.   printf "%-50s%s" "Stopping $prog: " ''
  59.   rm -f $pidfile
  60.   kill -9 $pids
  61.   eval_cmd $?
  62. }
  63.  
  64. status() {
  65.   # see if running
  66.   local pids=$(pgrep $prog)
  67.  
  68.   if [ -n "$pids" ]; then
  69.     echo "$prog (pid $pids) is running"
  70.   else
  71.     echo "$prog is stopped"
  72.   fi
  73. }
  74.  
  75. case $1 in
  76.   start)
  77.     start
  78.     ;;
  79.   stop)
  80.     stop
  81.     ;;
  82.   status)
  83.     status
  84.     ;;
  85.   restart)
  86.     stop
  87.     sleep 1
  88.     start
  89.     ;;
  90.   *)
  91.     echo "Usage: $0 {start|stop|status|restart}"
  92.     exit 1
  93. esac
  94.  
  95. exit $?


Teenuse käivitamisel aga juhtub nii:
pi@pleier ~ $ sudo service adex-watchdog start
Job for adex-watchdog.service failed. See 'systemctl status adex-watchdog.service' and 'journalctl -xn' for details.
pi@pleier ~ $ sudo systemctl status adex-watchdog.service
● adex-watchdog.service - (null)
   Loaded: loaded (/etc/init.d/adex-watchdog)
   Active: failed (Result: exit-code) since Thu 2015-10-29 18:26:45 EET; 35s ago

Oct 29 18:26:45 pleier adex-watchdog[5273]: Starting adex-watchdog.sh:                        [FAILED]
Oct 29 18:26:45 pleier systemd[1]: adex-watchdog.service: control process exited, code=exited status=1
Oct 29 18:26:45 pleier systemd[1]: Failed to start (null).
Oct 29 18:26:45 pleier systemd[1]: Unit adex-watchdog.service entered failed state.
Oct 29 18:26:45 pleier adex-watchdog[5273]: Job for adex-player.service failed. See 'systemctl status adex-player.service' and 'journ...etails.


Niisama käsitsi käivitades tööta skript kenasti. Feilib ainult siis, kui tahta läbi init'i käivitada.
Kusjuures kõige kummalisem on see, et see skript läheb tegelikult ka läbi init'i käima. Annab vea aga tegelikult läheb käima. Kuna ta aga jääb kuhugi "ula peale", siis 'stop' käsule ta enam ei allu ja tuleb vajadusel käsitsi ära killida.

Ehk siis minu küsimus oleks see, et mille abil ma välja saan peilida selle "exit=1" põhjuse?


viimati muutis warwas 29.10.2015 19:47:37, muudetud 1 kord
Kommentaarid: 247 loe/lisa Kasutajad arvavad:  :: 0 :: 3 :: 224
tagasi üles
vaata kasutaja infot saada privaatsõnum
mihkelv
HV kasutaja

liitunud: 25.02.2004




sõnum 29.10.2015 19:42:17 vasta tsitaadiga

Miks sa kasutad systm-v init skripti, kui sul on systemd?
Kommentaarid: 6 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 5
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
warwas
HV Guru
warwas

liitunud: 06.07.2003



Autoriseeritud ID-kaardiga

sõnum 29.10.2015 20:02:28 vasta tsitaadiga

mihkelv kirjutas:
Miks sa kasutad systm-v init skripti, kui sul on systemd?

Täiesti õigustatud küsimus. Eelmist posti kirjutades jäin just sama asja peale mõtlema, et äkki peaks selle asja üldse tervenisti systemd peale ringi tegema.

Kuna aga systemd peaks ju suuremalt jaolt "alla poole" ühilduv olema, siis vaatamata sellele, et praegu on see mul SystemV peale rihitud, peaks ta ikkagi toimima.
Seda enam, et samas masinas analoogne skript jookseb ilusti ilma probleemideta käima.

Aga selle systemd peale 'migreerimise' proovin igatahes ära. thumbs_up.gif
Kommentaarid: 247 loe/lisa Kasutajad arvavad:  :: 0 :: 3 :: 224
tagasi üles
vaata kasutaja infot saada privaatsõnum
Supiplex
HV veteran
Supiplex

liitunud: 11.12.2002




sõnum 30.10.2015 22:50:37 vasta tsitaadiga

Võib juhtuda näiteks et initskripti käivitaval asjal on PATH-ist "/usr/bin" puudu. Proovi lisada oma initskripti algusesse midagi taolist "PATH=/sbin:/bin:/usr/bin"
_________________
The young lady had an unusual list,
Linked in part to a structural weakness.
She set no preconditions.
Kommentaarid: 38 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Linux & UNIX »  Skripti käivitamine "teenusena" ebaõnnestub
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.