[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: como obter o pid do processo executado durante o boot?



Em 29-01-2013 16:34, Deckardbot escreveu:
Junior,
A minha intenção era criar um script dentro de /etc/init.d com as opções start,
stop e restart.
Mas para a opção stop eu preciso saber o pid para usá-lo com o comando kill.
Ai eu poderia manipular o processo assim:
# service script [start|stop|restart]
mas obrigado por me reponder, ja aprendi outra coisa com sua dica :)

Deckardbot,

Meu conselho é usar as ferramentas de daemon, isto é, copia um daemon que está em /etc/init.d e troca o executável dele e seu nome pelo seu executável.

Por exemplo, pegando o /etc/init.d/atd do Debian 7.0 Wheesy, abaixo o cat dele, e seu programa como sendo /root/script_python.py e executável (chmod +x /root/script_python.py), faz-se "cp /etc/init.d/atd /etc/init.d/script_python" e troca-se:

DAEMON=/usr/sbin/atd
por
DAEMON=/root/script_python.py

PIDFILE=/var/run/atd.pid
por
PIDFILE=/var/run/script_python.pid

"atd" nos logs
por
"script_python"

Usage: /etc/init.d/atd
por
Usage: /etc/init.d/script_python

Dê uma conferida no cabeçalho para ver quais daemons/serviços quer que carrega antes do seu script.

Para finalizar, execute "update-rc.d script_python defaults".

Pronto, agora pode usar "service script_python [start|stop|status]"

[]'s

Junior Polegato



junior@note:/etc/init.d$ cat atd
#! /bin/sh
### BEGIN INIT INFO
# Provides:          atd
# Required-Start:    $syslog $time $remote_fs
# Required-Stop:     $syslog $time $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Deferred execution scheduler
# Description:       Debian init script for the atd deferred executions
#                    scheduler
### END INIT INFO
#
# Author:    Ryan Murray <rmurray@debian.org>
#

PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/atd
PIDFILE=/var/run/atd.pid

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

case "$1" in
  start)
    log_daemon_msg "Starting deferred execution scheduler" "atd"
    start_daemon -p $PIDFILE $DAEMON
    log_end_msg $?
    ;;
  stop)
    log_daemon_msg "Stopping deferred execution scheduler" "atd"
    killproc -p $PIDFILE $DAEMON
    log_end_msg $?
    ;;
  force-reload|restart)
    $0 stop
    $0 start
    ;;
  status)
    status_of_proc -p $PIDFILE $DAEMON atd && exit 0 || exit $?
    ;;
  *)
    echo "Usage: /etc/init.d/atd {start|stop|restart|force-reload|status}"
    exit 1
    ;;
esac

exit 0


Reply to: