Skript zum Starten von lineakd

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
jyoti
Beiträge: 27
Registriert: 17.12.2002 17:27:13
Wohnort: Frankreich

Skript zum Starten von lineakd

Beitrag von jyoti » 11.06.2003 13:05:24

Hi !


Zum Starten von lineakd soll folgendes Kommando ausgeführt werden :

/usr/bin/lineakd -b

Wie sieht ein Skript zum automatischen Start von lineakd aus ? An welche Stelle ansetzen ?
Ich habe versucht, einen Skript zu schreiben, mit update-rc.d, mit webmin, mit einem
Skriptmodell, geht alles nicht .... Jedesmal muss ich eine Konsole aufmachen, /
usr/bin/lineakd -b eintippen .... Ich hätte es gern, wenn das Programm beim Booten
automatisch starten würde
und dies unabhängig vom Window Manager oder von der Session, die ich starte.


Könnte präzise Hilfe gut gebrauchen.....


Jyoti

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 11.06.2003 14:16:22

http://www.debianforum.de/forum/viewtop ... nit+script

Dabei wird das Script dann beim Booten gestartet.

edit: Schau mal unter /etc/init.d/ nach, dort gibts auch gute "Beispiele".

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 11.06.2003 14:35:37

Ah, ich seh gerade es gibt sogar ein vorgefertigtes Skelett, dass du nur noch abändern musst unter /etc/init.d/skeleton

jyoti
Beiträge: 27
Registriert: 17.12.2002 17:27:13
Wohnort: Frankreich

Beitrag von jyoti » 11.06.2003 16:32:00

Hi,

Danke für die Antwort ..... /etc/init.d/skeleton , daran hatte ich schon gedacht, ist leider für
einen Anfänger zu schwer? Ich blick' da ehrlich nicht durch, wohin gehört mein Kpommando -
usr/bin/lineakd -b- ? .


Besten Dank


Jyoti

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 11.06.2003 16:41:20

Code: Alles auswählen

#! /bin/sh
#
# skeleton	example file to build /etc/init.d/ scripts.
#		This file should be used to construct scripts for /etc/init.d.
#
#		Written by Miquel van Smoorenburg <miquels@cistron.nl>.
#		Modified for Debian GNU/Linux
#		by Ian Murdock <imurdock@gnu.ai.mit.edu>.
#
# Version:	@(#)skeleton  1.9.1  08-Apr-2002  miquels@cistron.nl
#

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON="/usr/bin/lineakd -b"
NAME=lineakd
DESC="lineak daemon"

test -x $DAEMON || exit 0

set -e

case "$1" in
  start)
	echo -n "Starting $DESC: $NAME"
	start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
		--exec $DAEMON
	echo "."
	;;
  stop)
	echo -n "Stopping $DESC: $NAME "
	start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
		--exec $DAEMON
	echo "."
	;;
  #reload)
	#
	#	If the daemon can reload its config files on the fly
	#	for example by sending it SIGHUP, do it here.
	#
	#	If the daemon responds to changes in its config file
	#	directly anyway, make this a do-nothing entry.
	#
	# echo -n "Reloading $DESC configuration..."
	# start-stop-daemon --stop --signal 1 --quiet --pidfile \
	#	/var/run/$NAME.pid --exec $DAEMON
	# echo "done."
  #;;
  restart|force-reload)
	#
	#	If the "reload" option is implemented, move the "force-reload"
	#	option to the "reload" entry above. If not, "force-reload" is
	#	just the same as "restart".
	#
	echo -n "Restarting $DESC: $NAME"
	start-stop-daemon --stop --quiet --pidfile \
		/var/run/$NAME.pid --exec $DAEMON
	sleep 1
	start-stop-daemon --start --quiet --pidfile \
		/var/run/$NAME.pid --exec $DAEMON
	echo "."
	;;
  *)
	N=/etc/init.d/$NAME
	# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
	echo "Usage: $N {start|stop|restart|force-reload}" >&2
	exit 1
	;;
esac

exit 0
So müsste das ganze funktionieren.

jyoti
Beiträge: 27
Registriert: 17.12.2002 17:27:13
Wohnort: Frankreich

Beitrag von jyoti » 11.06.2003 18:39:23

