डेमन /etc/init.d/ त्रुटि जब डेमन के रूप में चलती है, लेकिन स्क्रिप्ट कमांड लाइन से ठीक काम करती है


1

/Etc/init.d से चलने पर यह त्रुटि करता है

 sudo /etc/init.d/openconnect start
 * Starting open connect xxx.somedomain.com openconnect
start-stop-daemon: unable to start /usr/local/bin/op_connect.sh (Exec format error)
   ...fail!

स्क्रिप्ट का निष्पादन सीधे ठीक काम करता है

स्क्रिप्ट / कंकाल / उदाहरण में 'कंकाल' उदाहरण की एक प्रति है (केवल नीचे का खंड बदला गया है)

#!/bin/sh
### BEGIN INIT INFO
# Provides:          skeleton
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.
### END INIT INFO

# Author: Foo Bar <foobar@baz.org>
#
# Please remove the "Author" lines above and replace them
# with your own name if you copy and modify this script.

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
DESC="open connect XXXXXXX"
NAME=op_connect.sh
DAEMON=/usr/local/bin/$NAME
DAEMON_ARGS="--options args"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Exit if

नीचे स्क्रिप्ट

#!/bin/sh
echo '<passwd>' | sudo openconnect --user=aname@somedomain.com --passwd-on-stdin https://xxxx.somedomain.com

निश्चित करें कि #! फ़ाइल में पहले दो बाइट हैं (इससे पहले कोई स्थान / नई लाइनें नहीं)
skarface

धन्यवाद, जाँच की और # के ऊपर कोई स्थान या रेखा नहीं टूटती! , मैंने अपडेट-आरओडीडी भी चलाया है, अनुमतियों को 755 में बदल दिया है और रूट: रूट मालिक बिना सफलता
Conor

का आउटपुट साझा करें file /usr/local/bin/op_connect.sh
sureshraju

क्षमा करें, मैं आउटपुट को एक कॉरपोरेट बॉक्स के रूप में साझा नहीं कर सकता, इसलिए मुझे जो भी साझा करना है उसमें मुझे अतिरिक्त सावधानी बरतनी होगी लेकिन यह ओपेंकोन कनेक्शन को खोलता है और इसे जीवित रखता है।
Conor

पटकथा लिखने के लिए आपने क्या इस्तेमाल किया? किसी भी मौका है कि #! कुछ यूनिकोड संस्करण है?
skarface

जवाबों:


1

shebang ( #! ) फाइलों की शुरुआत में पाया गया वास्तव में एक जादू की संख्या का मानव-पठनीय संस्करण है, जो जादू की अनुमति देता है exec फ़ाइल की प्रकृति को स्थापित करने के लिए कार्य, अर्थात। चाहे फ़ाइल एक निष्पादन योग्य बाइनरी या एक सादे स्क्रिप्ट है

इसलिए त्रुटि संदेश Exec format error इसका मतलब है कि exec फ़ंक्शन यह निर्धारित नहीं कर सका कि आपकी स्क्रिप्ट, op_connect.sh, एक स्क्रिप्ट या एक बाइनरी है। यह आमतौर पर होता है क्योंकि shebang गैर-मुद्रण योग्य पात्रों की उपस्थिति सहित किसी भी तरह से गलत वर्तनी है। आपके लिए सबसे आसान काम स्क्रिप्ट को फिर से लिखना और सुनिश्चित करना है यह निष्पादन योग्य है , जो, यदि ऐसा नहीं था, तो पहेली की व्याख्या करेगा exec समारोह।

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