Status_of_proc nedir ve nasıl denir?


10

Debian 7'deki (Wheezy) nginx init komut dosyasında aşağıdaki çabayı okudum:

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

Bu kod iyi çalışır ve sudo service nginx statusçıktılar [ ok ] nginx is running. Ancak status_of_procbash'da tanımlanmamıştır, ikisi de çizgi halinde değildir:

$ type status_of_proc
status_of_proc: not found

Aynı kontrolü nginx komut dosyasına eklesem de şu sonucu aldım:

status_of_proc is a shell function

Ve init dosyasının üzerinde bash çalıştırmak daha fazla açıklama sağladı:

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
}

Yine de aynı işlev çağrısını kendim tarafından yapılan bir init betiğine eklemek, işlevin tanımsız olduğunu döndürdü. Yani init betiklerinin özel olmasıyla hiçbir ilgisi yok. Daha önce init betiğinde de bildirilmemiştir. Net etrafında LSB'nin bir parçası olduğunu okudum, ama nasıl arayacağımı anlayamıyorum. Birisi lütfen bu harika işlevi nasıl kullanacağımı anlamama yardımcı olur mu?


Bu soru neden konu dışı olarak değerlendiriliyor?
Piotr Jurkiewicz

@PiotrJurkiewicz -> Artık değil. :)
Muhamed Huseinbašić

Yanıtlar:


17

Bu fonksiyonun /lib/lsb/init-functionsnginx init betiğinden kaynaklandığını gördüm . Yani ekliyoruz:

. /lib/lsb/init-functions

Init betiğim için sorunu çözdüm.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.