Besten Dank für die Hilfe !

Bevor ich es versuche, wie soll ich den Skript nennen ? Einfach lineakd ?

Und in welches Verzeichnis gehört er ??


Jyoti

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 11.06.2003 19:38:18

Ist egal wie du es benennst. Der Übersicht halber wäre lineakd allerdings nicht schlecht. ;)

Also:

1. Umbennenen in lineakd
2. ausführbar machen mit chmod +x lineakd
3. nach /etc/init.d/ kopieren
4. cd /etc/rc2.d
5. ln -s ../init.d/lineakd SXXlineakd

Wobei XX eine Zahl ist, die in dem rc2.d Verzeichnis noch nicht verwendet wird.

6. fertig

Beim nächsten Booten sollte lineakd mitgestartet werden.

jyoti
Beiträge: 27
Registriert: 17.12.2002 17:27:13
Wohnort: Frankreich

Beitrag von jyoti » 11.06.2003 20:18:17

So,so, so .... alles genau ausgeführt, beim Booten bekomme ich aber folgendes warning
message :

/etc/rc2.d/S40lineakd line19: test:/usr/bin/lineakd : binary operator expected

Ist bestimmt nur eine Kleinigkeit , sonst startet der Skript problemlos.


Jyoti

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 11.06.2003 20:32:20

Ok, sorry. Mein Fehler hab nicht nachgeguckt für was der Daemon eigentlich ist. Es steht auch in der Dokumentation, dass man den Befehl einfach in die .xsession schreiben kann.

Also vergiss das Ganze mit dem Script. Öffne die .xsession in deinem Homeverzeichnis. Und füge den Befehl /usr/bin/lineakd -b hinzu. Bei mir würde das so aussehen:

Code: Alles auswählen

/sbin/hddtemp -d /dev/hda &
gkrellm -w &
wmxmms &
nohup idesk > /dev/null &
/usr/bin/lineakd -b &
exec fluxbox 

jyoti
Beiträge: 27
Registriert: 17.12.2002 17:27:13
Wohnort: Frankreich

Beitrag von jyoti » 11.06.2003 20:52:54

Also, bei mir sieht /home/claude/.xsession so aus :

# ---- language-env DON'T MODIFY THIS LINE!
# set LANG
LANG=fr_FR@euro
export LANG

if [ -x "$WINDOW_MANAGER" ]; then
realstartup=$WINDOW_MANAGER
elif [ -x /usr/bin/x-session-manager ]; then
realstartup=x-session-manager
elif [ -x /usr/bin/x-window-manager ]; then
realstartup=x-window-manager
elif [ -x /usr/bin/x-terminal-emulator ]; then
realstartup=x-terminal-emulator
fi
exec $realstartup
# ---- language-env end DON'T MODIFY THIS LINE!


Soll ich das Kommando /usr/lbin/lineakd -b einfach so unten hintippen ??
Ich hatte es versucht, hat nicht funktioniert , vielleicht hatte ich was vergessen ?



Jytoi

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 11.06.2003 21:29:56

Wie startest du denn normalerweise X, mit startx oder über einen Loginmanager wie KDM, GDM oder XDM?

Es ist nämlich so, dass .xsession nur für Loginmanager benutzt wird, für startx wird die Datei .xinitrc verwendet.
Sieht deine .xinitrc genauso aus?

Jedenfalls müsste dein Befehl in die vorletzte Zeile, also zwischen fi und exec $realstartup

fi
/usr/bin/lineakd -b &
exec $realstartup

jyoti
Beiträge: 27
Registriert: 17.12.2002 17:27:13
Wohnort: Frankreich

Beitrag von jyoti » 11.06.2003 22:15:41

Bei mir wird , je nach Laune, über gdm oder kdm eine Xsession gestartet .
Also, habe ich es mit ~/.Xsession versucht , hat aber nicht geklappt.

so sieht's aus :

# ---- language-env DON'T MODIFY THIS LINE!
# set LANG
LANG=fr_FR
export LANG

