Aktuelle Seite: Home IT-Technik Qnap TS-419P Qnap TS-419P Prozesse Starten/Stoppen bei Startup/Shutdown
Qnap TS-419P Prozesse Starten/Stoppen bei Startup/Shutdown PDF Drucken
   15.09.2010

Vorbedingung:

Das QPKG Optware muss installiert sein ...

 

 

Was ist für eigenes Startup/Shutdown zu realisieren?

Ich denke mit den im Folgenden beschriebenen Schritten und etwas Linux KnowHow ist eine Übertragung auf die eigene QNAP möglich. Getestet ist es auf meiner QNAP TS-419P.


1. Anmelden über eine SSH Konsole auf der QNAP

 

2. Bestimmen wo sich das Optware Verzeichnis befindet

cd /etc/init.d
ls -l Optware.sh
lrwxrwxrwx    1 admin    administ       40 Sep 15 08:31 Optware.sh -> /share/HDA_DATA/.qpkg/Optware/Optware.sh*

 

Das Optware Basisverzeichnis ist bei mir also /share/HDA_DATA/.qpkg/Optware/

 

3. Anlegen von benötigten Verzeichnissen

cd /share/HDA_DATA/.qpkg/Optware/
cd etc
mkdir rcS.d
mkdir rcK.d

 

(ggf. anlegen von init.d falls nicht vorhanden bei mir ist es vorhanden!: prüfen mit ls init.d anlegen mit mkdir init.d)


4. Wechsel in das init.d Verzeichnis (unter /share/HDA_DATA/.qpkg/Optware/etc )

cd init.d

 

5. Anlegen eines Start/Stop scriptes (unter /share/HDA_DATA/.qpkg/Optware/etc/init.d )

(Anlegen eines Testscripts mit dem folgenden Aufbau und speichern unter test.sh)

#!/bin/sh
#
# 20100915, AP test.sh own init.d script
#
# Scrip to start / stop  test

case "$1" in
  start)
     echo  "[$1] Starting ..."
     /sbin/log_tool -a "TEST started" -t 0 -u SYSTEM -m LOCAL
  ;;
  stop)
    echo "[$1] Shutting down ..."
    /sbin/log_tool -a "TEST shutdown" -t 0 -u SYSTEM -m LOCAL
   ;;
   restart)
     $0 stop
     $0 start
   ;;
   *)
     echo "Usage: $1 {start|stop|restart}"
     exit 1
esac

exit 0


 

6. Anlegen vom  rcS_admin  script mit dem folgenden Inhalt (unter /share/HDA_DATA/.qpkg/Optware/etc/init.d/)

#!/bin/sh

# Start all init scripts in /share/HDA_DATA/.qpkg/Optware/etc/rcS.d
# executing them in numerical order.
#
# 20100915, AP modify this for own rcS scrips
#
# this version is spezial ! parm1 must be the QPKD_DIR build in Optware.sh
QPKG_DIR=$1
#echo "[rcS_admin] exec own StartScripts in $QPKG_DIR/etc/rcS.d/"

for i in $QPKG_DIR/etc/rcS.d/S??* ;do

     # Ignore dangling symlinks (if any).
     #[ ! -f "$i" ] && continue

     echo "[rcS_admin] exec own StartScript $i"
     case "$i" in
    *.sh)
        # Source shell script for speed.
        (
        trap - INT QUIT TSTP
        set start
        . $i
        )
        ;;
    *)
        # No sh extension, so fork subprocess.
        $i start
        ;;
    esac
done


7. Anlegen vom  rcK_admin  script mit dem folgenden Inhalt (unter /share/HDA_DATA/.qpkg/Optware/etc/init.d/)

#!/bin/sh

# Start all init scripts in /share/HDA_DATA/.qpkg/Optware/etc/rcK.d
# executing them in numerical order.
#
# 20100915, AP modify this for own rcK scrips (kill/shutdown)
#
# this version is spezial ! parm1 must be the QPKD_DIR build in Optware.sh
QPKG_DIR=$1
#echo "[rcK_admin] exec own StopScripts in $QPKG_DIR/etc/rcK.d/"

for i in $QPKG_DIR/etc/rcK.d/K??* ;do

     # Ignore dangling symlinks (if any).
     #[ ! -f "$i" ] && continue

     echo "[rcS_admin] exec own StopScript $i"
     case "$i" in
     *.sh)
         # Source shell script for speed.
         (
         trap - INT QUIT TSTP
         set stop
         . $i
         )
         ;;
      *)
         # No sh extension, so fork subprocess.
         $i stop
         ;;
     esac
done


8. Symbolischen link unter rcS.d anlegen
(unter /share/HDA_DATA/.qpkg/Optware/etc/rcS.d/ )

cd ../rcS.d
ln -s ../init.d/test.sh ./S10test

 

9. Symbolischen link unter rcK.d anlegen (unter /share/HDA_DATA/.qpkg/Optware/etc/rcK.d/ )

cd ../rcK.d
ln -s ../init.d/test.sh ./K90test

 

 

10. Modifikation des Scripts Optware.sh unter (unter /share/HDA_DATA/.qpkg/Optware/)

Dieses ist das Optware.sh Script so wie es auf meiner QNAP TS-419P gespeichert ist.

Die Änderungen an dem Script habe ich so hervorgehoben.

 

#!/bin/sh

RETVAL=0
QPKG_NAME="Optware"

_exit()
{
    /bin/echo -e "Error: $*"
    /bin/echo
    exit 1
}

