Apa itu status_of_proc, dan bagaimana saya menyebutnya?

10

Dalam skrip init dari nginx di Debian 7 (Wheezy) saya membaca kutipan berikut:

status)
            status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
            ;;

Kode ini berjalan dengan baik dan sudo service nginx statuskeluaran [ ok ] nginx is running. Namun status_of_proctidak didefinisikan dalam bash, tidak juga dalam tanda hubung:

$ type status_of_proc
status_of_proc: not found

Meskipun jika saya memasukkan cek yang sama ke skrip nginx saya mendapat hasil berikut:

status_of_proc is a shell function

Dan menjalankan bash pada file init itu sendiri memberikan penjelasan lebih lanjut:

status_of_proc is a function
status_of_proc () 
{ 
    local pidfile daemon name status OPTIND;
    pidfile=;
    OPTIND=1;
    while getopts p: opt; do
        case "$opt" in 
            p)
                pidfile="$OPTARG"
            ;;
        esac;
    done;
    shift $(($OPTIND - 1));
    if [ -n "$pidfile" ]; then
        pidfile="-p $pidfile";
    fi;
    daemon="$1";
    name="$2";
    status="0";
    pidofproc $pidfile $daemon > /dev/null || status="$?";
    if [ "$status" = 0 ]; then
        log_success_msg "$name is running";
        return 0;
    else
        if [ "$status" = 4 ]; then
            log_failure_msg "could not access PID file for $name";
            return $status;
        else
            log_failure_msg "$name is not running";
            return $status;
        fi;
    fi
}

Namun memasukkan panggilan fungsi yang sama ke dalam skrip init yang dibuat oleh saya sendiri kembali bahwa fungsi tersebut tidak terdefinisi. Jadi tidak ada hubungannya dengan skrip init menjadi istimewa. Juga tidak dinyatakan sebelumnya dalam skrip init. Di internet saya membaca bahwa ini adalah bagian dari LSB, tetapi saya tidak tahu bagaimana menyebutnya. Akankah seseorang tolong bantu saya mencari cara menggunakan fungsi yang luar biasa ini?

Rovanion
sumber
Mengapa pertanyaan ini dianggap di luar topik?
Piotr Jurkiewicz
@PiotrJurkiewicz -> Tidak lagi. :)
Muhamed Huseinbašić

Jawaban:

17

Saya menemukan bahwa fungsinya bersumber dari /lib/lsb/init-functionsskrip init nginx. Jadi menambahkan:

. /lib/lsb/init-functions

Untuk skrip init saya memecahkan masalah.

Rovanion
sumber