shell skripte Anfängerfrage

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
magicmotion4
Beiträge: 5
Registriert: 28.08.2013 23:31:59

shell skripte Anfängerfrage

Beitrag von magicmotion4 » 28.08.2013 23:40:30

Hallo,
ich versuche aus einem Skript in /etc/init.d ein anderes in /home/blueant/apache... aufzurufen.
Dabei erhalte ich folgende Fehlermeldung:
root@hazelnut-ba:/etc/init.d# ./blueant start
sh: /etc/init.d/bin/startup.sh: Datei oder Verzeichnis nicht gefunden
Blueant starten

Das Spript wird nicht aufgerufen.

Das Skript in /etc/init.d/blueant sieht so aus:


-------------------------------------------------------------------------------------------
#! /bin/sh
### BEGIN INIT INFO
# Provides: Blueant starten
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Kurze Beschreibung
# Description: Längere Bechreibung
### END INIT INFO
# Author: Name <email@domain.tld>
# Um das Skript zu zu aktivieren:
# update-rc.d pcmciautils defaults
# Skript deaktivieren:
# update-rc.d -f pcmciautils remove

# Aktionen
case "$1" in
start)
sh /home/blueant/apache-tomcat-6.0.37/start.sh
echo "Blueant starten"
;;
stop)
/home/blueant/apache-tomcat-6.0.37/stop.sh
;;
restart)
/home/blueant/apache-tomcat-6.0.37/stop.sh
/home/blueant/apache-tomcat-6.0.37/start.sh
;;
*)
echo "nur start stop"
;;
esac

exit 0

---------------------------------------------------------------------------------------------------------------

Vielen Dank schon mal.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: shell skripte Anfängerfrage

Beitrag von Cae » 29.08.2013 00:02:08

Wahrscheinlich arbeiten die start.sh und stop.sh mit relativen Pfaden zum working directory, anstatt relativ zu ihrer eigenen Position im Dateisystem. Poste mal eins davon (bitte in [code]-Tags).

Vermutlich reicht es, in den entsprechenden Skripten bin/startup.sh durch "$(dirname "$(readlink -f "$0")")/bin/startup.sh)" (mit Anfuehrungszeichen, wie's da steht) zu ersetzen.

Willkommen im Forum!

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

magicmotion4
Beiträge: 5
Registriert: 28.08.2013 23:31:59

Re: shell skripte Anfängerfrage

Beitrag von magicmotion4 » 29.08.2013 00:11:26

Hallo Cae,
vielen Dank für die schnelle Antwort und die freundliche Begrüßung.
Hie das start Skript.

Code: Alles auswählen

#!/bin/bash

#export LANG=de_DE@euro

BASEDIR=`pwd`

#######################################################################
#
#  Anfang Variablenbereich
#

TOMCAT_HOME=$BASEDIR
JAVA_OPTS="$JAVA_OPTS -Xms256M -Xmx1500M -XX:MaxPermSize=256m -Djava.awt.headless=true"

# fuer den SSL Zugang zum Entwicklungssystem projectplace
#JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.trustStore=/home/placedemo1/WEB-INF/projectplace.keystore -Djavax.net.ssl.keyStorePassword=proventis"

# 64bit Sun Java 1.7
JAVA_HOME=/home/blueant/jdk1.7.0_25/

JDK_HOME=$JAVA_HOME
JRE_HOME=$JAVA_HOME
CATALINA_HOME=$TOMCAT_HOME
CATALINA_TMPDIR=$CATALINA_HOME/temp
CATALINA_PID=$CATALINA_TMPDIR/catalina.pid

#
#  Ende Variablenbereich
#
#######################################################################

export JAVA_HOME TOMCAT_HOME JAVA_OPTS CATALINA_HOME CATALINA_TMPDIR CATALINA_PID
sh $CATALINA_HOME/bin/startup.sh

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: shell skripte Anfängerfrage

Beitrag von Cae » 29.08.2013 00:17:02

Ich wuerd's mal mit

Code: Alles auswählen

BASEDIR=/home/blueant/apache-tomcat-6.0.37/
(anstatt der `pwd`-Zeile) bzw. mit

Code: Alles auswählen

BASEDIR="$(dirname "$(readlink -f "$0")")"
probieren. Erstere Loesung funktioniert solange, bis du das Ziel irgendwann umkopierst, letztere sollte dagegen resistent sein.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

magicmotion4
Beiträge: 5
Registriert: 28.08.2013 23:31:59

Re: shell skripte Anfängerfrage

Beitrag von magicmotion4 » 29.08.2013 00:23:26

Hallo,
ich hätte noch eine Anschlußfrage:
Mir wurde empfohlen das Start Skript über einen cron-Job zu starten.
Das erscheint mir aber nicht richtig, weil dann ja das stop-Skript nicht aufgerufen wird.
Stattdessen wollte ich es über die Skripte in /etc/init.d machen.

Liege ich da richtig?

Vielen Dank.

magicmotion4
Beiträge: 5
Registriert: 28.08.2013 23:31:59

Re: shell skripte Anfängerfrage

Beitrag von magicmotion4 » 29.08.2013 00:25:42

Hallo Cae,
in den Spriten unter /home/blueant darf/sollte ich nichts verändern.

Ich schulde Dir ein Bier

Danke

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: shell skripte Anfängerfrage

Beitrag von Cae » 29.08.2013 00:30:26

magicmotion4 hat geschrieben:in den Spriten unter /home/blueant darf/sollte ich nichts verändern.
Na super, kaputtes Zeug, was man auch nicht fixen darf. Dann musst du halt im init.d-Skript bzw. Cronjob ein cd einbauen:

Code: Alles auswählen

...
# Skript deaktivieren:
# update-rc.d -f pcmciautils remove

cd /home/blueant/apache-tomcat-6.0.37    # <-- neu

# Aktionen
...
-- damit startup.sh wie erwartet relativ gefunden wird.

Cronjob oder nicht haengt von der Art des Dienstes ab. Wenn er einmal durchlaeuft und sich selbst beendet --> Cronjob. Wenn er sich geplantermassen nie beendet --> init-Skript.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

magicmotion4
Beiträge: 5
Registriert: 28.08.2013 23:31:59

Re: shell skripte Anfängerfrage

Beitrag von magicmotion4 » 29.08.2013 01:02:42

Hallo Cae,
nochmals vielen Dank.

Der Dienst beendet sich nicht von selber, daher denke ich ist der cron Job nicht so gut.
Warum schreibst Du kaputtes Zeug?

Viele Grüße

magicmotion4

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: shell skripte Anfängerfrage

Beitrag von Cae » 29.08.2013 19:57:03

magicmotion4 hat geschrieben:Warum schreibst Du kaputtes Zeug?
Weil der Programmierer von diesem startup.sh es so geschrieben hat, dass es nur von einem bestimmten Verzeichnis aus funktioniert und bei allen anderen Pfaden nicht. Mit anderen Worten: kaputt. ;) "Schoen" waere stattdessen eine Erkennung der eigenen Position im Dateisystem mittels readlink -f und dirname, wie ich oben gezeigt hatte.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten