Linux: Parametreleri `` service foo start '' a (komut satırında) nasıl iletirim?


11

Başladığım servise bir argüman iletmek istiyorum. Örneğin bir sunucuyu hata ayıklama modunda başlatma. Sevmek,

service jboss-as start debug

Ya da böyle. Ama servicebunu desteklemiyor gibi görünüyor.

Bir yolu var mı? (Önemliyse RHEL 6 için.)

Not: Bu Ubuntu / Linux'a benzer : başlangıç ​​parametreleri genellikle başlangıç ​​komut dosyaları (sysvinit) için nasıl tanımlanır? ama aynı değil.


Dur, ubuntu sysv kullanmaz, sonradan başlatma kullanır.
PersianGulf

1
Başlangıç ​​komut dosyasında başka bir vaka oluşturun. Örnek: start-debugve daha sonra çalıştırabilirsiniz:/etc/init.d/jboss-as start-debug
Guntis

Yanıtlar:


10

RHEL'de / etc / sysconfig klasörünüz var. Burada başlangıç ​​parametrelerini tanımlarsınız. Ve başlangıç ​​betiğinize şöyle bir şey eklersiniz:

if [ -f /etc/sysconfig/$prog ] ; then
    . /etc/sysconfig/$prog
fi

Örnekler için mevcut servislere bakın.

Geliştirme için başlangıç ​​parametrelerinizi, istediğiniz zaman manuel olarak geçersiz kılabileceğiniz dışa aktarılan bir değişkene (örneğin .bashrc'de) koyabilirsiniz.

DÜZENLE

Gerçekten kullanmak istiyorsanız servicebaşka seçenekler de var.

Betiğiniz en az startve stop. Ancak bir debugkomut da uygulayabilirsiniz . Ve programınıza şu şekilde başlayın:

service foo debug

Başka bir yol, komut dosyanızdaki ikinci argümanı kontrol etmek ve programınızı şu şekilde başlatmaktır:

service foo start debug

İnit betiğinizi aşağıdaki gibi değiştirin:

case "$1" in
  start)
        if [ "$2" = "debug" ]
        then
                start_debug
        else
                start
        fi
        ;;

1
Dışa aktarılan ortam değişiyorsa, durum böyle görünmüyor - hizmetin man sayfası TERM ve LANG'in komut dosyasına geçirilenler olduğunu söylüyor. Ama elbette, /etc/init.d/MyNiftyService start whatever1 whatever2 ...
Alien Life Form

Alien'in baypasına başvuracağım. Bir cevap olarak koymak ister misiniz?
Ondra 24ižka

5

Ubuntu'da başlangıç ​​parametreleri genellikle şu ülkelerde bulunur:

/etc/default/<service_name>

2
Doğru ama bunu her değiştirmek istediğimde değiştirmek istemiyorum ... Geliştirme sırasında bu oldukça sık. Ve RHEL 6'ya ihtiyacım var. Soruyu düzenledi.
Ondra Žižka

0

Yukarıda önerildiği gibi, varlığını kontrol ettikten sonra sisteme özgü bir dosyadan ek parametreler kaynak ile gitmek istiyorum.

Hizmet başlangıcına herhangi bir ek seçenek eklemeyi sevmiyorum.

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.