इसे सिस्टमैड से कैसे करें
यदि आप इस धागे को जून 2016 के बाद पाते हैं, तो उबंटू और इसके डेरिवेटिव मिंट सहित सिस्टम इनिशियलाइज़ेशन और शटडाउन को नियंत्रित करने के लिए उपयोग करेंगे। मुझे पुराने दृष्टिकोण से समस्या थी इसलिए सिस्टमड तरीके से शोध किया।
सिस्टमड के साथ आप नीचे दिए गए टेम्प्लेट का उपयोग करके अपनी स्क्रिप्ट को कॉल करने के लिए एक या दो फाइल बनाते हैं, और एक कमांड निष्पादित करते हैं। सरल।
जीयूआई संस्करण
स्टार्टअप और / या शटडाउन में आप जो स्क्रिप्ट चलाना चाहते हैं उसे पहले बनाएं। मैंने बनाया .scopening_atstart और .scfullcopy_atend।
फिर सुनिश्चित करें कि वे फ़ाइल को राइट क्लिक करके, संपत्तियों का चयन करके और अनुमतियों के तहत, सुनिश्चित करें कि आपने प्रोग्राम के रूप में फ़ाइल निष्पादित करने की अनुमति दी है।
जिन दो फाइलों को मैंने बनाया है, वे एक रैमडिस्क की सामग्री को पॉप्युलेट और सेव करती हैं। वे यह साबित करने के लिए मेरे होम डायरेक्टरी में एक फ़ाइल भी बनाते हैं कि सेवा काम कर रही है। वे फार्म के थे:
#!/bin/sh
cp -pru /home/john/zRamdisk/subdirectory1/* /home/john/.wine/drive_c/subdirectory1/
rm /home/john/stop_time
date +%D' '%T > /home/john/stop_time
फिर मैंने अपने फ़ाइल प्रबंधक को रूट के रूप में खोला, खोला /etc/systemd/system
और एक फ़ाइल स्टार्टअप बनाया। सेव और एक फ़ाइल save-ramdisk.service। जाहिर है आप अपने खुद के नाम चुन सकते हैं और जेनेरिक नामों में johns_start.service नामक एक स्टार्टअप फ़ाइल और johns_shutdown.service नामक एक शटडाउन फ़ाइल शामिल हो सकती है। बस मौजूदा सेवा नामों को न चुनें।
[Unit]
Description=Startup Applications
[Service]
Type=oneshot
RemainAfterExit=false
ExecStart=/home/john/.scopening_atstart
[Install]
WantedBy=multi-user.target
तथा
[Unit]
Description=Save Ramdisk to Wine drive C
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/home/john/.scfullcopy_atend
[Install]
WantedBy=multi-user.target
आप एक ही सेवा फ़ाइलों का उपयोग कर सकते हैं, मेरा निष्पादन योग्य स्क्रिप्ट का पूरा रास्ता मेरा के लिए।
अंत में हर एक के लिए कमांड systemctl आपके_files_name को सक्षम करता है (लेकिन प्रत्यय सेवा के बिना)। तो मेरा पहला थाsystemctl enable startup
सेवाओं को शुरू करने के लिए कंप्यूटर को एक बार रिबूट करें। जब भी सिस्टमड मल्टी-यूजर टारगेट में प्रवेश करता है और जब वह मल्टी-यूजर टारगेट से बाहर निकलता है तो स्टॉप सर्विस शुरू कर देता है। विभिन्न सक्रियण स्थितियों के साथ वैकल्पिक सेवा फाइलें नीचे वर्णित की जाएंगी।
CLI (कमांड लाइन) संस्करण
यह वर्णन मानता है कि आप अपने घर निर्देशिका से संचालित करते हैं / घर / जॉन के बजाय, आवश्यकतानुसार sudo का उपयोग करते हैं, और संपादक की आपकी पसंद जहां मैं vim या svim लिखता हूं।
पहली पंक्ति के साथ स्टार्टअप और शटडाउन स्क्रिप्ट बनाएं और #!/bin/sh
उनका उपयोग करके निष्पादन योग्य बनाएं chmod +x my_new_filename
।
ऊपर के रूप में दो फ़ाइलें बनाएँ , या इस उदाहरण में, स्टार्टअप और शटडाउन कार्यों को संभालने के लिए एक फ़ाइल। मैं अपने होम डायरेक्टरी में स्क्रिप्ट निष्पादित करूंगा लेकिन @don_crissti ने स्टैक एक्सचेंज में कुछ विकल्प दिखाए।
svim /etc/systemd/system/start_and_stop.service
और फ़ाइल सामग्री में कॉपी करें:
[Unit]
Description=Run Scripts at Start and Stop
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/home/john/.startup_commands #your paths and filenames
ExecStop=/home/john/.shutdown_commands
[Install]
WantedBy=multi-user.target
फिर कमांड के साथ सेवा को सक्षम करें :
systemctl enable start_and_stop
और अपने सिस्टम को रिबूट करें जिसके बाद सेवाएं सक्रिय होंगी। आदेश systemctl is-enabled start_and_stop
और systemctl is-active start_and_stop
अपनी नई सेवाओं की निगरानी में इस्तेमाल किया जा सकता है।
शटडाउन के लिए ट्रिगर शर्तों को बदलना
स्क्रिप्ट चलाने के लिए आरंभ करने के लिए सभी उपर की फाइलें मल्टी-उपयोगकर्ता वातावरण के खुले या बंद का उपयोग करती हैं। नीचे दी गई फ़ाइल अपनी स्क्रिप्ट आरंभ करने के लिए चार संभावित शटडाउन प्रक्रियाओं की शुरुआत का उपयोग करती है। पहले वाली लाइन + वांटेडबी लाइन पर लक्ष्य जोड़ना या हटाना आपको और बेहतर बनाने देगा:
इस फाइल को @Matthias द्वारा यूनिक्स एंड लिनक्स में एक उत्तर में प्रस्तावित किया गया था, लेकिन जब तक मैंने एक इंस्टॉलेशन सेक्शन नहीं जोड़ा तब तक मैं इसे चलाने में असमर्थ था।
दोबारा, स्क्रिप्ट को संपादित करें /etc/systemd/service/
और इसका उपयोग करने में सक्षम करें systemctl enable your_file_name
। जब मैंने लक्ष्य का उपयोग किया तो मैंने systemclt disable file_name
कमांड का उपयोग किया और फिर इसे फिर से सक्षम किया जिसने इसे लक्ष्य निर्देशिकाओं के लिए सहानुभूति दी। रिबूट और सेवा का संचालन होगा।
[Unit]
Description=Do something required
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
# This works because it is installed in the target and will be
# executed before the target state is entered
# Also consider kexec.target
[Service]
Type=oneshot
ExecStart=/home/john/.my_script #your path and filename
[Install]
WantedBy=halt.target reboot.target shutdown.target