Strona 1 z 1

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

: 27 października 2011, 11:59
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.

: 27 października 2011, 17:14
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.

: 27 października 2011, 17:21
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?

: 27 października 2011, 18:11
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.

: 28 października 2011, 10:04
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


: 28 października 2011, 17:53
autor: unky
Dziękuję za pomoc, zaadoptowałem skrypt do swoich potrzeb i teraz działa.
Pozdrawiam.