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


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.