क्या लिनक्स स्टार्टअप में एप्लिकेशन / स्क्रिप्ट को जोड़ने का कोई तरीका है ताकि हर बार सिस्टम बूट हो जाए?
मैं कुछ स्वचालित तरीके की तलाश कर रहा हूं, यानी उपयोगकर्ता को इसे क्रॉन जॉब या कुछ इस तरह से नहीं जोड़ना चाहिए।
क्या लिनक्स स्टार्टअप में एप्लिकेशन / स्क्रिप्ट को जोड़ने का कोई तरीका है ताकि हर बार सिस्टम बूट हो जाए?
मैं कुछ स्वचालित तरीके की तलाश कर रहा हूं, यानी उपयोगकर्ता को इसे क्रॉन जॉब या कुछ इस तरह से नहीं जोड़ना चाहिए।
जवाबों:
सिस्टम-स्तरीय स्टार्टअप स्क्रिप्ट के अलावा आपके डेस्कटॉप वातावरण में ऑटो-चल रहे कार्यक्रमों का अपना तरीका हो सकता है। फ़ोल्डर .config/autostart
को ऑटोरन प्रविष्टियों को परिभाषित करने का एक डेस्कटॉप-तटस्थ तरीका माना जाता है। /etc/xdg/autostart
सिस्टम-वाइड कॉन्फ़िगरेशन के लिए है। Http://developer.gnome.org/autostart-spec/ पर युक्ति के बारे में विवरण ।
LXDE ऑटोस्टार्ट प्रविष्टियों के लिए भी सेट किया जा सकता है ~/.config/lxsession/LXDE/autostart
।
यदि नेटवर्क उठने और चलने के बाद आपको अपनी स्क्रिप्ट्स चलाने की आवश्यकता है तो यह थोड़ा अलग है । उस स्थिति में आपको विशेष पोस्ट-कनेक्ट स्क्रिप्ट की जांच करनी चाहिए जिसे आपके नेटवर्क प्रबंधक के लिए परिभाषित किया जा सकता है। NetworkManager और wicd दोनों के पास पोस्ट-कनेक्ट ऑटोरन प्रविष्टियों को निर्दिष्ट करने के अपने तरीके हैं। यदि नेटवर्क के माध्यम से कॉन्फ़िगर किया गया है ifupdown
, तो पोस्ट-अप स्क्रिप्ट को /etc/network/if-up.d/
फ़ोल्डर में रखा जा सकता है । लेकिन पोस्ट-कनेक्ट स्क्रिप्ट चलाने के लिए एक बेहतर दृष्टिकोण सिस्टमड हो सकता है (सिस्टम के लिए जो इसे समर्थन करते हैं, जो कि आधुनिक डिस्ट्रो का बहुमत है)।
अगर आप जिस चीज को ऑटोस्टार्ट करना चाहते हैं, वह एक ग्राफिकल एप नहीं है, जिसके लिए डेस्कटॉप की जरूरत है तो यह सबसे अच्छा है कि आप एक्सगोर या अपने वर्तमान डेस्कटॉप वातावरण द्वारा प्रदान की गई किसी भी ऑटोस्टार्ट सुविधाओं का उपयोग करने से बचें।
systemd
कई आधुनिक विकृतियों में सर्वव्यापी हो गया है, और यह आपकी सेवाओं को कैसे शुरू किया जाता है और वे कैसे चलते हैं, इसके संदर्भ में बहुत नियंत्रण और लचीलापन प्रदान करता है।
मैं कुछ लाभों को संक्षेप में बताऊंगा ( systemd बहुत कुछ कर सकता है ):
User=myuser
Restart=on-failure|on-watchdog|on-abnormal|always
Type=simple|forking|oneshot|notify|dbus
Wants=network-online.target
में आने के बाद आप अपनी सेवा शुरू कर सकते हैं [Unit]
।एक उदाहरण सेवा जो टेलीग्राम-क्ली डेमन शुरू करती है। इसे अंदर रखें /etc/systemd/system/tg.service
।
[Unit]
Description=MyDaemon
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/local/bin/telegram-cli -k /etc/telegram-cli/tg-server.pub -W -P 1234 -d -vvvRC
ExecStop=/usr/bin/pkill -f telegram-cli
User=jicu
[Install]
WantedBy=multi-user.target
अब आप ऑटोस्टार्ट में सेवा को सक्षम कर सकते हैं:
sudo systemctl enable tg
सेवा शुरू करें:
sudo systemctl start tg
सेवा बंद करो:
sudo systemctl stop tg
स्थिति की जाँच करें:
systemctl status tg
सेवा को अक्षम करें:
sudo systemctl disable tg
आपको अतिरिक्त टाइपिंग को बचाने के लिए आप अपनी ~/.bashrc
लाइन में जोड़ सकते हैं alias sc='sudo systemctl $*'
फिर आप ऊपर दिए गए कमांड को छोटा कर पाएंगे sc start tg
।
नोट: यदि आपने उपयोग किया है
cron
तो जानते हैं कि crontab प्रविष्टियाँ प्रतिबंधित वातावरण में चलाई जाती हैं - वही लागू होता हैsystemd
: हमेशा निरपेक्ष पथों का उपयोग करें, और परिभाषित किए जा रहे किसी भी चर की कोई धारणा न बनाएं। स्पष्ट रूप से कोई भी चर सेट करें जो आपकी स्क्रिप्ट पर निर्भर करता है।systemd
नहीं होगा अपने उपयोगकर्ता का उपयोग करें.bashrc
और$PATH
।
और जानकारी:
हाँ, लिनक्स पर स्टार्टअप पर प्रोग्राम चलाना संभव है, निष्पादन योग्य पथ को परिभाषित करके rc.local
या तो इसमें रहता है /etc
या /etc/rc.d
निर्देशिका:
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
/path/to/executable
नोट: फ़ाइल के प्रलेखन में वर्णित निष्पादन योग्य अधिकार निर्दिष्ट करना न भूलें, अर्थात Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure that this script will be executed during boot.
Startup applications
होम बटन का उपयोग करने के लिए खोजेंAdd
Startup command box
आदेश दर्जOK
(आपको सूची में अपना नया कमांड देखना चाहिए)Close
पुनः आरंभ या लॉग आउट करके और वापस अंदर जाकर परीक्षण करें।
स्रोत: https://help.ubuntu.com/community/AddingProgramToSessionStartup
प्रत्येक वितरण प्रत्येक बूटस्ट्रैप तकनीक का उपयोग करता है, इसलिए आपके डिस्ट्रो के लिए डॉक्स देखने की आवश्यकता है। /etc/rc.local एक ऐसी जगह है जहाँ आप कुछ स्वचालित स्क्रिप्ट रख सकते हैं, लेकिन यह वास्तव में पुराना है। अब अधिकांश लिनक्स आधारित सिस्टम रनवेल्स या सिस्टमड बूटस्ट्रैपिंग का उपयोग करते हैं, इसलिए अधिकांश ऑटोस्टार्ट किए गए कार्य ठीक-ग्रेड नियंत्रित हो सकते हैं।
मुझे अपना उत्तर यहाँ मिला: /programming/7221757/run-automatically-program-on-startup-under-linux-ubuntu मैं जब मैं अपने ट्रैकपैड को बंद करने के लिए एक फ़ाइल / स्क्रिप्ट बनाने में सक्षम था मेरा लिनक्स उबंटू 12.10 सत्र।