[+] Przy zamykaniu systemu uruchamiany jest ponownie skrypt z katalogu init.d

Ogólne pytania dotyczące systemu
unky
Posty: 22
Rejestracja: 26 października 2011, 18:16

[+] Przy zamykaniu systemu uruchamiany jest ponownie skrypt z katalogu init.d

Post autor: unky »

Witam.
Dodałem do katalogu /etc/init.d skrypt, który uruchamia mi serwer. Wszystko ładnie działa w momencie startu Debiana, serwer się uruchamia i działa poprawnie.
Jednak jak zamykam system to widzę, że ten skrypt ponownie jest uruchamiany, a że serwer zawiesza się bo nie może otworzyć połączenia (w końcu sam je otworzył wcześniej przy uruchamianiu więc port serwera jest już zarezerwowany) to cały proces zamykania system stoi w miejscu.
Jak zrobić aby skrypt z init.d nie był wykonywany w momencie zamykania stacji roboczej, albo jak go przerobić aby działał tak jak się należy.
Na chwilę obecną wygląda on tak:

Kod: Zaznacz cały

#! /bin/sh
/home/app/app_server

Jak widać jest tam tylko uruchomienie serwera i to działa w momencie startu systemu, ale w momencie zamykania systemu ponownie jest ten skrypt wywołany i wszystko wisi.
olx

Post autor: olx »

Możesz do skryptu dodać warunek: jeżeli serwer jest włączony, nic nie rób, jeżeli nie jest to go włącz.
Ewentualnie spróbuj dodać zamiast do init.d to do menu: System -> Preferencje -> Programy startowe.
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

unky, a zapoznałeś się z dokumentacją i wiesz jak działa podsystem rc.d? W uproszczeniu, z katalogu /etc/init.d/ wywoływane są skrypty z parametrem:

Kod: Zaznacz cały

start
przy starcie systemu lub:

Kod: Zaznacz cały

stop
przy zatrzymywaniu. Jak masz mało inteligentny skrypt, który tego nie sprawdza, to dziwisz się, że nie działa to tak jak chcesz?
unky
Posty: 22
Rejestracja: 26 października 2011, 18:16

Post autor: unky »

Niestety to moje pierwsze kroki, stąd taka skąpa wiedza.
Pomógłby by mi ktoś napisać właściwy skrypt?
Ps. Niestety opcja System->Preferencje->Programy startowe, u mnie nie działa za dobrze. Dodałem tam mój serwer, niby startuje poprawnie ale nie wykrywa czytnika RS. Jak uruchamiany jest "z palca" albo z init.d serwer startuje prawidłowo, niestety poprzez menu ,,Programy startowe'', nie uruchamia się właściwie. Tak jakby nie miał dostępu do portu RS-232.
Awatar użytkownika
Unit
Beginner
Posty: 356
Rejestracja: 27 marca 2007, 09:39

Post autor: Unit »

Podstawowy szkielet, modyfikacje wskazane:

Kod: Zaznacz cały

#!/bin/bash

### BEGIN INIT INFO
# Provides: game
# Required-Start:    
# Required-Stop:     
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: game
### END INIT INFO


start(){
 echo "Start"
}
stop(){
 echo "Stop"
}

case "$1" in
                "stop")
                                stop
                                ;;
                "start")
                                start
                                ;;
                *)
                        echo "Usage: $0 {start|stop}"
esac

unky
Posty: 22
Rejestracja: 26 października 2011, 18:16

Post autor: unky »

Dziękuję za pomoc, zaadoptowałem skrypt do swoich potrzeb i teraz działa.
Pozdrawiam.
ODPOWIEDZ