Tengo una cárcel de FreeBSD en la que ejecuto un servidor usando el comando:
/usr/sbin/daemon /path/to/script.py
En este momento tengo que ejecutar este comando cada vez que reinicio la máquina y comienza la cárcel. Me gustaría que este comando comenzara desde /etc/rc
. ¿Hay una manera fácil de crear un script rc de FreeBSD para un daemon
comando?
ACTUALIZACIÓN: leí esta documentación de BSD sobre los scripts rc , y de ahí creé el siguiente script en /etc/rc.d/pytivo
:
#!/bin/sh
. /etc/rc.subr
name=pytivo
rcvar=pytivo_enable
procname="/usr/local/pytivo/pyTivo.py"
command="/usr/sbin/daemon -u jnet $procname"
load_rc_config $name
run_rc_command "$1"
Esto funciona para iniciar el script de Python que quiero como demonio cuando comienza la cárcel ... (dado pytivo_enable="YES"
está /etc/rc.conf
) pero el script rc no sabe si el demonio se está ejecutando (cree que no es así) y da una advertencia cuando intento iniciarlo:
[root@meryl /home/jnet]# /etc/rc.d/pytivo start
[: /usr/sbin/daemon: unexpected operator
Starting pytivo.
[root@meryl /home/jnet]#
Por lo tanto, está cerca y funciona , pero siento que debería poder obtener una mejor funcionalidad que esta.
XX_enable="YES"
en /etc/rc.conf para que se inicie automáticamente. Comience por encontrar los scripts existentesRespuestas:
command
No debe contener varias palabras. Esta es la causa del[
error que ves. Debe establecer cualquier indicador por separado.Además, debe usar
pytivo_user
para configurar el uid en ejecución, y nodaemon -u
. Consulte la página del comando man rc.subr (8) para ver todas estas variables mágicas.Además, debe informar al subsistema rc que pytivo es un script de Python para que pueda encontrar el proceso cuando verifica si se está ejecutando.
Finalmente, deberías usar el idiomático
set_rcvar
pararcvar
.Algo como esto (no estoy seguro de que esta sea la ruta correcta de Python):
fuente
usr/local/pytivo/pyTivo.py
no daemoniza , por lo tanto, sin llamar/usr/bin/daemon
, solo obtendré el comando ejecutándose en primer plano cuando ejecuto/etc/rc.d/pytivo start
status
ystop
!start_cmd
antes de llamarload_rc_config
:start_cmd="/usr/sbin/daemon -u $pytivo_user $command"
Si no necesita un script rc, puede usar solo /etc/rc.local.
Para su script rc le faltan comentarios dependientes, al menos una línea
debería ayudar, que se ejecute en el momento adecuado.
También es posible que deba definir un archivo pid
fuente
: /usr/sbin/daemon: unexpected operator
y mi script rc todavía no sabe si el script realmente se está ejecutando.