if [ -x "$WINDOW_MANAGER" ]; then
realstartup=$WINDOW_MANAGER
elif [ -x /usr/bin/x-session-manager ]; then
realstartup=x-session-manager
elif [ -x /usr/bin/x-window-manager ]; then
realstartup=x-window-manager
elif [ -x /usr/bin/x-terminal-emulator ]; then
realstartup=x-terminal-emulator
fi
/usr/bin/lineakd -b &
exec $realstartup
# ---- language-env end DON'T MODIFY THIS LINE!


besten dank für die Hilfe.


Jyoti

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 11.06.2003 22:52:39

Also laut Doku, liegt die binary in /usr/local/bin/. Versuchs mal damit.

Bist du dir auch sicher, dass du lineak schon konfiguriert hast etc?

jyoti
Beiträge: 27
Registriert: 17.12.2002 17:27:13
Wohnort: Frankreich

Beitrag von jyoti » 12.06.2003 06:55:10

Das Ding wurde mit #apt-get install lineakd installiert, also liegt die binary in /usr/bin
in usr/local/bin, sind wenige Sachen, da ich wenige Pakete manuell installiere.


Es ist schon halb konfiguriert, aber sonst habe ich ein paar Tasten gebunden, und dann apply , kein Problem, es geht, ich kann sowieso meine Konfig nur dann registrieren , wenn ich lineakd -b manuell gestartet habe.



Jyoti

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 12.06.2003 11:07:50

Hmm, dann sollte die .Xsession eigentlich auch funktionieren. Schau mal nach ob du noch ne .xsession Datei in deinem Homeverzeichnis hast, und wie sieht deine .xinitrc aus? Und welchen Windowmanager verwendest du, dann schreiben wir im Notfall einfach ne neue .xsession.

jyoti
Beiträge: 27
Registriert: 17.12.2002 17:27:13
Wohnort: Frankreich

Beitrag von jyoti » 12.06.2003 11:40:25

Bin im Moment nicht zu Hause. Aber: so viel ich weiß, ist in meinem Homeverzeichnis
nur eine .xsession - und ein Backup. /home/claude/.xsession

Im Root -Verzeichnis ist auch so eine Datei + Backup .

Als Windowmanager verwende ich entweder KDE , wenn ich mich ab und zu als Root einlogge, sonst Sawfish (Gnome-Session) oder auch wmaker , enlightenment. Deshalb wollte ich das Ding unabhängig vom Windowmanager gestartet haben.


Was xinitrc. anbelangt, kann ich erst heute Nachmittag eine Antwortgebe, wenn ich mal
wieder vorm Hauscomputer sitze.


Danke für die Hilfe und die Geduld.

Jyoti

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 12.06.2003 11:59:00

Die Backup-Datei heißt .xsession? Dann könnte das vielleicht schon die Lösung sein.

jyoti
Beiträge: 27
Registriert: 17.12.2002 17:27:13
Wohnort: Frankreich

Beitrag von jyoti » 12.06.2003 18:11:39

Backup-Dateien entfernt. Geht immer noch nicht.


Du hast nach xinitrc gefragt. So sieht's aus :

#!/bin/sh
# $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $

# /etc/X11/xinit/xinitrc
#
# global xinitrc file, used by all X sessions started by xinit (startx)

# invoke global X session script
. /etc/X11/Xsession


