Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Linux/UNIX Linuxverfechter finden hier Weggefährten.

Init Script

Diskussion: Init Script im Forum Linux/UNIX, in der Kategorie Operating Systems; Anzeige Hi, ich habe mir für ein Script in Init Script gebastelt. Dabei hab ich mich an in vorhandes angelehnt ...

Antwort
Alt 12.07.08, 15:49   #1 (permalink)
Senior Member
 
Registriert seit: 26.03.06
Serow Leistung: 8086
Likes: 16
Standard Init Script

Anzeige

Hi,

ich habe mir für ein Script in Init Script gebastelt. Dabei hab ich mich an in vorhandes angelehnt (ist das erst Mal dass ich sowas mache):

Code:
#! /bin/sh
NAME="autorotate"
DESC="Rotates the screen according to HDAPS sensors"
SCRIPTNAME="/etc/init.d/autorotate"
DAEMON="/usr/local/bin/$NAME"
PIDFILE="/var/run/$NAME.pid"
LOGFILE="/var/log/autorotate"

start() {
	start-stop-daemon --start -b --exec $DAEMON > $LOGFILE
}

stop() {
	sudo start-stop-daemon --stop --verbose --name $NAME
}

pause() {
	start-stop-daemon --stop --signal 10 --quiet --pidfile $PIDFILE --name $NAME
}


case "$1" in
  start)
	echo "Starting autorotate daemon..."
	start
	;;
  stop)
	echo "Stopping autorotate daemon..."
	stop
	;;
  pause) 
	echo "Pausing autorotate daemon..."
	pause
	;;
  restart|force-reload)
	echo "Restarting autorotate daemon..."
	stop
	start
	;;
  *)
	echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|pause}" >&2
	exit 3
	;;
esac

:
Problem liegt bei der LOGFILE Sache. Ich schätze Mal dadurch, dass ich -b als Parameter an star-stop-daemon übergebe (detach) landet der Output von /usr/local/bin/autorotate nicht in dem log file. Was kann ich dagegen tun?

2. Sache: Was bedeutet ">&2" in der Zeile in der "Usage:..." ausgegeben wird?


mfg
serow
Serow ist offline   Mit Zitat antworten
Alt 12.07.08, 17:33   #2 (permalink)
Easyrider
Guest
 
Likes:
Standard

Zitat:
<a name="ss3.4">3.4 Sample: stdout 2 stderr[/url]
This will cause the stderr ouput of a program to be written to the same filedescriptor than stdout.
grep da * 1>&2
Quelle: All about redirection
  Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 12.07.08, 18:57   #3 (permalink)
Senior Member
Themenstarter
 
Registriert seit: 26.03.06
Serow Leistung: 8086
Likes: 16
Standard

Hä? Wie jetzt?

In dem Script gibts ein paar echo(s) die ich gern im log file hätte. Oder macht man das anders?
Serow ist offline   Mit Zitat antworten
Alt 12.07.08, 18:59   #4 (permalink)
Moderator
 
Benutzerbild von bitmuncher
 
Registriert seit: 30.09.06
bitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcore
Likes: 441
Standard

Code:
echo "foobar" >> /var/log/meinlog.log 2>&1
__________________
Mein Blog - Mein Job - Diaspora

Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund.

Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+
bitmuncher ist offline   Mit Zitat antworten
Alt 12.07.08, 19:02   #5 (permalink)
 
Benutzerbild von ChiefWiggum
 
Registriert seit: 09.10.07
ChiefWiggum Leistung: 8086
ChiefWiggum eine Nachricht über ICQ schicken
Likes: 11
Standard

Wenn ich das jetzt richtig verstanden hatte ( wusste das auch noch nicht ) ,
leitet das >&2 auch die fehlermeldungen in die datei um(stderr)
__________________
Be the source always with you.
ChiefWiggum ist offline   Mit Zitat antworten
Alt 12.07.08, 19:31   #6 (permalink)
Moderator
 
Benutzerbild von bitmuncher
 
Registriert seit: 30.09.06
bitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcore
Likes: 441
Standard

