Я пытаюсь создать простой скрипт upstart для сервера TeamSpeak, но не могу заставить его работать.
Когда я говорюзапуск initctlон просто выполняется, но никогда не завершается и даже не выдает никаких сообщений. То же самое происходит и состанавливаться.
Чтобы убедиться, что я не делаю ничего неправильного, я скопировал скрипт cron и попытался запустить его, но результат тот же.
что я здесь делаю не так?
ОБНОВЛЯТЬ:
вот мой скрипт для TS3:
# myservice - myservice job file
description "my service description"
author "Me <[email protected]>"
# Stanzas
#
# Stanzas control when and how a process is started and stopped
# See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn
# When to start the service
start on runlevel [2345]
# When to stop the service
stop on runlevel [016]
# Automatically restart process if crashed
respawn
# Essentially lets upstart know the process will detach itself to the background
expect fork
# Start the process
script
emit going into TS3 dir
chdir /home/danizmax/teamspeak3-server_linux-x86/
emit starting TS3
exec su -c "/home/danizmax/teamspeak3-server_linux-x86/ts3server_startscript.sh start" danizmax &
emit done
end script
Я пробовал даже с самым простым скриптом, но он тоже не работает:
description "regular background program processing daemon"
start on runlevel [2345]
stop on runlevel [!2345]
expect fork
respawn
exec echo example
console output
Спасибо за помощь.
решение1
В вашей начинающей работе есть ряд странностей, которые заставляют меня чесать голову.
1) emit — это не та программа, о которой я знаю, так что если вы не добавили ее в системный путь, то это, вероятно, вызывает ошибки. Вы имели в виду 'echo'? Это тоже может быть бесполезно, так как она перейдет в системную консоль, которая может быть не видна.
2) Предполагая, что строфа «выделить» работает, вы говорите «ожидать форк», но затем фактически форкдважды. Один раз для «сценария», а затем еще раз, когда скрипт TeamSpeak переходит в фоновый режим.
3) Вы используете «su» для запуска скрипта, но start-stop-daemon на самом деле проще для большинства случаев:
С 11.10 вам не нужно делать chdir
in script, не уверен, что это было добавлено после той версии upstart, которая у вас есть. Проверьте man 5 init
словоchdir
start on runlevel [2345]
stop on runlevel [^2345]
respawn
chdir /home/danizmax/teamspeak-server
expect fork
exec start-stop-daemon --start --user danizmax --group danizmax --exec /home/danizmax/teamspeak3-server_linux-x86/ts3server_startscript.sh -- start
Также, ошибки, скорее всего, будут сообщаться в /var/log/syslog. Вы можете значительно увеличить уровень ошибок, запустив
initctl log-priority info
man initctl
для получения дополнительных уровней журнала.