Služba se nechce automaticky spouštět

Pawell

Služba se nechce automaticky spouštět
« kdy: 01. 03. 2013, 00:06:40 »
Dobrý den, potřebuji poradit, jak donutit jednu službu, aby se sama automaticky spouštěla po startu systému.

Systém: Linux MINT 13, 3.2.0-38-generic-pae #61-Ubuntu SMP Tue Feb 19 12:39:51 UTC 2013 i686 i686 i386 GNU/Linux

Služba se jmenuje bumblebeed. Pokud jí spustím manuálně příkazem
Kód: [Vybrat]
sudo bumblebeed --daemon, tak se spustí a všechno funguje jak má.

Ve složce /etc/init.d je bumblebeed pouze symlink na "job pro upstart".
Ve složce /etc/init/ je bumblebeed.conf a ten se zdá být funkční (protože obsahuje skripty, kde najít NVidia ovladače atd), nicméně se prostě po startu systému NESPUSTÍ a NESPUSTÍ.  :P

Zkoušel jsem přidávat příkazy do rc.local a do programů po spuštění, ale žádná změna.

Jak snadno a rychle donutit službu, aby po startu systému opravdu běžela?

Pro jistotu ještě přibalím bumblebeed.conf:
Kód: [Vybrat]
# Upstart job for Bumblebee daemon

description "Bumblebee supporting nVidia Optimus cards"
author      "Lekensteyn <lekensteyn@gmail.com>"

# XXX: do we need to stop before / after a graphical DE like kdm?
start on    (login-session-start or desktop-session-start)
stop on     (desktop-shutdown)

# restart in case it crashed for some reason
respawn

script
libopts=

# When the user installs a nvidia package that is unknown,
# ignore the paths in bumblebee.conf and use detected ones
if ! driver=$(grep -Po '^Driver=\K.*' /etc/bumblebee/bumblebee.conf) \
|| [ -z "$driver" ] || [ "$driver" = "nvidia" ]; then
# find LibraryPath setting of nvidia section
libpath=$(awk -F[=:] '/^\[driver-nvidia\]/{d=1}/^LibraryPath=/{if(d){print $2;exit}}' \
/etc/bumblebee/bumblebee.conf) || true

# pick the first available nvidia installation (not necessary
# the latest, e.g. nvidia-current over nvidia-experimental-310)
pkgname=$(ls -1d /usr/lib/nvidia*/libGL.so | cut -d/ -f4 | head -1) || true

# When the default library path does not contain nvidia drivers,
# it is possibly not installed. If no driver is installed (no
# /usr/lib/nvidia-*), assume that the auto-detection will use
# nouveau instead and do not override paths.
if [ ! -e "$libpath/libGL.so" -a -n "$pkgname" ] && \
modprobe -nq "$pkgname"; then
# assume nvidia driver even if nouveau is already loaded
libopts="$libopts --driver nvidia"
libopts="$libopts --driver-module $pkgname"
libopts="$libopts --ldpath /usr/lib/$pkgname:/usr/lib32/$pkgname"
libopts="$libopts --module-path /usr/lib/$pkgname/xorg,/usr/lib/xorg/modules"
fi
fi

# don't use --daemon as Upstart gets confused by that.
exec '/usr/sbin/bumblebeed' --use-syslog $libopts
end script


JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Služba se nechce automaticky spouštět
« Odpověď #1 kdy: 01. 03. 2013, 00:21:37 »
Mozna je to uplne mimo, ale kdysi jsem mel linuxovy router, kde se za ziveho Lenina nechtel natahnout skript pro nastaveni iptables. Pri spusteni z terminalu vse probehlo podle ocekavani a jelo se. Vyresil jsem to tak, ze jsem ten skript vyhodil z prislusne runlevel a misto toho tam dal jednoduchy skript, ktery 2x zavolal ten firewallovy skript. A bylo vymalovano. Nikdy jsem nezjistil, v cem byl problem.

Re:Služba se nechce automaticky spouštět
« Odpověď #2 kdy: 01. 03. 2013, 07:52:12 »
Docela hezky položený dotaz. Jenom jsem nějak nepochopil, co je to "job pro upstart" :)

Zaprvé pokud to chápu správně, porovnáváš spouštění přes upstart s ručním spuštěním. To jsou dvě různé metody a pokud dávají různé výsledky, potom bude chyba s velkou pravděpodobností v upstart skriptech.

Na konci bumblebeed.conf je napsano: "don't use --daemon as Upstart gets confused by that" - musíš teda spouštění přes upstart zkoušet v době, kdy bumblebeed neběží (ověřit pomocí "ps aux | grep bumble").

Pošli výpis, co udělají příkazy:
Kód: [Vybrat]
# sudo /etc/init.d/bumblebeed start
# sudo service bumblebeed start
# sudo start bumblebeed
+ po spuštění každého z těchto příkazů se koukni do logu, jestli se tam neobjevila nějaká informace o tom, co je špatně.

Dokumentace upstart:
http://askubuntu.com/questions/19320/whats-the-recommended-way-to-enable-disable-services
http://upstart.ubuntu.com/cookbook/

Re:Služba se nechce automaticky spouštět
« Odpověď #3 kdy: 01. 03. 2013, 09:15:16 »
Ve startovacích skriptech bývá často problém s cestou k příkazu, zkuste napsat celou cestu nebo modifikovat PATH.

Pawell

Re:Služba se nechce automaticky spouštět
« Odpověď #4 kdy: 01. 03. 2013, 16:13:06 »
Tak jsem se na to vyspal, uvědomil jsem si, že službu nemůžu spouštět příkazem

Kód: [Vybrat]
bumblebeed --daemon
při startu systému, ale příkazem

Kód: [Vybrat]
service bumblebeed start, to jsem dal do rc.local a už to běží.  ;D

V čem byla chyba netuším, a služba se dá spustit příkazy (všechny fungují stejně):
Kód: [Vybrat]
$ sudo start bumblebeed
$ sudo /etc/init.d/bumblebeed start
$ sudo service bumblebeed start

Jinak netuším, proč se ta služba nespustí sama, když je tam tak hezky napsané
Kód: [Vybrat]
start on    (login-session-start or desktop-session-start)Zřejmě Linux MINT při startu a loginu uživatele se nikdy nedostane ani do jednoho stavu.  :P

[VYŘEŠENO]


Re:Služba se nechce automaticky spouštět
« Odpověď #5 kdy: 01. 03. 2013, 19:23:04 »
Kód: [Vybrat]
service bumblebeed start, to jsem dal do rc.local a už to běží.  ;D

Co je to za blobost? Tak buď tu službu přidáte do nějakého runlevelu a nebo přímo spustíte příkaz v rc.local, ale tohle je prasárna! :D