# Determine BASE installation location according to smb.conf
BASE=
publicdir=`/sbin/getcfg Public path -f /etc/config/smb.conf`
if [ ! -z $publicdir ] && [ -d $publicdir ];then
    publicdirp1=`/bin/echo $publicdir | /bin/cut -d "/" -f 2`
    publicdirp2=`/bin/echo $publicdir | /bin/cut -d "/" -f 3`
    publicdirp3=`/bin/echo $publicdir | /bin/cut -d "/" -f 4`
    if [ ! -z $publicdirp1 ] && [ ! -z $publicdirp2 ] && [ ! -z $publicdirp3 ]; then
        [ -d "/${publicdirp1}/${publicdirp2}/Public" ] && BASE="/${publicdirp1}/${publicdirp2}"
    fi
fi

# Determine BASE installation location by checking where the Public folder is.
if [ -z $BASE ]; then
    for datadirtest in /share/HDA_DATA /share/HDB_DATA /share/HDC_DATA /share/HDD_DATA /share/MD0_DATA; do
        [ -d $datadirtest/Public ] && BASE="/${publicdirp1}/${publicdirp2}"
    done
fi
if [ -z $BASE ] ; then
    echo "The Public share not found."
    _exit 1
fi
QPKG_DIR=${BASE}/.qpkg/Optware

case "$1" in
  start)
  if [ `/sbin/getcfg ${QPKG_NAME} Enable -u -d FALSE -f /etc/config/qpkg.conf` = UNKNOWN ]; then
      /sbin/setcfg ${QPKG_NAME} Enable TRUE -f /etc/config/qpkg.conf
  elif [ `/sbin/getcfg ${QPKG_NAME} Enable -u -d FALSE -f /etc/config/qpkg.conf` != TRUE ]; then
      _exit  "${QPKG_NAME} is disabled."
  fi

  /bin/echo "Enable Optware/ipkg"
    # sym-link $QPKG_DIR to /opt
    /bin/rm -rf /opt
    /bin/ln -sf $QPKG_DIR /opt
    
    # adding Ipkg apps into system path ...
    /bin/cat /etc/profile | /bin/grep "PATH" | /bin/grep "/opt/bin" 1>>/dev/null 2>>/dev/null
    [ $? -ne 0 ] && /bin/echo "export PATH=$PATH":/opt/bin:/opt/sbin >> /etc/profile
 
    # 20100915, AP  Patch for own  rcS
    /bin/echo "Exec own ... $QPKG_DIR/etc/init.d/rcS"
    $QPKG_DIR/etc/init.d/rcS_admin $QPKG_DIR
    ;;
  stop)
    /bin/echo "Disable Optware/ipkg"
    export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
   
    /bin/sync
    /bin/sleep 1
   
    # 20100915, AP  Patch for own  rcK
    /bin/echo "Exec own ... $QPKG_DIR/etc/init.d/rcK"
    $QPKG_DIR/etc/init.d/rcK_admin $QPKG_DIR
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
esac

exit $RETVAL

 

 

Die Dateiatribute sollten so aussehen:

-rwxr-xr-x    1 admin    administ      707 Sep 15 06:21 ./init.d/rcK_admin
-rwxr-xr-x    1 admin    administ      695 Sep 15 06:21 ./init.d/rcS_admin
-rwxr-xr-x    1 admin    administ      304 Sep 15 06:39 ./init.d/test.sh

lrwxrwxrwx  1 admin    administ       22 Sep 15 08:07 ./rcK.d/K90test -> ../init.d/test.sh
lrwxrwxrwx  1 admin    administ       22 Sep 15 08:06 ./rcS.d/S10test -> ../init.d/test.sh



Fazit:

Mit diesen Modifikationen können nun eigene Startup und Shutdown Proceduren eingebunden werden.

Der Vorteil dieser Variante ist, dass bei dem SchutDown die Prozesse sauber beendet werden können und so Fehler(-meldungen)  bei dem nächsten Start vermieden werden.

Obendrein sind hier, zu dem Zeitpunkt der Aufrufe, die Pfade und Funtionen der Optwareinstallation schon vorhanden.

 

Falls jemandem noch etwas auffällt ... Bitte bei mir melden!

 

2010-11-09, ap Korrektur der ln Parameterreihenfolge für die Erzeugung der symbolischen Links unter rcS.d und rcK.d
Danke an Toem! 
2010-09-21, ap Korrektur der Link Ziele
Aktualisiert ( 21.01.2012 )

Kurzübersicht über die letzten IT-Beiträge

Qnap TS-419P Prozesse Starten/Stoppen bei Startup/Shutdown
15/09/2010 | AP

Vorbedingung: Das QPKG Optware muss installiert sein ...     Was ist für eigenes Startup/Shutdown zu realisieren? Ich denke mit den im Folgenden beschriebenen Schritten und etwas Linux KnowH [ ... ]


Qnap TS-419P Startsequenz Analyse (rcS)
13/09/2010 | AP

Startpunkt dieser Analyse ist /etc/init.d/rcS   Ablauf: 1. rcS führt alle S??* Scripte in dem Verzeichnis /etc/rcS_init.d/ aus. Bei mir ist dort nur ein Script das S20init_check zu finden.
Diese [ ... ]


Weitere Beiträge

Tags für den Bereich IT-Technik

apaulsen.de - © 2007 - 2012 :: Andreas Paulsen · 22339 Hamburg
APaulsen.de - Neuigkeiten / updates