Usiłuję dodać do automatycznego uruchamiania w czasie wolnym usługę linux za pośrednictwem
chkconfig -add <servicename>
i dostaję wiadomość z informacją
service <servicename> does not support chkconfig
Korzystam z Red Hat Enterprise 4. Skrypt, który próbuję dodać do autostartu podczas uruchamiania, jest następujący:
#!/bin/sh
soffice_start() { if [ -x /opt/openoffice.org2.4/program/soffice ]; then
echo "Starting Open Office as a Service"
#echo " soffice -headless -accept=socket,port=8100;urp;StarOffice.ServiceManager
-nofirststartwizard"
/opt/openoffice.org2.4/program/soffice
-headless -accept="socket,host=0.0.0.0,port=8100;urp;StarOffice.ServiceManager"
-nofirststartwizard & else
echo "Error: Could not find the soffice program. Cannot Start SOffice." fi }
soffice_stop() { if [ -x /usr/bin/killall ]; then
echo "Stopping Openoffice"
/usr/bin/killall soffice 2> /dev/null else
echo "Eroor: Could not find killall. Cannot Stop soffice." fi }
case "$1" in 'start') soffice_start ;; 'stop') soffice_stop sleep 2 ;; 'restart') soffice_stop sleep 5 soffice_start ;; *) if [ -x /usr/bin/basename ]; then
echo "usage: '/usr/bin/basename $0' start| stop| restart" else
echo "usage: $0 start|stop|restart" fi esac
Odpowiedzi:
Skrypt musi mieć 2 linie:
na przykład:
Po dodaniu powyższych nagłówków możesz uruchomić
chkconfig --add <service>
.źródło
Chociaż Katriel odpowiedziała już na to absolutne minimum potrzebne do utworzenia skryptu inicjującego, myślę, że dobrze byłoby, gdybyś spojrzał
/etc/init.d/skeleton
i używał go jako szablonu, na którym oparłby swój skrypt inicjujący. Skończysz z bardziej spójnym i czytelnym skryptem.źródło
/etc/init.d/skeleton
nie jest obecna na systemach RHEL, tylko na Debianie i pokrewnych (chyba Ubuntu).Wygląda na to, że specyficzny problem Geo został już rozwiązany, ale napotkałem podobny komunikat, próbując skonfigurować aplikację Rails z
sidekiq
usługą zarządzaną. Wyjaśnię tutaj moje rozwiązanie, na wypadek gdyby pomogło to innym początkującym, takim jak ja.Pracuję nad instalacją CentOS, a chkconfig jest już skonfigurowany z kilkoma innymi usługami, takimi jak httpd, mysql i redis. Należy pamiętać, że większość usług musi być włączona tylko na poziomach uruchamiania
3
przez5
.Musiałem dodać nowy skrypt do
sidekiq
usługi, więc złapałem skrypt pod adresem https://gist.github.com/CD1212/5326706 , zmodyfikowałem go, aby pasował do parametrów mojej aplikacji, i zapisałem go w/etc/rc.d/init.d/sidekiq
(własność root jak wszystkie inne skrypty tam).Jednak gdy próbowałem zarejestrować tę nową usługę, wystąpił błąd chkconfig:
Po kilku dodatkowych lekturach odkryłem, że numery priorytetów zdefiniowane u góry każdego skryptu chkconfig muszą być unikalne. Jaśniejszy komunikat o błędzie byłby miły! Inny skrypt miał priorytetowy priorytet zamknięcia 75, więc zmieniłem mój na 76 i spróbowałem ponownie. Oto głowa mojego skryptu inicjującego:
Tym razem
sudo chkconfig --add sidekiq
nie złożyłem skargi. Następnie, gdy uruchomiłemsudo chkconfig --list sidekiq
, usługa sidekiq była wyświetlana jakon
dla odpowiednich poziomów uruchamiania.źródło
Numery priorytetowe nie muszą być unikalne. Reprezentują jedynie zamówienie usług.
Chkconfig nie miał problemu z dodaniem usługi „it”. W przeciwnym razie byłbyś ograniczony do 100 usług.
Również w moim przykładzie działałby on przed Oracle, ponieważ skrypty są uruchamiane alfabetycznie.
źródło