Writing rc.d scripts (Español) - ArchWiki

# Writing rc.d scripts (Español)

Artículos relacionados

- Arch Boot Process
- Daemon
- rc.conf

This article or section is being considered for deletion.

Reason: Arch only supports systemd. Arch's old initscripts package is obsolete and is no longer supported. All Arch users need to move to systemd. (Discuss)

This article or section is out of date.

Reason: please use the first argument of the template to provide a brief explanation. (Discuss)

Como parte del inicio "estilo-BSD" de arch, los scripts del rc.d son usados para el inicio, detencion y reiniciacion de los demonios.

## Lineas de guia

- Fuente `/etc/rc.conf`, `/etc/rc.d/functions`, y opcionalmente `/etc/conf.d/DAEMON_NAME`.
- Los argumentos y opciones de los demenios deben ir en `/etc/conf.d/DAEMON_NAME`. Esta hecho para separar las configuraciones y mantener la consistencia.
- Usar las funciones en `/etc/rc.d/functions` en vez de duplicar las funcionalidades.
- Inclir al menos "start", "stop" y "restart" como argumentos en es script.
- Hay algunas funcionalidades provistas por `/etc/rc.d/functions`:
  - stat_busy "<message>": establece el estado busy(ocupado) como mensaje a mostrar (ej: Iniciando Demonio [OCUPADO])
  - stat_done: establece el estado done (hecho) (ej: Iniciando Demonio [HECHO])
  - stat_fail: establece el estado failed (e.g. Iniciando Demonio [FALLO])
  - get_pid <program>: obtiene el PID del programa.
  - ck_pidfile <PID-file> <program>: Chekea si el PID-file es aun valido para el programa (e.g. ck_pidfile /var/run/daemon.pid daemon || rm -f /var/run/daemon.pid)
  - [add|rm]_daemon <program>: Agrega/remueve programas a los demonios activos (almacenados en `/run/daemons/`)

## Ejemplo

Lo siguiente es un ejemplo para crond. Revise en `/etc/rc.d`, encontrara variedad.

El archivo de configuración:

    /etc/conf.d/crond

    ARGS="-S -l info"

El script actual:

    /etc/rc.d/crond

    #!/bin/bash

    . /etc/rc.conf
    . /etc/rc.d/functions

    DAEMON=crond
    ARGS=

    [ -r /etc/conf.d/$DAEMON ] && . /etc/conf.d/$DAEMON

    PID=$(get_pid $DAEMON)

    case "$1" in
     start)
       stat_busy "Starting $DAEMON"
       [ -z "$PID" ] && $DAEMON $ARGS &>/dev/null
       if [ $? = 0 ]; then
         add_daemon $DAEMON
         stat_done
       else
         stat_fail
         exit 1
       fi
       ;;
     stop)
       stat_busy "Stopping $DAEMON"
       [ -n "$PID" ] && kill $PID &>/dev/null
       if [ $? = 0 ]; then
         rm_daemon $DAEMON
         stat_done
       else
         stat_fail
         exit 1
       fi
       ;;
     restart)
       $0 stop
       sleep 1
       $0 start
       ;;
     *)
       echo "usage: $0 {start|stop|restart}"
    esac

Category:

- Boot process (Español)