daemon /etc/init.d/ erro quando executado como daemon, mas o script funciona bem na linha de comando

1

Erros ao executar a partir do /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!

Executar o script funciona diretamente bem

O script é uma cópia do exemplo 'esqueleto' em /etc/init.d (apenas mudou a seção abaixo)

#!/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 <[email protected]>
#
# 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

Script abaixo

#!/bin/sh
echo '<passwd>' | sudo openconnect [email protected] --passwd-on-stdin https://xxxx.somedomain.com
    
por Conor 05.04.2016 / 16:47

1 resposta

1

O shebang ( #! ) encontrado no início dos arquivos é, na verdade, a versão legível por humanos de um número mágico, que permite que a função exec estabeleça a natureza do arquivo, ie se o arquivo é um binário executável ou um script simples.

Portanto, a mensagem de erro Exec format error significa que a função exec não pôde estabelecer se o seu script, op_connect.sh , é um script ou um binário. Isso geralmente ocorre porque o shebang é de alguma forma incorreto, incluindo a presença de caracteres não imprimíveis. O mais fácil é redigitar o script e certificar-se de que ele é executável, o que, se não fosse assim, explicaria a perplexidade da função exec .

    
por 05.04.2016 / 19:19

Tags