[CentOS] init script geeft geen bevestiging van starten

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Zsub
  • Registratie: Juli 2006
  • Laatst online: 07-10 11:24
Hey,

Ik heb een script aangepast om bij het booten een TeamSpeak 3 server te starten. Ik heb het init-script voor LISa gepakt en dat wat aangepast.

Dat geeft uiteindelijk dit script:
snippets staan verder naar onderen

Nou is het 'probleem' dat dat script raar output geeft. Als ik het programma start krijg ik namelijk geen bevestiging of het succesvol gestart is of niet, maar als ik het programma stop wel.

Wat voorbeeldjes:
Herstart TS3:
[root@bluetoes teamspeak]# service ts3 restart
Stopping TS3:                                              [  OK  ]
Starting TS3: 


Herstart LISa (LISa draait nog niet):
[root@bluetoes teamspeak]# service lisa restart
Stopping LISa:                                             [FAILED]
Starting LISa:                                             [  OK  ]


Stop LISa:
[root@bluetoes teamspeak]# service lisa stop
Stopping LISa:                                             [  OK  ]


Stop TS3:
[root@bluetoes teamspeak]# service ts3 stop
Stopping TS3:                                              [  OK  ]


Stop TS3 nogmaals (draaide al niet meer):
[root@bluetoes teamspeak]# service ts3 stop
Stopping TS3:                                              [FAILED]


Herstart TS3 (draaide nog niet):
[root@bluetoes teamspeak]# service ts3 restart
Stopping TS3:                                              [FAILED]
Starting TS3: 


De tekst OK is dan groen en FAILED rood, overigens. Je kan zien dat er bij "Starting TS3" niks verschijnt, daar zou wel wat moeten verschijnen. Ik heb al geprobeerd om regel 44 te vervangen door "return 1", maar dat leverde ook niks op...

Hebben jullie enig idee wat ik fout doe? Bedankt!

Edit:
Zou het kunnen dat die returnvalue niet goed meegenomen wordt omdat ik een detached screen start? Dat zou alleen niet verklaren waarom het alsnog niks doet als ik handmatig een waarde return...

[ Voor 30% gewijzigd door Zsub op 11-01-2010 15:55 ]


Acties:
  • 0 Henk 'm!

  • Hollanda
  • Registratie: Maart 2004
  • Laatst online: 25-09 22:06
Ik zou even een ander init script gebruiken, zijn er inmiddels voldoende beschikbaar op het teamspeak forum.

Acties:
  • 0 Henk 'm!

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

vervang su eens door sudo

ASSUME makes an ASS out of U and ME


Acties:
  • 0 Henk 'm!

  • Hollanda
  • Registratie: Maart 2004
  • Laatst online: 25-09 22:06
Deze gebruik ik; http://forum.teamspeak.com/showthread.php?t=47710

code:
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#!/bin/bash
# Teamspeak3 Server Startscript - written by email@zeitsofa.de
# This is a small startscript for your teamspeak3 server 
# This script was published under GPL ;) 
# Have a lot of fun to edit and modify this script.
# Special thanks to:
# Andreas Schlaupitz from http://www.inc-gaming.net for the parameter part of this script

# Note:
# Put this script to /etc/init.d/ and add it to your runlevels (e.g. Debian: update-rc.d teamspeak3 defaults)

# Set up your own setting in configuration part of script below

### CONFIGURATION PART ###

# Daemon User - As which user TS3 should run?
DAEMON_USER="teamspeak"
# A little Description (Don't need to edit)
DESC="Teamspeak Server 3"
# Homedir from your TS3 (your TS3 root dir)
DIR=/home/teamspeak/ts3
# Which arch is your TS3? (x86 or amd64)
ARCH=x86
# TS3 bin file (Don't need to edit)
BIN=ts3server_linux_$ARCH
# Your pidfile
PID=tsserver3.pid
# Type your own parameters to start TS3 (last parameter have to by a &)
# ~~ Description: IPv4 Address of your server
# ~~ Params: XXX.XXX.XXX.XXX
START_PARAMS_VOICE_IP="0.0.0.0";

# ~~ Description: UDP port open for clients to connect to
# ~~ Params: Between 0 and 65535
# ~~ Default Value: 9987
START_PARAMS_DEFAULT_VOICE_PORT="9987";

# ~~ Description: Created automatically one virtual server when the TeamSpeak 3 process is started
# ~~ Params: 0 = Off / 1 = On
# ~~ Default Value: 1
START_PARAMS_CREATE_DEFAULT_VIRTUALSERVER="1";

