ऑटगार्टिंग xorg ऐप्स
यदि आप जिस स्क्रिप्ट को शुरू करना चाहते हैं, उसके लिए एक एक्सगॉर सत्र की आवश्यकता होती है, तो आप फ़्रीडेस्कोटॉप ऑटोस्टार्ट कल्पना का पालन करने की कोशिश कर सकते हैं जो आपके द्वारा उपयोग किए जा रहे डेस्कटॉप वातावरण के आधार पर काम कर सकती है या नहीं भी हो सकती है।
वैकल्पिक रूप से, आप https://wiki.archlinux.org/index.php/autostarting में वर्णित अपने विशिष्ट डेस्कटॉप वातावरण को लक्षित कर सकते हैं ।
एक स्क्रिप्ट को एक सिस्टमड सर्विस के रूप में चलाना
अपनी स्क्रिप्ट एक डेमॉन या 'सेवा' का वर्णन फिट बैठता है, और अपने सिस्टम चल रहा है systemd जो raspbian और सबसे आधुनिक linuces के लिए मामला है, तो आप एक systemd सेवा के रूप में चलाने के लिए अपनी स्क्रिप्ट कॉन्फ़िगर कर सकते हैं - इस बारीक नियंत्रण अपने हाथ में प्रदान करता है जीवनचक्र और निष्पादन पर्यावरण, साथ ही स्क्रिप्ट को शुरू करने (पुनः) के लिए पूर्व शर्त के साथ, जैसे कि नेटवर्क ऊपर और चल रहा है। विफलता के मामले में सेवा पुनरारंभ को कॉन्फ़िगर करना भी संभव है ( Restart=always
और, पुनरारंभ करने के बीच देरी जैसे RestartSec=10
)।
सिस्टम-वाइड उपयोग के लिए /etc/systemd/system
, उदाहरण के लिए , अपने सिस्टमड यूनिट फ़ाइल को vim /etc/systemd/system/autossh.service
निम्न के साथ बनाएँ :
[Unit]
Description=Autossh keepalive daemon
## make sure we only start the service after network is up
Wants=network-online.target
After=network.target
[Service]
## use 'Type=forking' if the service backgrounds itself
## other values are Type=simple (default) and Type=oneshot
Type=forking
## here we can set custom environment variables
Environment=AUTOSSH_GATETIME=0
Environment=AUTOSSH_PORT=0
ExecStart=/usr/local/bin/ssh-keep-alive.sh
ExecStop=/usr/bin/killall -9 autossh
### NOTE: you can have multiple `ExecStop` lines
ExecStop=/usr/bin/killall ssh
# don't use 'nobody' if your script needs to access user files
# (if User is not set the service will run as root)
#User=nobody
# Useful during debugging; remove it once the service is working
StandardOutput=console
[Install]
WantedBy=multi-user.target
यह सभी देखें:
अब हम सेवा का परीक्षण करने के लिए तैयार हैं:
systemctl start autossh
सेवा की स्थिति की जाँच:
systemctl status autossh
सेवा को रोकना:
systemctl stop autossh
एक बार जब आप यह सत्यापित कर लेते हैं कि सेवा अपेक्षित रूप से काम करती है तो इसे सक्षम करें:
systemctl enable autossh
नोट: सुरक्षा उद्देश्यों के systemd
लिए स्क्रिप्ट को प्रतिबंधित वातावरण में चलाया जाएगा, स्क्रिप्ट कैसे crontab
चलाए जाते हैं, इसलिए पहले से मौजूद सिस्टम चर के बारे में कोई धारणा नहीं बनाते हैं। Environment
यदि आपकी स्क्रिप्ट को परिभाषित करने के लिए विशिष्ट चर की आवश्यकता है, तो कुंजियों का उपयोग करें । set -x
अपनी बैश स्क्रिप्ट में सबसे ऊपर जोड़ना और फिर दौड़ना systemctl status my_service
यह पहचानने में मदद कर सकता है कि आपकी स्क्रिप्ट क्यों विफल हो रही है। एक नियम के रूप में, हमेशा सहित echo
और सब कुछ के लिए पूर्ण पथ का उपयोग करें cat
, या स्पष्ट रूप से अपने $ पथ को परिभाषित करें।
.xinitrc
या.xsession
फ़ाइल में चीज़ें जोड़ने पर ध्यान देना चाहिए ।