¿Cómo configuro un script que se ejecutará al iniciar en FreeBSD?

10

Estoy usando FreeBSD 9 y quiero hacer un script que verifique si un cable Ethernet está conectado y, si es así, se conecta a él. Quiero configurarlo para que se ejecute cada vez que se inicie la máquina, o cada vez que inicie sesión. Miré mi libro de UNIX (está bastante desactualizado y es para UNIX general, no específicamente FreeBSD) y dice que puedo usar crontab, pero solo puedo hacer esto para hacer que las cosas se ejecuten en ciertos momentos, no cuando se inicia. ¿Puede alguien decirme cómo puedo llegar a esto?

usuario23809
fuente

Respuestas:

11

FreeBSD croncomprende la @rebootdirectiva de tiempo, por lo que puede cronejecutar su script al inicio. En lugar de los 5 campos de tiempo habituales, su crontabentrada podría verse así:

@reboot /path/to/script

Si quieres también para ejecutar la comprobación cuando se conecte, añadir una llamada a la secuencia de comandos en el archivo de sus ejecuta depósito en caso de inicio de sesión - esto podría ser, dependiendo de su cáscara, ~/.login, ~/.bash_login, etc.

D_Bye
fuente
4

En FreeBSD 11 para ARMv6 (Raspberry Pi), no pude hacer que la @rebootdirectiva crontab funcione para el usuario root, y el /etc/rc.localmétodo "agregar scripts al archivo" ha sido reemplazado por un mecanismo que ejecuta automáticamente los scripts ubicados en /usr/local/etc/rc.d/.

En otras palabras, para ejecutar un script en el arranque en FreeBSD 11 (¿o 10?) Y probablemente más reciente, coloque un script de shell ejecutable con la extensión .sh en esta carpeta para que se ejecute en el arranque:

/usr/local/etc/rc.d/

Es posible que deba crear la rc.dcarpeta si no existe.

Ver http://www.defcon1.org/html/rc-local.html para más detalles.

Steve HHH
fuente
3

Otra solución para el script de inicio sería /etc/rc.local.

Arved
fuente
1
Aunque man rcdice "Típicamente, el mecanismo /usr/local/etc/rc.d/ se usa en lugar de rc.local en estos días, pero si desea usar rc.local, todavía es compatible. En este caso, debería generar / etc / rc.conf y contienen un código de inicio personalizado adicional para su sistema. Sin embargo, la mejor manera de manejar rc.local es separarlo en scripts rc.d / style y colocarlos en / usr / local / etc / rc .re/."
zezollo