# ~~ Description: Optional name of this server process to identity a group of servers with the same ID.
# ~~ Params: Must be unique
# ~~ Default Value: (<empty>)
START_PARAMS_MACHINE_ID="";

# ~~ Description: IP on which the file transfers are bound to
# ~~ Default Value: XXX.XXX.XXX.XXX
START_PARAMS_FILETRANSFER_IP="0.0.0.0";

# ~~ Description: TCP Port opened for file transfers
# ~~ Params: Between 0 and 65535
# ~~ Default 30033
START_PARAMS_FILETRANSFER_PORT="30033";

# ~~ Description: IP bound for incoming ServerQuery connections
# ~~ Default Value: XXX.XXX.XXX.XXX
START_PARAMS_QUERY_IP="0.0.0.0";

# ~~ Description: TCP Port opened for ServerQuery connections
# ~~ Params: Between 0 and 65535
# ~~ Default Value: 10011
START_PARAMS_QUERY_PORT="10011";

# ~~ Description: Cleared server database before starting up the server
# ~~ Params: 0 = Off / 1 = On
# ~~ Default Value: 0
START_PARAMS_CLEAR_DATABASE="0";

# ~~ Description: The physical path where the server will create logfiles
# ~~ Params: Path into server folder
# ~~ Default logs/
START_PARAMS_LOGPATH="logs/";

# ~~ Description: Name of the database plugin library used by the server instance
# ~~ Params: ts3db_sqlite3 = SQLite3 / ts3db_mysql = MySQL
# ~~ Default ts3db_sqlite3
START_PARAMS_DBPLUGIN="ts3db_sqlite3";

# ~~ Description: A custom parameter passed to the database plugin library
# ~~ Params: For example, the MySQL database plugin supports a parameter to specify 
# ~~         the physical path of the pluginsconfiguration file
# ~~ Default (<empty>)
START_PARAMS_DBPLUGINPARAMETER="";

# ~~ Description: The physical path where your SQL script files are located
# ~~ Params: Path into server folder
# ~~ Default sql/
START_PARAMS_DBSQLPATH="sql/";

# ~~ Description: The physical path where your SQL installation files are located
# ~~ Params: This path will be added to the value of the "dbsqlpath" parameter
# ~~ Default create_sqlite/
START_PARAMS_DBSQLCREATEPATH="create_sqlite/";

# ~~ Description: The physical path where your license file is located
# ~~ Params: System path
# ~~ Default (<empty>)
START_PARAMS_LICENSEPATH="";

# ~~ Description: Create an INI-style config file with the values you have specified
# ~~ Params: 0 = Off / 1 = On
# ~~ Default Value: 0
START_PARAMS_CREATEINIFILE="0";

# ~~ Description: The physical path where your config file is located
# ~~ Params: /path/file
# ~~ Default Value: ts3server.ini
START_PARAMS_INIFILE="ts3server.ini";


### !!! Below you don't need to edit anything !!!

# ~~ Assembly start parameters
PARAMS="voice_ip=$START_PARAMS_VOICE_IP default_voice_port=$START_PARAMS_DEFAULT_VOICE_PORT create_default_virtualserver=$START_PARAMS_CREATE_DEFAULT_VIRTUALSERVER machine_id=$START_PARAMS_MACHINE filetransfer_ip=$START_PARAMS_FILETRANSFER_IP filetransfer_port=$START_PARAMS_FILETRANSFER_PORT query_ip=$START_PARAMS_QUERY_IP query_port=$START_PARAMS_QUERY_PORT clear_database=$START_PARAMS_CLEAR_DATABASE logpath=$START_PARAMS_LOGPATH dbplugin=$START_PARAMS_DBPLUGIN dbpluginparameter=$START_PARAMS_DBPLUGINPARAMETER dbsqlpath=$START_PARAMS_DBSQLPATH dbsqlcreatepath=$START_PARAMS_DBSQLCREATEPATH licensepath=$START_PARAMS_LICENSEPATH createinifile=$START_PARAMS_CREATEINIFILE inifile=$START_PARAMS_INIFILE &";


DAEMON=$DIR/$BIN
PATH=$DIR:/bin:/usr/bin:/sbin:/usr/sbin

### MAIN PART ###

