Linux: วิธีส่งพารามิเตอร์ไปยัง `service foo start` (ที่บรรทัดคำสั่ง)?


11

ฉันต้องการส่งผ่านข้อโต้แย้งไปยังบริการที่ฉันเริ่ม เช่นการเริ่มต้นเซิร์ฟเวอร์ในโหมดดีบัก ชอบ,

service jboss-as start debug

หรือเช่น แต่serviceดูเหมือนว่าจะไม่สนับสนุน

มีวิธีใดบ้าง? (สำหรับ RHEL 6 ถ้าเป็นเช่นนั้น)

หมายเหตุ: นี่คล้ายกับUbuntu / Linux: โดยปกติแล้วพารามิเตอร์การเริ่มต้นจะกำหนดไว้สำหรับสคริปต์เริ่มต้นอย่างไร (sysvinit) แต่ไม่เหมือนกัน


หยุดอูบุนตูไม่ได้ใช้ sysv มันใช้พุ่งพรวด
PersianGulf

1
สร้างกรณีอื่นในสคริปต์เริ่มต้น ตัวอย่าง: start-debugจากนั้นคุณสามารถเรียกใช้:/etc/init.d/jboss-as start-debug
Guntis

คำตอบ:


10

ใน RHEL คุณมีโฟลเดอร์ / etc / sysconfig ที่นี่คุณกำหนดพารามิเตอร์เริ่มต้น และในสคริปต์เริ่มต้นของคุณคุณมีสิ่งที่ชอบ:

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

ตรวจสอบบริการที่มีอยู่สำหรับตัวอย่าง

สำหรับการพัฒนาคุณสามารถใส่พารามิเตอร์เริ่มต้นของคุณในตัวแปรที่ส่งออก (เช่นใน. bashrc) ซึ่งคุณสามารถแทนที่ด้วยตนเองได้ทุกเวลาที่คุณต้องการ

แก้ไข

หากคุณต้องการใช้จริงๆserviceมีตัวเลือกอื่น ๆ

สคริปต์ของคุณควรสนับสนุนอย่างน้อยและstart stopแต่คุณยังสามารถใช้debugคำสั่ง และเริ่มโปรแกรมของคุณด้วย:

service foo debug

อีกวิธีหนึ่งคือตรวจสอบอาร์กิวเมนต์ที่สองในสคริปต์ของคุณและเริ่มโปรแกรมด้วย:

service foo start debug

ปรับเปลี่ยนสคริปต์ init ของคุณเป็นดังนี้:

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

1
สำหรับ vars สภาวะแวดล้อมที่ถูกส่งออกดูเหมือนจะไม่ใช่กรณี - หน้า man ของ service บอกว่า TERM และ LANG เป็นเพียงหน้าเดียวที่ส่งผ่านไปยังสคริปต์ แต่แน่นอนว่าเราสามารถเลี่ยงการให้บริการได้เสมอโดยการเรียกใช้ /etc/init.d/MyNiftyService เริ่มต้นสิ่งที่ 1 ก็ตาม 2 ...
Alien Life Form

ฉันจะหันไปใช้บายพาสเอเลี่ยน ต้องการที่จะนำมันเป็นคำตอบ?
Ondra Žižka

5

ใน Ubuntu พารามิเตอร์เริ่มต้นมักจะพบใน:

/etc/default/<service_name>

2
ถูกต้อง แต่ฉันไม่ต้องการที่จะเปลี่ยนแปลงทุกครั้งที่ฉันต้องการการเปลี่ยนแปลง ... ในระหว่างการพัฒนามันค่อนข้างบ่อย และฉันต้องการ RHEL 6 แก้ไขคำถาม
Ondra Žižka

0

ฉันจะไปกับการจัดหาพารามิเตอร์เพิ่มเติมจากไฟล์เฉพาะระบบหลังจากตรวจสอบการมีอยู่ของมันตามที่แนะนำข้างต้น

ฉันไม่ต้องการเพิ่มตัวเลือกเพิ่มเติมใด ๆ ในการเริ่มต้นบริการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.