স্টার্ট-স্টপ-ডেমন প্রত্যাশার মতো কাজ করছে না, কোনও পিড ফাইল লেখা হয়নি


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) নির্দিষ্ট না করা থাকলে পিড ফাইলে লিখবেন না write --make-pidfileএটি ব্যতীত এটি তৈরির জন্য প্রোগ্রাম চালু করা হবে। এছাড়াও --make-pidfileকাজ করার জন্য, প্রক্রিয়াটি চালু হওয়ার ফলে নিজেকে (কাঁটাচামচ দিয়ে) ডেমোনাইজ করতে পারে না, কারণ start-stop-daemonফাইলটিতে এটি কী পিআইডি লাগাতে হবে তা জানতে পারে না।

--pidfile "$pid"আপনার ব্যবহারের দৃশ্যে একমাত্র কাজটি হ'ল start-stop-daemonএটি ইতিমধ্যে চালু থাকলে প্রোগ্রামটি শুরু না করার ফলস্বরূপ ।


প্রক্রিয়া এখনও বন্ধ না হলে, সমস্ত মানদণ্ড start-stop-daemon --stopমেলানো উচিত। অর্থ $pidএকটি চলমান প্রক্রিয়া হতে হবে, প্রক্রিয়াটির ইউআইডি মিলতে হবে $user, এবং প্রক্রিয়াটির নামটি (আরজি 0) মেলাতে হবে $name।
আপনি আরগ 0 এর মানটি নির্ধারণ করতে পারেনps h -p $pid -o comm


ঠিক আছে পিডফাইলে লেখা আছে। কিন্তু থামান অংশটি এখনও কাজ করছে না, একই ত্রুটি বার্তা
— ডেইজি

@ warl0ck পিড ফাইলটি সঠিক, এবং কি প্রক্রিয়াটির ইউআইডি মিলছে $user?
— প্যাট্রিক

হ্যাঁ, আমি স্টার্ট-স্টপ-ডিমনটি পড়ার চেষ্টা করতে দেখেছি /proc/pid/stat: read(4, "5559 (python) S 1 5558 5558 0 -1"..., 1024) = 326তাই নামটির pythonপরিবর্তে সম্ভবত নাম রাখা উচিত ?
— ডেইজি

সম্পন্ন, প্রতিস্থাপিত নাম pythonএবং এটি কাজ করেছে ;
— ডেইজি

ঠিক আছে, হ্যাঁ, $nameখুব মিল আছে। সম্পূর্ণরূপে মিস হয়েছে যে আপনি এটি পাস করেছেন। উত্তরটি আপডেট করবে।
— প্যাট্রিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.