case "$1" in
start)
    echo "Start of $DESC"
    if [ $(pidof $BIN) ] 
    then
        echo "$DESC is running! Nothing to do!"
        exit 1
    else
        cd $DIR
        su $DAEMON_USER -c "$DAEMON $PARAMS" &> /dev/null
        echo $(pidof $BIN) > $PID
        echo "$DESC started successfully"
        exit 0
    fi
    ;;


stop)
    echo "Stop $DESC"
    if [ ! $(pidof $BIN) ]  
    then
        echo "$DESC is not running! Nothing to do!"
        exit 1
    else
        kill -TERM $(pidof $BIN)
        echo "$DESC stopped successfully"
        exit 0
    fi
    ;;

restart)
    $0 stop
    sleep 1
    $0 start
    exit 0
    ;;

status)
    echo "Running Process from $DESC:"
    if [ ! $(pidof $BIN) ]
    then
        echo "===> no active process found!"
        exit 0
    else
        ps -lC $BIN --no-heading
    fi
    ;;

*)
    echo "Parameter: $0 {start|stop|status|restart}"
    exit 1
    ;;
esac

Acties:
  • 0 Henk 'm!

  • sparks
  • Registratie: December 2002
  • Laatst online: 19:49
start het script eens met bash -x ts3 start
je ziet dan precies per statement wat er uitgevoerd wordt, dan moet je toch achter de oorzaak kunnen komen.

Acties:
  • 0 Henk 'm!

  • Zsub
  • Registratie: Juli 2006
  • Laatst online: 07-10 11:24
@Hollanda: Ik heb ze inderdaad gezien, maar het is ook half-half voor mezelf, om het te leren :)
Heb ik gedaan, dat maakte niets uit. Ik moet nog even kijken of en hoe su werkt. Ik bedoel met deze tip:
sparks schreef op maandag 11 januari 2010 @ 08:44:
start het script eens met bash -x ts3 start
je ziet dan precies per statement wat er uitgevoerd wordt, dan moet je toch achter de oorzaak kunnen komen.
Nice, sudo werkt inderdaad niet:
+ sudo -u teamspeak '/usr/bin/screen -A -m -d -S TS3 /home/teamspeak/teamspeak/ts3server_linux_x86 '
sudo: /usr/bin/screen -A -m -d -S TS3 /home/teamspeak/teamspeak/ts3server_linux_x86 : command not found