2>&1 sorgt dafür, dass sowohl STDERR als auch STDIN in die gleiche Richtung umgeleitet werden. Ist also vorher eine Umleitung mittels '>>' oder '>' definiert, landet jeglicher Output dort. Verwendet man es hingegen nicht, wird nur der STDOUT umgeleitet.
__________________
Mein Blog - Mein Job - Diaspora

Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund.

Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+
bitmuncher ist offline   Mit Zitat antworten
Alt 12.07.08, 19:38   #7 (permalink)
Senior Member
Themenstarter
 
Registriert seit: 26.03.06
Serow Leistung: 8086
Likes: 16
Standard

Also wenn ich
Code:
start-stop-daemon --start -b --exec $DAEMON > $LOGFILE
in
Code:
start-stop-daemon --start -b --exec $DAEMON > $LOGFILE 2>&1
ändere, tut sich garnichts.

In dem Script /usr/local/bin/autorotate mach ich einfach immer nur das hier:
Code:
echo "Blablubb"
Wo muss ich denn jetzt mit diesem 2>&1 hin? Muss das nach jedem echo in /usr/local/bin/autorotate stehn? Kann man das nicht über das Init Script regeln? Bzw wir sieht die best practice aus?
Serow ist offline   Mit Zitat antworten
Alt 12.07.08, 19:42   #8 (permalink)
Moderator
 
Benutzerbild von bitmuncher
 
Registriert seit: 30.09.06
bitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcore
Likes: 441
Standard

Dein Problem dürfte eher die einfache spitze Klammer '>' sein. Diese sorgt dafür, dass die Datei komplett überschrieben wird und der neue Output nicht angehängt. Dadurch bekommst du in der Datei nur die letzte Ausgabe des Skripts. Hinzu kommt, dass start-stop-daemon meines Wissens nach den Output eh abfängt und an das syslog-System übergibt.
__________________
Mein Blog - Mein Job - Diaspora

Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund.

Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+
bitmuncher ist offline   Mit Zitat antworten
Alt 12.07.08, 21:26   #9 (permalink)
Senior Member
Themenstarter
 
Registriert seit: 26.03.06
Serow Leistung: 8086
Likes: 16
Standard

Bringt alles nix. Weder Output in /var/log/autorotate noch in /var/log/syslog. Also nochmal zusammengefasst, die ganzen Scripte:


/usr/local/bin/autorotate
Das echo ist in Zeile 79
Code:
#!/bin/bash

export IFS=" "

############################################################
## CONSTANTS ###############################################
############################################################ 
SLEEP_TIME=1
LAPTOP_MODE_FILE=/etc/tabletmode
MODE_TABLET=tablet
MODE_LAPTOP=laptop
CALIBRATE_FILE=/sys/devices/platform/hdaps/calibrate
RESISTANCY=50
POSITION_FILE=/sys/devices/platform/hdaps/position
XRANDR=("normal" "right" "inverted" "left")
WACOM=("0" "1" "3" "2")
BUTTONS=("103 106 108 105" "105 103 106 108" "108 105 103 106" "106 108 105 103" "71 6d 6f 6e")

############################################################
## VARIABLES ###############################################
############################################################
orientation=-1
next_orientation=-1
calibX=`cut -d , -f 1 < $CALIBRATE_FILE | sed "s/(//"`
calibY=`cut -d , -f 2 < $CALIBRATE_FILE | sed "s/)//"`
minX=$(($calibX-$RESISTANCY))
minY=$(($calibY-$RESISTANCY))
maxX=$(($calibX+$RESISTANCY))
maxY=$(($calibY+$RESISTANCY))	

