Portál AbcLinuxu, 10. května 2025 06:13
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.