स्वीकृत उत्तर सही है, लेकिन यह निर्दिष्ट नहीं करता है कि सेवा स्क्रिप्ट के 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?