Linux: Làm thế nào để truyền tham số cho `service foo start` (tại dòng lệnh)?


11

Tôi muốn chuyển một đối số cho dịch vụ tôi đang bắt đầu. Ví dụ: bắt đầu một máy chủ trong chế độ gỡ lỗi. Giống,

service jboss-as start debug

Hoặc như vậy. Nhưng servicedường như không ủng hộ điều đó.

Có cách nào không? (Đối với RHEL 6 nếu điều đó quan trọng.)

Lưu ý: Điều này tương tự với Ubuntu / Linux: làm thế nào các tham số khởi động thường được xác định cho các tập lệnh khởi động (sysvinit)? nhưng không giống nhau


Dừng lại, ubfox không sử dụng sysv, nó sử dụng mới bắt đầu.
Tiếng

1
Tạo một trường hợp khác trong kịch bản khởi động. Ví dụ: start-debugvà sau đó bạn có thể chạy:/etc/init.d/jboss-as start-debug
Guntis

Câu trả lời:


10

Trong RHEL, bạn có thư mục / etc / sysconfig. Ở đây bạn xác định các tham số khởi động. Và trong kịch bản khởi động của bạn, bạn bao gồm một cái gì đó như:

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

Kiểm tra các dịch vụ hiện có cho ví dụ.

Để phát triển, bạn có thể đặt các tham số khởi động của mình vào một biến được xuất (ví dụ: .bashrc) mà bạn có thể ghi đè thủ công bất cứ lúc nào bạn muốn.

BIÊN TẬP

Nếu bạn thực sự muốn sử dụng, servicecó một số tùy chọn khác.

Kịch bản của bạn nên hỗ trợ ít nhất startstop. Nhưng bạn cũng có thể thực hiện một debuglệnh. Và bắt đầu chương trình của bạn với:

service foo debug

Một cách khác sẽ là kiểm tra đối số thứ hai trong tập lệnh của bạn và bạn bắt đầu chương trình của mình với:

service foo start debug

Sửa đổi tập lệnh init của bạn thành một cái gì đó như:

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

1
Đối với các vars môi trường xuất khẩu, điều đó dường như không phải là trường hợp - trang man của dịch vụ nói rằng TERM và LANG là những cái duy nhất được chuyển đến tập lệnh. Nhưng tất nhiên, người ta luôn có thể bỏ qua dịch vụ bằng cách chạy /etc/init.d/MyNiftyService bắt đầu bất cứ điều gì1 ...
Cuộc sống ngoài hành tinh

Tôi sẽ dùng đến đường tránh của Alien. Bạn muốn đặt nó như một câu trả lời?
Ondra ižka

5

Trong Ubuntu, các tham số khởi động thường được tìm thấy trong:

/etc/default/<service_name>

2
Đúng nhưng tôi không muốn thay đổi rằng mỗi khi tôi cần thay đổi ... Trong quá trình phát triển, điều đó khá thường xuyên. Và tôi cần RHEL 6. Chỉnh sửa câu hỏi.
Ondra Žižka

0

Tôi sẽ đi với việc tìm nguồn cung cấp các tham số bổ sung từ một tệp cụ thể của hệ thống sau khi kiểm tra sự tồn tại của nó, như được đề xuất ở trên.

Tôi không thích thêm bất kỳ tùy chọn bổ sung nào vào dịch vụ khởi động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.