Usługa upstart nigdy się nie uruchamia ani nie zatrzymuje całkowicie

11

Próbuję stworzyć prosty skrypt wstępny dla serwera teamspeak, ale nie mogę go uruchomić.

Kiedy mówię, że initctl start to po prostu wykonuje, ale nigdy nie kończy ani nawet nie emituje żadnej wiadomości. To samo dzieje się z zatrzymaniem .

Aby upewnić się, że nie robię nic złego, skopiowałem skrypt cron i próbowałem go uruchomić, ale dzieje się tak samo.

co ja tu robię źle?

AKTUALIZACJA:

oto mój skrypt dla 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

Próbowałem nawet z najprostszym skryptem, ale to też nie działa:

description     "regular background program processing daemon"

start on runlevel [2345]
stop on runlevel [!2345]

expect fork
respawn

exec echo example
console output

Dziękuję za pomoc

danizmax
źródło
Może chcesz pokazać zadanie wstępne, które próbujesz uruchomić, abyśmy mogli go debugować? Trudno zrozumieć, dlaczego wisi, nie widząc go.
slangasek
Skopiowałem skrypt crona i próbowałem go uruchomić i dzieje się tak samo, po prostu zatrzymuje się i nigdy nie wraca do powłoki
danizmax
Nadal musimy zobaczyć Twój skrypt początkowy. Bez tego nic nie możemy zrobić. Prześlij go lub podaj nam link do niego.
hggdh
Nie widząc skryptu, mogę tylko zgadywać: czy twój skrypt dba o to, aby był uruchamiany jako root przez start-up? ŚCIEŻKA Roota jest inna. Jeśli twój skrypt chce korzystać z aplikacji, której nie ma w ścieżce użytkownika root, musisz podać pełną ścieżkę. Czy w twoim skrypcie jest progresja, która się nie zwraca?
waltinator,

Odpowiedzi:

1

w twojej początkowej pracy jest wiele dziwactw, które powodują, że drapię się po głowie.

1) emit nie jest programem, który znam, więc chyba że dodałeś go do ścieżki systemowej, prawdopodobnie spowoduje to błędy. Miałeś na myśli „echo”? To też może nie być pomocne, ponieważ przejdzie do konsoli systemowej, która może nie być widoczna.

2) Zakładając, że zwrotka „emituj” działa, mówisz „oczekuj rozwidlenia”, ale wtedy faktycznie rozwidlamy dwa razy . Raz dla „skryptu”, a potem znowu, gdy skrypt teamspeak prosi się o samo tło.

3) „su”, aby uruchomić skrypt, ale start-stop-demon jest w rzeczywistości prostszy w większości przypadków:

W wersji 11.10 nie musisz wykonywać chdirskryptu, nie jestem pewien, czy został on dodany po jakiejkolwiek wersji ulepszenia, którą posiadasz. Sprawdź man 5 initsłowochdir

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

Również błędy będą prawdopodobnie zgłaszane w / var / log / syslog. Można znacznie zwiększyć poziom błędu, uruchamiając

initctl log-priority info

man initctl więcej poziomów dziennika.

Spamapy
źródło
Nie OP, ale używa (danimaz) su do uruchomienia serwera jako swojego użytkownika, a nie do rootowania.
Javier Rivera
Hah doh, przegapiłem pasek przewijania na dole .. idealnie dopasowany, aby ukryć nazwę użytkownika. :-P
SpamapS