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_proc
bash'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?