स्वीकृत उत्तर सही है, लेकिन यह निर्दिष्ट नहीं करता है कि सेवा स्क्रिप्ट के rtorrent
साथ सेवा का "सुरक्षित" शटडाउन कैसे करें systemctl
।
अधिकांश मौजूदा उत्तर या स्क्रिप्ट या तो स्क्रीन सत्र या rtorrent
प्रक्रिया को "मार" देते हैं । ऐसा करने में, वे एक संकेत SIGINT (2)
या SIGQUIT (3)
संकेत भेजते हैं जो rtorrent
प्रक्रिया को रोकता / मारता है। दोष यह है कि आमतौर पर लॉक-फाइल को rtorrent
हटाया नहीं जाता है क्योंकि rtorrent
इसे ठीक से बंद नहीं किया गया था। नतीजतन, rtorrent
लगातार लॉक फ़ाइल की वजह से अगली शुरुआत विफल हो जाएगी।
शो के स्रोत कोडrtorrent
पर एक नज़र रखना कि यह एक की उम्मीद करता है SIGTERM (15)
। इसलिए, एक systemctl
सेवा स्क्रिप्ट पर रोक स्टॉप कमांड की तरह लग सकता है:
ExecStop=/usr/bin/kill -s 15 \`pidof rtorrent`
यदि pidof
उपलब्ध नहीं है तो आप कुछ का उपयोग भी कर सकते हैं:
ps -A | grep "rtorrent" | awk '{print $1}'
ps
वर्तमान प्रक्रियाओं को सूचीबद्ध करें
grep
रैस्टोरैंट प्रक्रिया के विवरण निकाले जाते हैं
awk
pid का चयन करता है और इसे stdout में प्रदर्शित करता है
यदि आपको शटडाउन पूरा होने तक प्रतीक्षा करने की आवश्यकता है, तो आप उपयोग कर सकते हैं killall -w
। ध्यान दें कि:
killall
सिग्नल की अनदेखी होने पर हमेशा के लिए रुक सकते हैं, इसका कोई प्रभाव नहीं था, या यदि प्रक्रिया ज़ोंबी स्थिति में रहती है (स्रोत:) man killall
।
sudo service start rtorrent
?