Pregunta La secuencia de comandos init.d para OpenOffice / LibreOffice sin cabeza no detiene el proceso


Estoy usando Ubuntu y encontré este script init.d para LibreOffice sin cabeza.

El problema es que no parece detener el proceso cuando se le pide que "pare". Cualquier ayuda muy apreciada.

Otras dos preguntas: He visto el comando start-stop-daemon utilizado en otros scripts de init.d: ​​¿cuál es la ventaja sobre el enfoque utilizado en este script? Además, quiero poder ejecutar este script como usuarios sin privilegios, pero dice que no puede crear el archivo PID. ¿Cuál es la forma "correcta" de permitir que los usuarios sin privilegios ejecuten este script?

¡Gracias!

#!/bin/bash
# libreoffice.org  headless server script
#
# chkconfig: 2345 80 30
# description: headless libreoffice server script
# processname: libreoffice
# 
# Author: Vic Vijayakumar
# Modified by Federico Ch. Tomasczik
# Modified by Manuel Vega Ulloa
OOo_HOME=/usr/bin
SOFFICE_PATH=$OOo_HOME/soffice
PIDFILE=/var/run/libreoffice-server.pid
set -e
case "$1" in
    start)
    if [ -f $PIDFILE ]; then
      echo "LibreOffice headless server has already started."
      sleep 5
      exit
    fi
      echo "Starting LibreOffice headless server"
      $SOFFICE_PATH --headless --nologo --nofirststartwizard --accept="socket,host=127.0.0.1,port=2002;urp" & > /dev/null 2>&1
      touch $PIDFILE
    ;;
    stop)
    if [ -f $PIDFILE ]; then
      echo "Stopping LibreOffice headless server."
      #killall -9 soffice 
      #killall -9 soffice.bin
      killall -9 oosplash
      #start-stop-daemon --stop --signal HUP --quiet --pidfile $PIDFILE  --exec $DAEMON || true

      rm -f $PIDFILE
      exit
    fi
      echo "LibreOffice headless server is not running."
      exit
    ;;
    *)
    echo "Usage: $0 {start|stop}"
    exit 1
esac
exit 0

1


origen




Respuestas:


Debe usar PID y PIDFILE de la manera correcta. Por ejemplo (extracto de mi script de trabajo):

case "$1" in
    start)
    if [ -f $PIDFILE ]; then
      echo "LibreOffice headless server has already started."
      sleep 5
      exit
    fi
      echo "Starting LibreOffice headless server"
      $SOFFICE_PATH --headless --nologo --nofirststartwizard --    accept="socket,host=127.0.0.1,port=2002;urp" & > /dev/null 2>&1
      PID=`ps ax|grep "soffice.bin --headless"|grep -v grep|cut -d \  -f 1`
      echo $PID> $PIDFILE
    ;;
    stop)
    if [ -f $PIDFILE ]; then
      echo "Stopping LibreOffice headless server."
      kill `cat $PIDFILE`
      rm -f $PIDFILE
      exit
    fi
      echo "LibreOffice headless server is not running."
      exit
    ;;
    *)
    echo "Usage: $0 {start|stop}"
    exit 1
esac

2