Stworzyłem skrypt do uruchomienia serwera (moje pierwsze pytanie). Teraz chcę, aby uruchomił się przy starcie systemu i uruchomił zdefiniowany serwer. Co powinienem zrobić, aby to zrobić?
Z moich ustaleń wynika, że umieszczam ten plik w /etc/init.d
lokalizacji, a zostanie on uruchomiony po uruchomieniu systemu. Ale nie jestem w stanie zrozumieć, jaki będzie pierwszy argument przy starcie start
? Czy jest to predefiniowane miejsce do wykorzystania start
jako $1
? Jeśli chcę mieć skrzynkę startall
, która uruchomi wszystkie serwery w skrypcie, jakie są opcje, którymi mogę zarządzać?
Mój skrypt jest taki:
#!/bin/bash
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
$0 stop
$0 start
;;
*)
echo "usage: $0 (start|stop|restart)"
;;
esac
linux
shell-script
centos-5
vijay.shad
źródło
źródło
Odpowiedzi:
/etc/init.d
to katalog skryptów, w którym pojawiają się skrypty wykonywalne. Aby jednak uruchamiać skrypty w określonej kolejności po uruchomieniu systemu, musisz dodać pliki do/etc/rc#.d
katalogu. Wpisy, które się tutaj pojawiają, informują system o kolejności i skryptach na poziomie/etc/init.d
uruchamiania. Liczba po rc wskazuje, na jakim poziomie pracy pracuje maszyna, zgodnie z tym wykresem:http://en.wikipedia.org/wiki/Runlevel
Więc jeśli masz:
Następnie potrzebujesz (pustych) plików:
S oznacza start, a K oznacza zabicie. Kiedy komputer się uruchomi, system powie „Ach, działam na RunLevel 3, przejdźmy do rc3.d, aby zobaczyć, jakie skrypty w '/etc/init.d' należy uruchomić i w jakiej kolejności.” W takim przypadku system posortuje według „S”, a następnie liczby po „S” i wykona „/etc/init.d/importantscript start”. 20 służy wyłącznie do zamawiania ... twój skrypt będzie działał za „S19” i przed „S21”. Możesz utworzyć te pliki, wykonując:
sudo touch /etc/rc.d/rc3.d/S20importantscript
Oto także miłe podsumowanie: http://www.linux.com/news/enterprise/systems-management/8116-an-introduction-to-services-runlevels-and-rcd-scripts
źródło
Nie musisz --- i nie powinieneś --- tworzyć plików
/etc/rc.d/rcN.d/
; Zamiast tego powinieneś dodać komentarz w czytaniu skryptu initgdzie
NNN
jest zbiorem poziomów pracy, w której chcesz skrypt aktywny (np345
jeśli jest aktywny w trybach pracy3
,4
i5
) orazA
iB
są priorytety start i stop. Następniechkconfig --add foo
(zakładając, że skrypt ma nazwęfoo
) utworzy pliki/etc/rc.d/rcN.d/
o odpowiednich nazwach.Następnie można użyć
service foo bar
, aby wysłaćbar
wiadomość do skryptu (na przykładstart
,stop
cokolwiek - to gdzie$1
pochodzi).źródło
$ 1 to argument wiersza poleceń, który jest przekazywany do twojego skryptu, to jeden z poleceń start, stop lub restart. W openSUSE nie pamiętam możliwości przekazywania innych argumentów do skryptu podczas korzystania z edytora runlevel, więc myślę, że to chyba jedyne, których powinieneś użyć.
Sam nie używam CentOS , ale wydaje się, że program do kontroli tego, co się uruchamia, na którym poziomie uruchamiania jest ntsysv .
źródło