Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: globaluty в Aug 11, 2015, 17:48



Титла: Стартиране на service
Публикувано от: globaluty в Aug 11, 2015, 17:48
Здравейте, опитвам се да стартирам един процес като service.

Tова е най-обикновен скрипт, който съм поставил в /etc/init.d/:

Код
GeSHi (Bash):
  1. #! /bin/sh
  2. # /etc/init.d/blah
  3. #
  4.  
  5. # Some things that run always
  6. touch /var/lock/blah
  7.  
  8. # Carry out specific functions when asked to by the system
  9. case "$1" in
  10.  start)
  11.    echo "Starting script blah"
  12.    echo "/bin/bash /home/dido/user/start.sh"
  13.    ;;
  14.  stop)
  15.    echo "Stopping script blah"
  16.    echo "kill $(ps aux | grep '[79].xx.xx.xx -port 27050' | awk '{print $2}')"
  17.    ;;
  18.  *)
  19.    echo "Usage: /etc/init.d/blah {start|stop}"
  20.    exit 1
  21.    ;;
  22. esac
  23.  
  24. exit 0

Изпълнени командите в терминала /bin/bash /home/dido/user/start.sh и kill $(ps aux | grep '[79].xx.xx.xx -port 27050' | awk '{print $2}'), работят безотказно, но в самия скрипт при стартиране и спиране не работят.

Благодаря предварително за помощта.


Титла: Re: Стартиране на service
Публикувано от: BRADATA в Aug 11, 2015, 18:02
Използвай пълни пътища за всичко. Включително ps, grep, awk ...


Титла: Re: Стартиране на service
Публикувано от: globaluty в Aug 11, 2015, 18:41
bin/bash /home/dido/user/start.sh - те това е пълният път до скрипта, а за grep-a не ми е ясно как трябва да е пълен

В случая когато се опитам да стартирам или да спра чрез тоя скрипт, просто ми изписва в терминала съответните неща, без да предприема действия.


Титла: Re: Стартиране на service
Публикувано от: laskov в Aug 11, 2015, 20:12
... просто ми изписва в терминала съответните неща, без да предприема действия.
Ами то echo точно това прави - показва нещо на екрана.


Титла: Re: Стартиране на service
Публикувано от: BRADATA в Aug 12, 2015, 07:28
Малии колко не гледаме като четем :) Чак не ми е направило впечатление :)


Титла: Re: Стартиране на service
Публикувано от: sopata в Aug 12, 2015, 11:11
#! /bin/sh
    # /etc/init.d/blah
    #
     
    # Some things that run always
    touch /var/lock/blah
     
    # Carry out specific functions when asked to by the system
    case "$1" in
     start)
       echo "Starting script blah"
       sh ./home/dido/user/start.sh
       ;;
     stop)
       echo "Stopping script blah"
      kill $(ps aux | grep '[79].xx.xx.xx -port 27050' | awk '{print $2}')
       ;;
     *)
       echo "Usage: /etc/init.d/blah {start|stop}"
       exit 1
       ;;
    esac
     
    exit 0


Титла: Re: Стартиране на service
Публикувано от: globaluty в Aug 12, 2015, 14:30
С /bin/sh /home/dido... стана.

Работи, но когато пробвам /etc/init.d/blah start в нов терминал, нищо не се случва. Трябва първо да стартирам сървъра с ./start.sh (както си го стартирам досега), чак след това проработва скрипта.  ::)


Титла: Re: Стартиране на service
Публикувано от: sopata в Aug 12, 2015, 17:58
Set service to auto-start on boot in Linux Mint, Ubuntu, Debian :

update-rc.d servicename defaults


#Enable a service during start up in CentOS, RedHat :

chkconfig servicename on

 [_]3


Титла: Re: Стартиране на service
Публикувано от: globaluty в Aug 12, 2015, 18:53
Код
GeSHi (Bash):
  1. root@debian:/etc/init.d# update-rc.d blah defaults
  2. update-rc.d: using dependency based boot sequencing
  3. insserv: warning: script 'blah' missing LSB tags and overrides
  4. insserv: There is a loop between service monit and blah if stopped
  5. insserv:  loop involving service blah at depth 2
  6. insserv:  loop involving service monit at depth 1
  7. insserv: Stopping blah depends on monit and therefore on system facility `$all' which can not be true!
  8. insserv: exiting now without changing boot order!
  9. update-rc.d: error: insserv rejected the script header

Пробвах да премахна insserv.

Код
GeSHi (Bash):
  1. root@debian:/etc/init.d# apt-get remove insserv
  2. Reading package lists... Done
  3. Building dependency tree
  4. Reading state information... Done
  5. Some packages could not be installed. This may mean that you have
  6. requested an impossible situation or if you are using the unstable
  7. distribution that some required packages have not yet been created
  8. or been moved out of Incoming.
  9. The following information may help to resolve the situation:
  10.  
  11. The following packages have unmet dependencies:
  12. apache2.2-common : Depends: procps but it is not going to be installed
  13. E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

Dunno.  :(


Титла: Re: Стартиране на service
Публикувано от: sopata в Aug 12, 2015, 19:08
update-rc.d /home/dido/user/start.sh defaults


Титла: Re: Стартиране на service
Публикувано от: globaluty в Aug 12, 2015, 19:16
root@debian:/etc/init.d# update-rc.d /home/dido/user/start.sh defaults
update-rc.d: using dependency based boot sequencing
update-rc.d: error: unable to read /etc/init.d//home/dido/user/start.sh


Титла: Re: Стартиране на service
Публикувано от: sopata в Aug 13, 2015, 10:47
Пробвай така:

insserv blah

Инфото е от тук:

https://wiki.debian.org/LSBInitScripts/DependencyBasedBoot


Титла: Re: Стартиране на service
Публикувано от: globaluty в Aug 13, 2015, 14:08
insserv: warning: script 'blah' missing LSB tags and overrides
insserv: There is a loop between service monit and blah if stopped
insserv:  loop involving service blah at depth 2
insserv:  loop involving service monit at depth 1
insserv: Stopping blah depends on monit and therefore on system facility `$all' which can not be true!
insserv: exiting now without changing boot order!


Освен да сложа тея тагове, но не знам какви са.


Титла: Re: Стартиране на service
Публикувано от: sopata в Aug 13, 2015, 15:32
Виж в локалния ти man какво дават за пример:

man insserv

С коя версия си на Debian?


Титла: Re: Стартиране на service
Публикувано от: globaluty в Aug 13, 2015, 16:50
Същото е: http://www.unix.com/man-page/linux/8/insserv/

Използвам Debian 7.8.