init.d betiği başlangıçta çalışmıyor


15

Ekranı kullanarak özel sunucumda bazı Counter-Strike oyun sunucuları barındırıyorum. Sunucuları başlatmak / durdurmak istediğinizde çalıştırdığım bu komut dosyası var:

#! /bin/sh
# /etc/init.d/css-server
#

case "$1" in
  start)
    echo "Starting Nullus Imprimis war server..."
    screen -A -m -d -S css-war-server /home/css-servers/war-server/css/srcds_run -game cstrike +map de_dust2 +maxplayers 16 -autoupdate -port 2555 -tick 100 
    echo "Nullus Imprimis war server started"
    echo "Starting Nullus Imprimis pub server #1..."
    screen -A -m -d -S css-pub-server-1 /home/css-servers/pub-server-1/css/srcds_run -game cstrike +map de_dust2 +maxplayers 32 -autoupdate -port 2666 -tickrate 100
    echo "Nullus Imprimis pub server #1 started"
    ;;
  stop)
    echo "Stopping Nullus Imprimis war server..."
    screen -S css-war-server -X quit
    echo "Nullus Imprimis war server stopped"
    echo "Stopping Nullus Imprimis pub server #1..."
    screen -S css-pub-server-1 -X quit
    echo "Nullus Imprimis pub server #1 stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/css-servers {start|stop}"
    exit 1
    ;;
esac

exit 0

Bu komut dosyasını (denir) css-servers )/etc/init.d/ ve sistem açıldığında çalıştırılacağı anlamına geliyor. Ancak aktif ekranları kontrol ettiğimde screen -lshiçbir çalışma yok.

Bunları Ubuntu Sunucusu altında başlangıçta nasıl çalıştırabilirim?

Yanıtlar:


33

Komut dosyasının mevcut /etc/init.dolması, başlangıçta çalıştırılması için yeterli değildir.

Başlangıçta eklemek için Ubuntu'ya bunu söylemelisiniz:

sudo update-rc.d css-servers defaults

Komut dosyası düzgün biçimlendirilmişse, çalıştırılabilir bit kümesi vb. İse bir sonraki önyüklemede başlamalıdır. apt-get/ Software Center'dan yüklediğiniz paketler bu komutu veya eşdeğerini sizin için otomatik olarak çalıştırır, bu nedenle genellikle endişelenmenize gerek yoktur. hakkında.

Hemen başlatmak istiyorsanız, doğrudan arayabilirsiniz:

sudo service css-servers start

Bu çok garip. Bu noktaya kadar betiğim başlangıçta bu update-rc.dkomut olmadan çalışır . Komutumu güncelledim ve bu komutu çalışana kadar artık çalışmadı. Teşekkürler. Bu arada, başlangıçta çalışmasını nasıl kaldırabiliriz (update-rc.d ile yaptığımız gibi)?
Nikos

1
@ Nik-Lz Bu Soru-Cevap, Ubuntu'nun eski ve eski sürümlerini kullanan eski ve eski sürümlerini ifade eder. Artık kullanılmamalıdır, bunun yerine mevcut sistem (tamamen farklı bir servis sistemi kullanan) kullanılmalıdır.
Michael Hampton

7

İlk kısmı yaptınız. /etc/init.dbaşlatma komut dosyalarının çalıştırıldığı yerdir. Ancak, otomatik olarak çalışmazlar.

Bunlar, /etc/rc*.ddizinlerin sembolik bağlantıları ile belirtildiği şekilde çalıştırılır . Her çalışma seviyesinin kendi dizini vardır. Bağlantı adlarıyla başlayan komut dosyaları Kstop parametresi ile çalıştırılır ve adlarıyla başlayan komut dosyaları Sstart parametresiyle çalıştırılır. Kural olarak, dosya adları sıralama için kullanılan ve içindeki komut dosyasının adıyla biten iki basamaklı bir sayı ile başlar Kveya Sonu takip eder /etc/init.d.

Bağlantılar elle oluşturulabilir, ancak genellikle bir komut dosyasıyla oluşturulur. Genel komut dosyası update-rc.dUbuntu'da bulunur. Komut man update-rc.dsize kimlerin kullanılacağı hakkında belgeler verecektir. Sizin durumunuzda deneyin:

sudo update-rc.d css-servers defaults

İnit komut dosyasını kullanarak başlatmak için şunu deneyin:

sudo /etc/init.d/css-servers start

Ben genellikle komut dosyası istendiği gibi çalıştığından emin olmak için sunucuyu bu şekilde başlatın ve durdurun. Sonra çalışma düzeyi dizinlerine update-rc.deklemek için çalıştırın /etc/rc.d.


1

Hizmetinizin neden önyüklemede başlatılmadığına dair bir ipucu almıyorsanız. Ancak, hizmeti el ile başlatmaya çalıştığınızda düzgün çalışır service <your service> start. Bu durumda, standart çıktı ve hata çıktısını bazı dosyalara yönlendirmeyi deneyin. Bu da sistemi önyüklerken neden başlatılmadığına dair bazı ipuçları verebilir.

örneğin senaryonuzun içinde

case "$1" in
  start)
    echo "Starting Service "
    <your command to start the service > /tmp/bootservice.log 2>&1
    ;;
  stop)
    echo "Stopping Service "
    <your command to start the service > /tmp/bootservice.log 2>&1
    ;;
  *)
    echo "Usage: /etc/init.d/test {start|stop}"
    exit 1
    ;;
esac

exit 0
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.