जवाबों:
स्क्रिप्ट को उचित उपयोगकर्ता की cron
तालिका (यानी क्रॉस्टैब ) के शेड्यूल के साथ रखें @reboot
।
एक उपयोगकर्ता अपनी cron
तालिका को इसके साथ संपादित कर सकता है crontab -e
।
एक उदाहरण जो /path/to/script.sh
स्टार्टअप पर चलेगा :
@reboot /path/to/script.sh
यदि आपको इसे रूट के रूप में चलाने की आवश्यकता है, तो उपयोग न करें @reboot sudo /path/to/script.sh
; रूट के क्रॉस्टैब को संपादित
करने के sudo crontab -eu root
लिए उपयोग करें।
इन्हें भी देखें: crontab (1), cron (8), crontab (8)
उबंटू 15.04 और डिफ़ॉल्ट रूप से फॉरवर्ड कुछ कहा जाता है systemd
, जो एक प्रोग्राम है (प्रकार का) जो स्टार्टअप सेवाओं और प्रक्रियाओं को स्वचालित करता है। आप अपना खुद का बना सकते हैं और केवल थोड़ी सी मेहनत के साथ इसे स्टार्टअप सेवाओं की सूची में जोड़ सकते हैं।
बुनियादी प्रणाली सेवा
यह एक बेयरबोन .service
फ़ाइल है जिसका उपयोग मेरे अजगर गुई सर्वर को लॉन्च करने के लिए किया जा सकता है (यह एक शेल स्क्रिप्ट हो सकता है, यह नहीं है):
[Unit]
Description=Python GUI Server
[Service]
ExecStart=/home/pi/software/GUI_POE.py &
[Install]
WantedBy=multi-user.target
Description
विकल्प किसी भी स्ट्रिंग है कि वर्णित क्या सेवा है या क्या करता है।
ExecStart
विकल्प आदेश पर अमल करने का उल्लेख है। यहां, मैं एक निष्पादन योग्य अजगर स्क्रिप्ट को एक रास्ता देता हूं और &
इसे पृष्ठभूमि में चलाने के लिए टोकन का उपयोग करता हूं ।
WantedBy
विकल्प निर्दिष्ट पूर्वता, क्या लक्ष्य के आधार पर इस सेवा का उपयोग करना चाहता है। यदि आपको किसी विशिष्ट समय पर चलने के लिए आपकी सेवा की आवश्यकता नहीं है, तो बस इसे सेट करें multi-user.target
।
मूल प्रक्रिया
nano
अपनी पसंद के या किसी संपादक का उपयोग करके आप जिस स्क्रिप्ट को स्टार्टअप पर चलाना चाहते हैं, उसे लिखें । सुनिश्चित करें कि आपने फ़ाइल के बहुत ऊपर ( #!/bin/bash
बैश स्क्रिप्ट के लिए) उचित शेबंग को शामिल किया है , और इसके साथ निष्पादन योग्य अनुमति दें chmod
।
बस my_service.service नामक फ़ाइल में अपनी सेवा लिखें, और फिर इसे उचित निर्देशन में कॉपी करें cp my_service.service /lib/systemd/system/
।
अपने सेवा प्रारंभ करें: sudo systemctl start my_service.service
। यह आपकी सेवा को चलाने के लिए जो भी स्क्रिप्ट बताए, लॉन्च करता है। स्टार्ट के बजाय "स्टॉप" वाला वही कमांड इसे बंद कर देगा।
स्टार्ट-अप प्रक्रिया में अपनी सेवा जोड़ें sudo systemctl enable my_service.service
:। इसे हटाने के लिए, बस "सक्षम करें" को उसी कमांड में "अक्षम" से बदलें।
और बस! ध्यान रखें कि आपकी स्क्रिप्ट स्वचालित रूप से रूट अनुमतियों के साथ चलाई जाएगी, क्योंकि यह सिस्टमड सेवाओं में डिफ़ॉल्ट है।
मेरा सरल उदाहरण (पूर्ण)
संदर्भ के लिए, यहां मेरे पास एक सरल सिस्टमड सेवा है जो डैश का उपयोग करके एक साधारण पायथन जीयूआई सर्वर लॉन्च करती है:
[Unit]
Description=Python GUI Server
After=network-online.target
[Service]
Type=simple
WorkingDirectory=/home/pi/software
ExecStart=/home/pi/software/GUI_POE.py &
Restart=always
RestartSec=15s
KillMode=process
TimeoutSec=infinity
User=pi
Group=pi
[Install]
WantedBy=multi-user.target
यह उदाहरण सेवा Python3 स्क्रिप्ट का उपयोग करती है, लेकिन सूत्र शेल स्क्रिप्ट के लिए सटीक है।
आगे पढ़ने को DigitalOcean द्वारा इस उत्कृष्ट ट्यूटोरियल में पाया जा सकता है , और यह AskUbuntu थ्रेड एक उत्कृष्ट उत्तर के साथ है जिसने मुझे सिस्टमड सीखने में मदद की। उम्मीद है की यह मदद करेगा!