start-stop-daemon beklendiği gibi çalışmıyor, pid dosyası yazılmadı


17

(Bu kendini konsoldan ayırmaz) bir python tabanlı programı kontrol etmeye çalışıyorum

#!/bin/bash

user=nobody
pid=/var/run/xx.pid
name=xx
prog=/xx.py

case $1 in
    start)
        /sbin/start-stop-daemon --start -b --oknodo --user "$user" --name "$name" --pidfile "$pid" --startas "$prog" --chuid nobody -- --daemon
        ;;
    stop)
        /sbin/start-stop-daemon --stop --oknodo --user "$user" --name "$name" --pidfile "$pid" --retry=TERM/5/KILL/1
        ;;
    restart)
        ;;
    *)
        ;;
esac

Başlangıç ​​kısmı iyi çalışıyor. Senaryoyu çalıştığını ve çalıştığını görebiliyorum, ancak durdurma kısmı çalışmıyor. Basitçe söylüyorNo xx found running; none killed.

Yani sanırım başlangıç ​​kısmında bir sorun var mı?

Yanıtlar:


22

start-stop-daemon --start --pidfile "$pid"--make-pidfile( -m) belirtilmedikçe pid dosyasına yazmaz . Bu olmadan --make-pidfileonu oluşturmak için program başlatılır. Ayrıca --make-pidfileçalışmak için, başlatılan işlem kendini (bir çatal aracılığıyla) daemonize edemez, çünkü o start-stop-daemonzaman dosyaya hangi PID'yi koyması gerektiğini bilemez.

--pidfile "$pid"Kullanım senaryosunuzdaki tek şey start-stop-daemon, zaten çalışıyorsa programı başlatmamaya neden olmasıdır.


İşlem hala durmuyorsa, iletilen tüm ölçütlerin start-stop-daemon --stopeşleşmesi gerekir. Anlam $pidçalışan bir işlem olmalı $user, işlemin UID'si eşleşmeli ve işlem adı (arg0) eşleşmelidir $name.
Arg0'ın değerini yaparak belirleyebilirsiniz.ps h -p $pid -o comm


Tamam pidfile yazılmıştır. Ancak durdurma kısmı hala çalışmıyor, aynı hata mesajı
daisy

@ warl0ck pid dosyası doğru $usermu ve işlemin UID'si eşleşiyor mu?
Patrick

Evet, start-stop-daemon'un okumaya çalıştığını gördüm /proc/pid/stat: read(4, "5559 (python) S 1 5558 5558 0 -1"..., 1024) = 326yani ad pythonbelki de olmalı ?
papatya

Bitti, yerine isim pythonkonuldu ve işe yaradı ;-P
papatya

Doğru, evet, $nameeşleşmek zorunda. Bunu geçtiğinizi tamamen özledim. Cevabı güncelleyecek.
Patrick
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.