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


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.