Linux: Bagaimana cara mengirimkan parameter ke `service foo start` (pada baris perintah)?

11

Saya ingin menyampaikan argumen ke layanan yang saya mulai. Misalnya memulai server dalam mode debug. Suka,

service jboss-as start debug

Atau semacamnya. Tapi servicesepertinya tidak mendukung itu.

Apakah ada cara? (Untuk RHEL 6 jika itu penting.)

Catatan: Ini mirip dengan Ubuntu / Linux: bagaimana parameter startup biasanya ditentukan untuk skrip startup (sysvinit)? tapi tidak sama.

Ondra Žižka
sumber
Berhenti, ubuntu tidak menggunakan sysv, ia menggunakan pemula.
PersianGulf
1
Buat kasus lain di skrip startup. Contoh: start-debugdan kemudian Anda dapat menjalankan:/etc/init.d/jboss-as start-debug
Guntis

Jawaban:

10

Di RHEL Anda memiliki folder / etc / sysconfig. Di sini Anda menentukan parameter startup. Dan dalam skrip startup Anda, Anda memasukkan sesuatu seperti:

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

Lihat layanan yang ada untuk contoh.

Untuk pengembangan, Anda dapat menempatkan parameter startup Anda dalam variabel yang diekspor (misalnya dalam .bashrc) yang dapat Anda timpa secara manual kapan pun Anda mau.

EDIT

Jika Anda benar-benar ingin menggunakan serviceada beberapa opsi lain.

Skrip Anda setidaknya harus mendukung startdan stop. Tetapi Anda juga dapat menerapkan debugperintah. Dan mulai program Anda dengan:

service foo debug

Cara lain adalah dengan memeriksa argumen kedua dalam skrip Anda dan Anda memulai program Anda dengan:

service foo start debug

Ubah skrip init Anda menjadi sesuatu seperti:

case "$1" in
  start)
        if [ "$2" = "debug" ]
        then
                start_debug
        else
                start
        fi
        ;;
Laurentiu Roescu
sumber
1
Adapun vars lingkungan yang diekspor, yang tampaknya tidak terjadi - halaman manual layanan mengatakan bahwa TERM dan LANG adalah satu-satunya yang diteruskan ke skrip. Tetapi tentu saja, seseorang dapat selalu mem-bypass layanan dengan menjalankan /etc/init.d/MyNiftyService memulai apapun1 apapun2 ...
Alien Life Form
Saya akan menggunakan bypass Alien. Ingin meletakkannya sebagai jawaban?
Ondra Žižka
5

Di Ubuntu, parameter startup biasanya ditemukan di:

/etc/default/<service_name>
EEAA
sumber
2
Benar tapi saya tidak ingin mengubahnya setiap kali saya butuh perubahan ... Selama pengembangan itu cukup sering. Dan saya perlu RHEL 6. Mengedit pertanyaan.
Ondra Žižka
0

Saya akan menggunakan sumber parameter tambahan dari file sistem tertentu setelah memeriksa keberadaannya, seperti yang disarankan di atas.

Saya tidak suka menambahkan opsi tambahan ke startup layanan.

Amar
sumber