Systemd त्रुटि: निष्पादन योग्य पथ निरपेक्ष नहीं है


2

मेरे पास सिस्टमड का निम्न कोड है।

[Unit]
Description=start RCC logger server process
Requires=rcc-drbd.service rcc_check_locked_scr.service s96rcc.service
After=rcc-drbd.service rcc_check_locked_scr.service s96rcc.service

[Service]
ExecStart= exec /var/RCC/RCClogger.sh
Restart=no

[Install]
WantedBy=multi-user.target

जहां मैं इसे चलाने की कोशिश करता हूं, मुझे नीचे की त्रुटि मिलती है।

Mar 23 04:45:52 localhost.localdomain systemd[1]: 
[/etc/systemd/system/rcc_logger.service:7] Executable path is not absolute, 
ignoring: exec /v...ogger.sh
Mar 23 04:45:52 localhost.localdomain systemd[1]: rcc_logger.service lacks 
both ExecStart= and ExecStop= setting. Refusing.

मुझे पता है कि यह निष्पादन कमांड के पूर्ण मार्ग के कारण नहीं है, लेकिन चूंकि निष्पादन बाइनरी के रूप में उपलब्ध नहीं है, इसलिए मैं इसके लिए पूर्ण पथ का उपयोग नहीं कर सकता। इस ExecStart को कैसे बनाएं?


3
निकालें exec, इसकी आवश्यकता नहीं है (स्क्रिप्ट में शेल को आह्वान करने के लिए हैशबैंग होना चाहिए)
sebasth

जवाबों:


3

आप execसिस्टमड सर्विस यूनिट कॉन्फ़िगरेशन में उपयोग नहीं कर सकते ।
execएक शेल निर्मित है और इसे सीधे फाइलसिस्टम से नहीं बुलाया जा सकता है (यह फाइलसिस्टम पर नहीं रहता है) - type execऔर whereis execआपको वह दिखाएगा।
उनके द्वारा लिखे गए शेल का उपयोग करें।

उदाहरण के लिए, यदि यह एक bashस्क्रिप्ट है, तो आप स्क्रिप्ट को इस तरह से चला सकते हैं:

bash /var/RCC/RCClogger.sh

अब, bashएक निष्पादन योग्य है और इसमें एक पूर्ण पथ है /bin/bash:। आपका ExecStart निम्नलिखित की तरह दिखेगा:

ExecStart=/bin/bash /var/RCC/RCClogger.sh

एक और तरीका यह है कि आप shebangस्क्रिप्ट की शुरुआत में एक जोड़ दें :

#!/bin/bash
... script code ...

यह ऑपरेटिंग सिस्टम को /bin/bashइस मामले में निर्दिष्ट दुभाषिया के साथ फाइल चलाने के लिए कहता है ।

उसके बाद बस अपनी स्क्रिप्ट को निष्पादन योग्य बनाएं:

chmod +x /var/RCC/RCClogger.sh

और इसे सीधे रूप में उपयोग करें ExecStart:

ExecStart=/var/RCC/RCClogger.sh

@KamilMaciorowski तुम मेरी पसंद के शब्दों के बारे में सही हो, निश्चित।
फैनेटिक

1

"EXecStart =" को सेवा शुरू करने के लिए एक पूर्ण मार्ग की आवश्यकता है। अपनी .sh फ़ाइल के लिए पूर्ण पथ प्राप्त करें और इसे ExecStart कथन में जोड़ें।

फिर से "मैनपेज" आपको विस्तृत जानकारी देगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.