स्टार्ट-स्टॉप-डेमॉन उम्मीद के मुताबिक काम नहीं कर रहा है, कोई पीआईडी ​​फाइल नहीं लिखी गई थी


17

मैं एक अजगर आधारित कार्यक्रम (जो खुद को कंसोल से अलग नहीं करता है) को नियंत्रित करने की कोशिश कर रहा हूं

#!/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

स्टार्ट पार्ट ठीक काम करता है। मैं स्क्रिप्ट को देख सकता हूं और चल रहा हूं, लेकिन स्टॉप पार्ट नहीं है। यह बस कहता हैNo xx found running; none killed.

तो मुझे लगता है कि प्रारंभ भाग में कुछ गड़बड़ है?

जवाबों:


22

start-stop-daemon --start --pidfile "$pid"जब तक --make-pidfile( -m) निर्दिष्ट न हो, पीआईडी ​​फाइल को न लिखें । इसके बिना --make-pidfileइसे बनाने के लिए शुरू किए जा रहे कार्यक्रम पर निर्भर है। --make-pidfileकाम के लिए भी , लॉन्च की जा रही प्रक्रिया खुद को (एक कांटा के माध्यम से) डीमॉनेटाइज नहीं कर सकती है, क्योंकि तब start-stop-daemonपता नहीं चलेगा कि पीआईडी ​​को फाइल में क्या डालना चाहिए।

--pidfile "$pid"आपके उपयोग परिदृश्य में केवल एक चीज यह है कि start-stop-daemonयदि वह पहले से ही चल रहा है तो प्रोग्राम को शुरू नहीं करने का परिणाम होगा ।


यदि प्रक्रिया अभी भी नहीं रुक रही है, तो सभी मानदंडों start-stop-daemon --stopको मिलान करना होगा। मतलब $pidएक रनिंग प्रोसेस होना है, प्रक्रिया के UID को मैच करना है $user, और प्रोसेस नाम (arg0) को मैच करना है $name।
आप arg0 का मान निर्धारित करके कर सकते हैंps h -p $pid -o comm


ठीक है पिडफाइल लिखा है। लेकिन स्टॉप पार्ट अभी भी काम नहीं कर रहा है, वही त्रुटि संदेश
— डेज़ी

@ warl0ck pid फ़ाइल सही है, और क्या प्रक्रिया का UID मेल खाता है $user?
— पैट्रिक

हां, मैंने देखा कि स्टार्ट-स्टॉप-डेमन ने पढ़ने की कोशिश की /proc/pid/stat: read(4, "5559 (python) S 1 5558 5558 0 -1"..., 1024) = 326तो नाम pythonशायद इसके बजाय होना चाहिए ?
— डेज़ी

हो गया, नाम बदल दिया गया pythonऔर इसने काम किया; -पी
— डेज़ी

सही, हां, $nameमैच भी करना है। पूरी तरह से चूक गया कि आप उस में से गुजर रहे थे। उत्तर को अपडेट करेगा।
— पैट्रिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.