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 daemoncomando?
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:
commandNo debe contener varias palabras. Esta es la causa del[error que ves. Debe establecer cualquier indicador por separado.Además, debe usar
pytivo_userpara 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_rcvarpararcvar.Algo como esto (no estoy seguro de que esta sea la ruta correcta de Python):
fuente
usr/local/pytivo/pyTivo.pyno daemoniza , por lo tanto, sin llamar/usr/bin/daemon, solo obtendré el comando ejecutándose en primer plano cuando ejecuto/etc/rc.d/pytivo startstatusystop!start_cmdantes 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 operatory mi script rc todavía no sabe si el script realmente se está ejecutando.