Uübrigens, es gibt doch eine andere Xsession-Datei
(andere als /root/.xsession oder /home/claude/.xsession

/etc/X11/Xsession :

#!/bin/sh
#
# /etc/X11/Xsession
#
# global Xsession file -- used by display managers and xinit (startx)

set -e

message () {
# pretty-print messages of arbitrary length
echo "$*" | fold -s -w ${COLUMNS:-80} >&2;
}

message_nonl () {
# pretty-print messages of arbitrary length (no trailing newline)
echo -n "$*" | fold -s -w ${COLUMNS:-80} >&2;
}

errormsg () {
# exit script with error
message "$*"
exit 1;
}

internal_errormsg () {
# exit script with error; essentially a "THIS SHOULD NEVER HAPPEN" message
message "$*"
message "Please report the package name, version, and the text of the" \
"above error message(s) to <debian-x@lists.debian.org>.";
exit 1;
}

run_parts () {
# until run-parts --noexec is implemented
if [ -z "$1" ]; then
internal_errormsg "internal run_parts called without an argument"
fi
if [ ! -d "$1" ]; then
internal_errormsg "internal run_parts called, but $1 does not exist or is not a directory."
fi
for F in $(ls $1); do
if expr "$F" : '[[:alnum:]_-]\+$' > /dev/null 2>&1; then
if [ -f "$1/$F" ]; then
echo "$1/$F"
fi
fi
done;
}

# initialize variables for use by all session scripts

OPTIONFILE=/etc/X11/Xsession.options

SYSRESOURCES=/etc/X11/Xresources
USRRESOURCES=$HOME/.Xresources

SYSSESSIONDIR=/etc/X11/Xsession.d
STARTUP=$HOME/.xsession
ALTSTARTUP=$HOME/.Xsession
ERRFILE=$HOME/.xsession-errors

# attempt to create an error file; abort if we cannot
if touch $ERRFILE 2> /dev/null && [ -w $ERRFILE ]; then
chmod 600 "$ERRFILE"
elif ERRFILE=$(tempfile 2> /dev/null); then
if ! ln -sf "$ERRFILE" "${TMPDIR:=/tmp}/xsession-$USER"; then
message "Xsession: unable to symlink \"$TMPDIR/xsession-$USER\" to" \
"\"$ERRFILE\"."
fi
else
errormsg "Xsession: unable to create X session log/error file. Aborting."
fi

exec > "$ERRFILE" 2>&1

# sanity check; is our session script directory present?
if [ ! -d "$SYSSESSIONDIR" ]; then
errormsg "Xsession: no $SYSSESSIONDIR directory found. Aborting." >&2
fi

# use run-parts to source every file in the session directory; we source
# instead of executing so that the variables and functions defined above
# are available to the scripts, and so that they can pass variables to each
# other
SESSIONFILES=$(run_parts $SYSSESSIONDIR)
if [ -n "$SESSIONFILES" ]; then
for SESSIONFILE in $SESSIONFILES; do
. $SESSIONFILE
done
fi

exit 0

# vim:ai:et:sts=2:sw=2:tw=80:




Wäre da nicht etwas zu machen ??


Jyoti

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 12.06.2003 22:17:05

Die Dateien im /etc Verzeichnis sind nicht von belang, da du ja ne .xsession in deinem Homeverzeichnis hast werden die Dateien in /etc ignoriert.
Als Windowmanager verwende ich entweder KDE , wenn ich mich ab und zu als Root einlogge, sonst Sawfish (Gnome-Session) oder auch wmaker , enlightenment. Deshalb wollte ich das Ding unabhängig vom Windowmanager gestartet haben.
Wenn du aber wmaker und enlightenment auch über gdm startest, kann das keine Xsession sein, dann hast du direkt den Windowmanager ausgewählt. Wähl mal in gdm links oben im Menü, xsession aus. Dann muss das ganze funktionieren, und deine .xsession Datei auch wirklich ausgeführt werden.

jyoti
Beiträge: 27
Registriert: 17.12.2002 17:27:13
Wohnort: Frankreich

Beitrag von jyoti » 13.06.2003 14:10:35

So, so, so, das wär' es , es funktioniert jetzt alles problemlos.
Ich brauche das nicht mehr manuell zu starten ...

Bedanke mich für die ausdauernde Hilfe.


Jyoti

Chimerer
Beiträge: 514
Registriert: 28.01.2002 16:10:44

Beitrag von Chimerer » 13.06.2003 14:18:45

Hast du xsession ausgewählt oder wie hast du es jetzt gelöst?
Bedanke mich für die ausdauernde Hilfe.
np ;)

jyoti
Beiträge: 27
Registriert: 17.12.2002 17:27:13
Wohnort: Frankreich

Beitrag von jyoti » 13.06.2003 17:07:13

Habe xsession ausgewählt , wenn ich mal über gdmGnome-session auswähle, dann klappt das
sowieso über die Autostart-Funktion.

Jyoti

stenneken
Beiträge: 32
Registriert: 26.12.2002 12:01:44

Beitrag von stenneken » 23.07.2003 22:40:48

Ich habe einfach unter dem User der Lineakd (das bin ja ich) unter .kde/Autostart ein
ln -s ....zu lineakd gemacht.
Falls ich kde starte startet auch lineakd mit....und fertig....


Gruß
Jens

Antworten