Via su krijg ik geen errors en start de server wel. Ik krijg dus alleen geen uitput op de console, zo'n mooi groene 'OK' of rode 'FAILED'...
[root@bluetoes init.d]# bash -x ts3 start
+ . /etc/rc.d/init.d/functions
++ TEXTDOMAIN=initscripts
++ umask 022
++ PATH=/sbin:/usr/sbin:/bin:/usr/bin
++ export PATH
++ '[' -z '' ']'
++ COLUMNS=80
++ '[' -z '' ']'
+++ /sbin/consoletype
++ CONSOLETYPE=pty
++ '[' -f /etc/sysconfig/i18n -a -z '' ']'
++ . /etc/profile.d/lang.sh
+++ sourced=0
+++ for langfile in /etc/sysconfig/i18n '$HOME/.i18n'
+++ '[' -f /etc/sysconfig/i18n ']'
+++ . /etc/sysconfig/i18n
++++ LANG=en_US.UTF-8
++++ SYSFONT=latarcyrheb-sun16
+++ sourced=1
+++ for langfile in /etc/sysconfig/i18n '$HOME/.i18n'
+++ '[' -f /root/.i18n ']'
+++ '[' -n '' ']'
+++ '[' 1 = 1 ']'
+++ '[' -n en_US.UTF-8 ']'
+++ export LANG
+++ '[' -n '' ']'
+++ unset LC_ADDRESS
+++ '[' -n '' ']'
+++ unset LC_CTYPE
+++ '[' -n '' ']'
+++ unset LC_COLLATE
+++ '[' -n '' ']'
+++ unset LC_IDENTIFICATION
+++ '[' -n '' ']'
+++ unset LC_MEASUREMENT
+++ '[' -n '' ']'
+++ unset LC_MESSAGES
+++ '[' -n '' ']'
+++ unset LC_MONETARY
+++ '[' -n '' ']'
+++ unset LC_NAME
+++ '[' -n '' ']'
+++ unset LC_NUMERIC
+++ '[' -n '' ']'
+++ unset LC_PAPER
+++ '[' -n '' ']'
+++ unset LC_TELEPHONE
+++ '[' -n '' ']'
+++ unset LC_TIME
+++ '[' -n '' ']'
+++ unset LC_ALL
+++ '[' -n '' ']'
+++ unset LANGUAGE
+++ '[' -n '' ']'
+++ unset LINGUAS
+++ '[' -n '' ']'
+++ unset _XKB_CHARSET
+++ consoletype=pty
+++ '[' -z pty ']'
+++ '[' -n '' ']'
+++ '[' -n '' ']'
+++ '[' -n en_US.UTF-8 ']'
+++ case $LANG in
+++ '[' xterm-color = linux ']'
+++ unset SYSFONTACM SYSFONT
+++ unset sourced
+++ unset langfile
++ '[' -z '' ']'
++ '[' -f /etc/sysconfig/init ']'
++ . /etc/sysconfig/init
+++ BOOTUP=color
+++ GRAPHICAL=yes
+++ RES_COL=60
+++ MOVE_TO_COL='echo -en \033[60G'
+++ SETCOLOR_SUCCESS='echo -en \033[0;32m'
+++ SETCOLOR_FAILURE='echo -en \033[0;31m'
+++ SETCOLOR_WARNING='echo -en \033[0;33m'
+++ SETCOLOR_NORMAL='echo -en \033[0;39m'
+++ LOGLEVEL=3
+++ PROMPT=yes
+++ AUTOSWAP=no
++ '[' pty = serial ']'
++ '[' color '!=' verbose ']'
++ INITLOG_ARGS=-q
++ __sed_discard_ignored_files='/\(~\|\.bak\|\.orig\|\.rpmnew\|\.rpmorig\|\.rpmsave\)$/d'
+ '[' -f /etc/init.d/functions ']'
+ . /etc/init.d/functions
++ TEXTDOMAIN=initscripts
++ umask 022
++ PATH=/sbin:/usr/sbin:/bin:/usr/bin
++ export PATH
++ '[' -z 80 ']'
++ '[' -z pty ']'
++ '[' -f /etc/sysconfig/i18n -a -z '' ']'
++ . /etc/profile.d/lang.sh
+++ sourced=0
+++ for langfile in /etc/sysconfig/i18n '$HOME/.i18n'
+++ '[' -f /etc/sysconfig/i18n ']'
+++ . /etc/sysconfig/i18n
++++ LANG=en_US.UTF-8
++++ SYSFONT=latarcyrheb-sun16
+++ sourced=1
+++ for langfile in /etc/sysconfig/i18n '$HOME/.i18n'
+++ '[' -f /root/.i18n ']'
+++ '[' -n '' ']'
+++ '[' 1 = 1 ']'
+++ '[' -n en_US.UTF-8 ']'
+++ export LANG
+++ '[' -n '' ']'
+++ unset LC_ADDRESS
+++ '[' -n '' ']'
+++ unset LC_CTYPE
+++ '[' -n '' ']'
+++ unset LC_COLLATE
+++ '[' -n '' ']'
+++ unset LC_IDENTIFICATION
+++ '[' -n '' ']'
+++ unset LC_MEASUREMENT
+++ '[' -n '' ']'
+++ unset LC_MESSAGES
+++ '[' -n '' ']'
+++ unset LC_MONETARY
+++ '[' -n '' ']'
+++ unset LC_NAME
+++ '[' -n '' ']'
+++ unset LC_NUMERIC
+++ '[' -n '' ']'
+++ unset LC_PAPER
+++ '[' -n '' ']'
+++ unset LC_TELEPHONE
+++ '[' -n '' ']'
+++ unset LC_TIME
+++ '[' -n '' ']'
+++ unset LC_ALL
+++ '[' -n '' ']'
+++ unset LANGUAGE
+++ '[' -n '' ']'
+++ unset LINGUAS
+++ '[' -n '' ']'
+++ unset _XKB_CHARSET
+++ consoletype=pty
+++ '[' -z pty ']'
+++ '[' -n '' ']'
+++ '[' -n '' ']'
+++ '[' -n en_US.UTF-8 ']'
+++ case $LANG in
+++ '[' xterm-color = linux ']'
+++ unset SYSFONTACM SYSFONT
+++ unset sourced
+++ unset langfile
++ '[' -z color ']'
++ '[' color '!=' verbose ']'
++ INITLOG_ARGS=-q
++ __sed_discard_ignored_files='/\(~\|\.bak\|\.orig\|\.rpmnew\|\.rpmorig\|\.rpmsave\)$/d'
+ TS3PATH=/home/teamspeak/teamspeak
+ BINARY=ts3server_linux_x86
+ NAME=TS3
+ INTERFACE='/usr/bin/screen -A -m -d -S TS3'
+ RETVAL=0
+ case "$1" in
+ start
+ echo -n 'Starting TS3: '
Starting TS3: + cd /home/teamspeak/teamspeak
+ su teamspeak -c '/usr/bin/screen -A -m -d -S TS3 /home/teamspeak/teamspeak/ts3server_linux_x86 '
+ RETVAL=0
+ echo