############################################################
## MAIN LOOP STARTS HERE ###################################
############################################################
while :
do
	sleep $SLEEP_TIME

	laptopMode=`cat $LAPTOP_MODE_FILE`

	if [ "$laptopMode" = "$MODE_LAPTOP" ]
	then
		laptop_status=$MODE_LAPTOP
		next_orientation=0
	else
		if [ "$laptop_status" = "$MODE_LAPTOP" ]
		then
			laptop_status=$MODE_TABLET
			next_orientation=2
		fi
	
		posX=`cut -d , -f 1 < $POSITION_FILE | sed "s/(//"`
		posY=`cut -d , -f 2 < $POSITION_FILE | sed "s/)//"`		
			
		if [ $posY -gt $maxY -a $minX -lt $posX -a $posX -lt $maxX ]
		then
			next_orientation=2 #inverted
		else 
			if [ $posY -lt $minY -a $minX -lt $posX -a $posX -lt $maxX ]
			then
				next_orientation=0 #normal
			else
				if [ $posX -lt $minX -a $minY -lt $posY -a $posY -lt $maxY ]
				then
					next_orientation=3 #left
				else
					if [ $posX -gt $maxX -a $minY -lt $posY -a $posY -lt $maxY ]
					then	
						next_orientation=1 #right
					fi
				fi
			fi
		fi
	fi

	if [ "$orientation" != "$next_orientation" ]
	then
		orientation=$next_orientation

		echo "Changing Screen Orientation: ${XRANDR[$orientation]}"

		xrandr --output LVDS --rotation ${XRANDR[$orientation]}
		xsetwacom set stylus Rotate ${WACOM[$orientation]}

		i=0
		while [ $i -lt 4 ]
		do
			setkeycodes `echo ${BUTTONS[4]} | cut -d " " -f $(($i + 1))` `echo ${BUTTONS[$orientation]} | cut -d " " -f $(($i + 1))`
			i=$(($i + 1))
		done
	fi
done
/etc/init.d/autorotate
Code:
#! /bin/sh
NAME="autorotate"
DESC="Rotates the screen according to HDAPS sensors"
SCRIPTNAME="/etc/init.d/autorotate"
DAEMON="/usr/local/bin/$NAME"
PIDFILE="/var/run/$NAME.pid"
LOGFILE="/var/log/autorotate"

start() {
	start-stop-daemon --start -b --exec $DAEMON >> $LOGFILE 2>&1
}

stop() {
	start-stop-daemon --stop --verbose --name $NAME
}

pause() {
	start-stop-daemon --stop --signal 10 --quiet --pidfile $PIDFILE --name $NAME
}


case "$1" in
  start)
	echo "Starting autorotate daemon..."
	start
	;;
  stop)
	echo "Stopping autorotate daemon..."
	stop
	;;
  pause) 
	echo "Pausing autorotate daemon..."
	pause
	;;
  restart|force-reload)
	echo "Restarting autorotate daemon..."
	stop
	start
	;;
  *)
	echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|pause}" >&2
	exit 3
	;;
esac
Und es tut sich weder in /var/log/syslog noch in /var/log/autorotate etwas.

EDIT: keine Ideen?
Serow ist offline   Mit Zitat antworten
Alt 13.07.08, 17:00   #10 (permalink)
 
Benutzerbild von ChiefWiggum
 
Registriert seit: 09.10.07
ChiefWiggum Leistung: 8086
ChiefWiggum eine Nachricht über ICQ schicken
Likes: 11
Standard

start-stop-daemon --start -b --exec $DAEMON >> $LOGFILE 2>&1

Das schonmal probiert?
__________________
Be the source always with you.
ChiefWiggum ist offline   Mit Zitat antworten
Alt 13.07.08, 17:02   #11 (permalink)
Senior Member
Themenstarter
 
Registriert seit: 26.03.06
Serow Leistung: 8086
Likes: 16
Standard

Hab ich was an den Augen oder ist das genau dieselbe Zeile die schon in meinem Script steht?
Serow ist offline   Mit Zitat antworten
Alt 13.07.08, 18:33   #12 (permalink)
 
Benutzerbild von ChiefWiggum
 
Registriert seit: 09.10.07
ChiefWiggum Leistung: 8086
ChiefWiggum eine Nachricht über ICQ schicken
Likes: 11
Standard

huch sry das scheint wohl an meinen augen gelegen haben
__________________
Be the source always with you.
ChiefWiggum ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Operating Systems » Linux/UNIX » Init Script
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Fragen zu init Serow Linux/UNIX 8 13.03.09 16:53
Andere Orte als die /etc/init.d fuer Daemon-Konfiguraiton? sw33tlull4by Linux/UNIX 2 21.11.07 12:43
Eigene Init erstellen Indi Linux/UNIX 9 06.07.07 17:08
Probleme beim Tomcat - Start mit /etc/init.d ooover Linux/UNIX 0 21.02.04 03:13
Fehler beim Laden der init.d Runlevel 3 Rushjo Linux/UNIX 2 07.10.02 00:36


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61