Ubuntu เทียบเท่ากับ CentOS สำเร็จ / ล้มเหลว


8

บริการจำนวนมากใน CentOS มีลักษณะเช่นนี้ (ยกเว้นสีเขียวและสีแดงตามลำดับ):

$ sudo service blah start
Starting blah:           [  OK  ]
$ sudo service notrunning stop
Stopping notrunning:     [FAILED]

นี้เกิดขึ้นเพราะ/etc/init.dสคริปต์ใช้สคริปต์สาธารณูปโภคใน/etc/rc.d/init.d/functionsที่เรียกว่าและsuccess failureนี่เป็นตัวอย่างข้อมูลจาก/etc/init.d/sshdใน CentOS:

echo -n $"Starting $prog: "
$SSHD $OPTIONS && success || failure

คำถามของฉันคือ: มีอูบุนตูที่เทียบเท่าหรือไม่ ฉันสามารถคัดลอกสคริปต์ไปได้ แต่มันมีความซับซ้อนมากกว่าที่คุณคิดและทำไมต้องคิดค้นวงล้อใหม่หากฉันไม่ต้องทำ

คำตอบ:


7

ฉันคิดว่าฟังก์ชั่นที่คุณต้องการนั้นมาจาก/lib/lsb/init-functionsและตั้งชื่อlog_success_msgและlog_failure_msg:

$ . /lib/lsb/init-functions
$ log_success_msg foo
 * foo
$ log_failure_msg foo 
 * foo

ในเอาต์พุตนี้ตัวแรก*คือสีเทาตัวที่สองคือสีแดง (ตัวพิมพ์ใหญ่ผิดพลาด) ไม่ได้มีสีสันมากแค่ enoug เพื่อให้ได้จุดผ่าน ...


จาก/lib/lsb/init-functions:

[ ... ]

log_success_msg () {
    if [ -n "${1:-}" ]; then
        log_begin_msg $@
    fi
    log_end_msg 0
}

log_failure_msg () {
    if [ -n "${1:-}" ]; then
        log_begin_msg $@ "..."
    fi
    log_end_msg 1 || true
}

[ ... ]

2

คุณสามารถใช้ฟังก์ชั่นที่มีให้ในlsb-baseแพ็คเกจ/lib/lsb/init-functionsได้ ฉันเคยเห็นinit.dสคริปต์การจัดหาไฟล์นั้นแล้วใช้ฟังก์ชั่นภายในเช่นlog_end_msg:

$ (. /lib/lsb/init-functions; log_end_msg 1)
   ...fail!
$ (. /lib/lsb/init-functions; log_end_msg 0)
   ...done.

ตัวอย่างเช่นตัวอย่างจาก/etc/init.d/ssh( caseสำหรับstart):

if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then
    log_end_msg 0 || true
else
    log_end_msg 1 || true
fi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.