लिनक्स विंडोज स्टार्टअप के बराबर क्या है?


16

क्या लिनक्स स्टार्टअप में एप्लिकेशन / स्क्रिप्ट को जोड़ने का कोई तरीका है ताकि हर बार सिस्टम बूट हो जाए?

मैं कुछ स्वचालित तरीके की तलाश कर रहा हूं, यानी उपयोगकर्ता को इसे क्रॉन जॉब या कुछ इस तरह से नहीं जोड़ना चाहिए।



अगर यह
उबंटु

जवाबों:


11

क्रोन जैसा कुछ ?

@rebootप्रविष्टि पर ध्यान दें

यह सबसे लचीला दृष्टिकोण है, और सबसे अधिक विंडोज '' शेड्यूल किए गए कार्य '' (वास्तव में बेहतर) है।


क्या उपयोगकर्ता के इरादे के बिना CRON में नौकरी जोड़ना संभव है?
सौरव

हाँ। बस लिखने के लिए /etc/cron.dया अपने कार्यक्रम से crontab को जानने के बिना उन्हें लिखें ।

क्या मतलब? यदि आप मैन्युअल रूप से एक प्रोग्राम जोड़ते हैं, तो हाँ। Crontabs सिर्फ पाठ फ़ाइलें हैं।

10

Xorg ऑटो-स्टार्ट

सिस्टम-स्तरीय स्टार्टअप स्क्रिप्ट के अलावा आपके डेस्कटॉप वातावरण में ऑटो-चल रहे कार्यक्रमों का अपना तरीका हो सकता है। फ़ोल्डर .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

और जानकारी:


7

हाँ, लिनक्स पर स्टार्टअप पर प्रोग्राम चलाना संभव है, निष्पादन योग्य पथ को परिभाषित करके 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.


फ़ाइल में प्रविष्टि जोड़ने से कार्यक्रम हर बार शुरू हो जाएगा?
सौरव

2
हर बार जब आप रिबूट करते हैं, तो हाँ। यदि आप नियमित रूप से अनुसूचित नौकरी चाहते हैं (हर दिन, घंटा, सप्ताह, या कोई विषम संयोजन) तो cronशेड्यूलर आपका मित्र है।

3
  1. Startup applicationsहोम बटन का उपयोग करने के लिए खोजें
  2. क्लिक करें Add
  3. एप्लिकेशन को कॉल करने के लिए एक नाम दर्ज करें (कोई भी नाम करेगा)
  4. में Startup command boxआदेश दर्ज
  5. क्लिक करें OK(आपको सूची में अपना नया कमांड देखना चाहिए)
  6. क्लिक करें Close

पुनः आरंभ या लॉग आउट करके और वापस अंदर जाकर परीक्षण करें।

स्रोत: https://help.ubuntu.com/community/AddingProgramToSessionStartup


1

प्रत्येक वितरण प्रत्येक बूटस्ट्रैप तकनीक का उपयोग करता है, इसलिए आपके डिस्ट्रो के लिए डॉक्स देखने की आवश्यकता है। /etc/rc.local एक ऐसी जगह है जहाँ आप कुछ स्वचालित स्क्रिप्ट रख सकते हैं, लेकिन यह वास्तव में पुराना है। अब अधिकांश लिनक्स आधारित सिस्टम रनवेल्स या सिस्टमड बूटस्ट्रैपिंग का उपयोग करते हैं, इसलिए अधिकांश ऑटोस्टार्ट किए गए कार्य ठीक-ग्रेड नियंत्रित हो सकते हैं।


0

मुझे अपना उत्तर यहाँ मिला: /programming/7221757/run-automatically-program-on-startup-under-linux-ubuntu मैं जब मैं अपने ट्रैकपैड को बंद करने के लिए एक फ़ाइल / स्क्रिप्ट बनाने में सक्षम था मेरा लिनक्स उबंटू 12.10 सत्र।


3
खुशी है कि आपको एक समाधान मिला, क्या आप अपने उत्तर में चरणों का सारांश शामिल कर सकते हैं, बस यह उत्तर केवल एक लिंक की तुलना में अधिक उपयोगी है। धन्यवाद!
slm

स्टार्टअप पर मेरे ट्रैकपैड को स्वचालित करने और बंद करने का एक रास्ता खोज रहा था। टर्मिनल में मैंने जो कमांड दर्ज की थी, वह थी 'sudo modprobe -r psmouse' यह चालू सत्र में ट्रैकपैड को बंद कर देगी। मैं इसे बूट पर स्वचालित करना चाहता था। मैंने कुछ शोध किया और 'sudo modprobe -r psmouse' नामक फाइल /etc/rc.local को संशोधित करके एक स्क्रिप्ट लिखी। फिर टर्मिनल से निम्नलिखित आदेश जारी करना: 'sudo mv / filename /etc/init.d/' 'sudo chmod + x /etc/init.d/filename' 'sudo update-rc.denename defaults' अब टचपैड बंद है प्रारंभ होने पर।
CatGuyTX
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.