+ '[' 0 = 0 ']'
+ touch /var/lock/subsys/ts3
+ return 0
+ exit 0

En ik heb geen idee hoe of wat er fout gaat... Hebben jullie iets aan de output van bash -x ts3 stop?

Verder tot nu toe bedankt voor de hulp!

[ Voor 58% gewijzigd door Zsub op 11-01-2010 15:31 ]


Acties:
  • 0 Henk 'm!

  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 23:43

JaQ

Zsub schreef op maandag 11 januari 2010 @ 13:51:
Via su krijg ik geen errors en start de server wel. Ik krijg dus alleen geen uitput op de console, zo'n mooi groene 'OK' of rode 'FAILED'...
De groene "OK" wordt geprint door de functie success, de rode "FAILLURE" door de functie faillure.

oftewel:

code:
1
2
3
4
5
6
7
8
echo -n $"Starting $NAME: "
.. doe je gave truckjes ..
if [ $RETVAL = 0 ] ; then
           touch /var/lock/subsys/ts3 && success || faillure
else
           RETVAL=1 
           faillure
fi

Egoist: A person of low taste, more interested in themselves than in me


Acties:
  • 0 Henk 'm!

  • Zsub
  • Registratie: Juli 2006
  • Laatst online: 07-10 11:24
He, dat doet iets! :D

Ik vind het alleen wel gek want de 'stop' functie uit het script heeft geen expliciete calls naar success of failure. Ook komt de 'OK' nu op een nieuwe regel te staan :P

code:
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
start() {
        echo -n $"Starting $NAME: "
        cd $TS3PATH
        su teamspeak -c "$INTERFACE $TS3PATH/$BINARY $OPTIONS"
        RETVAL=$?
        echo
        if [ $RETVAL = 0 ] ; then
           touch /var/lock/subsys/ts3 && success || failure
        else
           RETVAL=1
           failure
        fi
        return $RETVAL
}

stop() {
        echo -n $"Stopping $NAME: "
        killproc $BINARY
        RETVAL=$?
        echo
        if [ $RETVAL = 0 ] ; then
           rm -f /var/lock/subsys/ts3
        else
           RETVAL=1
    fi
        return $RETVAL
}

[root@bluetoes init.d]# service ts3 start
Starting TS3: 
[root@bluetoes init.d]#                                    [  OK  ]

Acties:
  • 0 Henk 'm!

  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 23:43

JaQ

Zsub schreef op maandag 11 januari 2010 @ 15:52:
Ik vind het alleen wel gek want de 'stop' functie uit het script heeft geen expliciete calls naar success of failure. Ook komt de 'OK' nu op een nieuwe regel te staan :P
*hint* Heb je het /etc/rc.d/init.d/functions script al eens bekeken? ;)

En je tweede echo zorgt voor de lege regel:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
start() {
        echo -n $"Starting $NAME: "
        cd $TS3PATH
        su teamspeak -c "$INTERFACE $TS3PATH/$BINARY $OPTIONS" > /var/log/tm.log 2>&1
        RETVAL=$?
        if [ $RETVAL = 0 ] ; then
           touch /var/lock/subsys/ts3 && success || failure
        else
           RETVAL=1
           failure
        fi
        return $RETVAL
}


Dat zou maar zo eens beter kunnen werken (vergelijkbaar voor stop)

[ Voor 41% gewijzigd door JaQ op 11-01-2010 16:26 ]

Egoist: A person of low taste, more interested in themselves than in me


Acties:
  • 0 Henk 'm!

  • Zsub
  • Registratie: Juli 2006
  • Laatst online: 07-10 11:24
Het script zoals jij het hebt geeft bij mij een extra maffe output :)
[root@bluetoes init.d]# service ts3 restart
Stopping TS3:                                              [  OK  ]
[root@bluetoes init.d]#                                    [  OK  ]

Hij echo'd nu helemaal niet de "Starting TS3" niet meer, gek genoeg. Ik voel me een ontzettende noob, maar ik snap er echt helemaal niks van dus ik ben je heel dankbaar voor je hulp!
Pagina: 1