Portál AbcLinuxu, 10. května 2025 06:13

Dotaz: Spuštění služby při startu systému

19.8.2006 18:16 PP | skóre: 2 | blog: RFC
Spuštění služby při startu systému
Přečteno: 535×
Odpovědět | Admin

Zdravím,
měl bych otázku ohledně spouštění systému (konkrétně se jedná o NetBSD 3.0.1, ale snad to funguje obecně stejně i v GNU/Linux).

Vytvořil jsem si startovací skript s příkazem

/usr/X11R6/bin/xinit /usr/pkg/bin/vncviewer -fullscreen -truecolor \
10.0.0.10:0 -- /usr/X11R6/bin/X :2 vt07 -nolisten tcp \
> /var/log/xdmvnc.log 2>&1

Problém je, že pokud napíšu přímo jen takto příkaz, tak se zastaví další spouštění. To jsem potřeboval vyřešit. Zkusil jsem tyto možnosti:

1. Pokud na konec příkazu přidám ampersand, aby se spouštěl na pozadí, tak se spuštění při startu počítače neprovede správně a na konci logu /var/log/xdmvnc se po hláškách o spouštění X serveru objeví

CleanupSignalHandler called
^M
waiting for X server to shut down
^M
/usr/X11R6/bin/xinit:  unexpected signal 2.

Z toho se moc vyčíst nedá. :( Není tam ani jedna hláška od vncviewer. Zajímavé je také, že při spuštění z už naběhnutého systému se tento skript vykoná správně.

2. Pokud příkaz poupravím do podoby

(sleep 30; /usr/X11R6/bin/xinit /usr/pkg/bin/vncviewer -fullscreen -truecolor \
10.0.0.10:0 -- /usr/X11R6/bin/X :2 vt07 -nolisten tcp ) &
tak systém naběhne a dá se na něm normálně pracovat a po těch 30 sekundách se úspěšně spustí ten xinit. To je sice hezké, ale tím se problém pouze obejde a já bych ho rád vyřešil…

3. Příkaz ve startovacím skriptu změním na

/usr/local/bin/xdmvncd
kde zdrojový kód xdmvncd je
#include <stdlib.h>

int main(void)
{
  daemon(0, 0);
  system("/usr/X11R6/bin/xinit /usr/pkg/bin/vncviewer -fullscreen -truecolor "
         "10.0.0.10:0 -- /usr/X11R6/bin/X :2 vt07 -nolisten tcp");
  return 0;
}
takto to funguje i bez čekání.

Otázka tedy je, co způsobí, že dojde k selhání v prvním případě? Tipuji to na to, že příkaz je v prvním případě spojen s ttyE0, a tak "něco" způsobí, že selže. Bohužel nevidím žádnou službu, která by to mohla způsobovat.

...
Starting xdmvnc.
Starting xdm.
Starting sshd.
Starting sendmail.
Setting mixerctl variables...
Starting inetd.
Starting cron.

A jako doplňující otázku bych se rád zeptal, zda je nějaký jednoduchý program, který by zajišťoval to, co zajišťuje funkce daemon(3).

Předem děkuji za konstruktivní odpovědi, snad to nedělám úplně špatně…

Použité programy

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Na otázku zatím nikdo bohužel neodpověděl.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.