init.d script para OpenOffice / LibreOffice headless não para o processo

1

Estou usando o Ubuntu e encontrei este script init.d para o LibreOffice sem cabeça.

O problema é que ele não parece estar interrompendo o processo quando solicitado a "parar". Qualquer ajuda muito apreciada.

Duas outras perguntas: Eu vi o comando start-stop-daemon usado em outros scripts init.d - qual é a vantagem sobre a abordagem usada neste script? Além disso, quero poder executar este script como um usuário sem privilégios, mas ele diz que não pode criar o arquivo PID. Qual é a maneira "certa" de permitir que usuários sem privilégios executem esse script?

Obrigado!

#!/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
    
por Duke Dougal 26.01.2013 / 22:16

1 resposta

2

Você deve usar o PID e o PIDFILE no caminho certo. Por exemplo (do meu script de trabalho):

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
    
por 11.07.2013 / 20:05