Portál AbcLinuxu, 10. listopadu 2025 21:43
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
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…
(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 ) &
3. Příkaz ve startovacím skriptu změním na
kde zdrojový kód xdmvncd je
/usr/local/bin/xdmvncd
takto to funguje i bez čekání.
#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;
}
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
Na otázku zatím nikdo bohužel neodpověděl.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.