आर्कलिनक्स पर बूट पर ऑटोस्टार्ट करने वाली एक कस्टम सेवा कैसे बनाई जाएगी?


10

मैं आर्चलिनक्स (सिस्टमड) पर स्टार्टअप पर एक साधारण कमांड चलाना चाहता हूं:

nohup fatrat -n &

मुझे यह डेबियन पर काम कर रहा है:

#! /bin/sh
# /etc/init.d/fatratWS

### BEGIN INIT INFO
# Provides: fatratWS
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: fatratWS init script.
# Description: Starts and stops fatrat Web Server services.
### END INIT INFO

#VAR
FATRAT_PID=$(ps aux | awk '/fatrat --nogui/ && !/awk/ && !/nohup/ {print $2}')

# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting script fatratWS"
if [ -z "$FATRAT_PID" ]; then
nohup fatrat --nogui &
echo "Started"
else
echo "fatratWS already started"
fi
;;
stop)
echo "Stopping script fatratWS"
if [ ! -z "$FATRAT_PID" ]; then
kill $FATRAT_PID
fi
echo "OK"
;;
status)
if [ ! -z "$FATRAT_PID" ]; then
echo "The fatratWS is running with PID = "$FATRAT_PID
else
echo "No process found for fatratWS"
fi
;;
*)
echo "Usage: /etc/init.d/fatratWS {start|stop|status}"
exit 1
;;
esac

exit 0

मैं आर्क पर समान कैसे प्राप्त कर सकता हूं?

मैंने कोशिश की:

[Unit]
Description=Fatrat NoGui Web Access Service

[Service]
ExecStart=/usr/bin/nohup /usr/bin/fatrat -n &
Type=forking

[Install]
WantedBy=multi-user.target

लेकिन यह मैन्युअल रूप से शुरू करते समय शुरू करने में विफल रहता है (टाइमआउट)

जवाबों:


14

इसे इस्तेमाल करे:

[Unit]
Description=Fatrat NoGui Web Access Service
Requires=network.target
After=network.target

[Service]
ExecStart=/usr/bin/fatrat -n
Type=forking

[Install]
WantedBy=multi-user.target
  • मैंने मान लिया, कि "वेब एक्सेस सर्विस" को नेटवर्क की आवश्यकता है, इसलिए मैंने आवश्यकता के अनुसार network.target को जोड़ा।

  • नोह का उपयोग करना अनावश्यक है क्योंकि यह कार्यक्षमता सिस्टमड द्वारा ही प्रदान की जाती है, 'और' के लिए समान है।

  • क्योंकि हम nohup का उपयोग नहीं करते हैं, इसलिए प्रकार सरल में बदल जाएगा, हालांकि, git रिलीज़ पर उपलब्ध वेब इंटरफ़ेस तब तक काम नहीं करेगा जब तक हम इसे फोर्किंग नहीं बनाते।

  • Systemd सेवा फ़ाइलों की अधिक जानकारी के लिए "systemd.service" मैन पेज देखें और https://wiki.archlinux.org/index.php/Systemd#Writing_custom_.service_files

  • यदि यह क्रैश हो जाए तो आप इसे फिर से चालू Restart=alwaysकरने के लिए [Service]अनुभाग में जोड़ने पर विचार कर सकते हैं ।

  • सर्विस फ़ाइल को /etc/systemd/system/fatrat.serviceइसके माध्यम से स्वचालित स्टार्टअप के लिए सक्षम करेंsystemctl enable fatrat.service


धन्यवाद, यह काम करता है! फर्क सिर्फ इतना है कि मैं करना था जोड़ने के लिए था User=my_user_nameके तहत [Service]खंड मेरे उपयोगकर्ता के रूप में आवेदन को चलाने के लिए। इस तरह से एप्लिकेशन इसकी कॉन्फ़िगरेशन फ़ाइलों को लोड कर सकता है/home/my_user_name/.local/share/fatrat/data
Joudicek Jouda
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.