Comment définir un script qui s'exécutera au démarrage dans FreeBSD?

10

J'utilise FreeBSD 9 et je veux faire un script qui vérifiera si un câble Ethernet est connecté, et si c'est le cas, s'y connecte. Je veux le configurer pour qu'il s'exécute à chaque démarrage de la machine ou chaque fois que je me connecte. J'ai regardé mon livre UNIX (il est assez obsolète et concerne UNIX en général, pas spécifiquement FreeBSD) et il dit que je peux utiliser crontab, mais je ne peux le faire que pour faire fonctionner les choses à certains moments, pas au démarrage. Quelqu'un peut-il me dire comment je peux y arriver?

user23809
la source

Réponses:

11

FreeBSD croncomprend la @rebootdirective temporelle, vous pouvez donc en effet cronexécuter votre script au démarrage. Au lieu des 5 champs horaires habituels, votre crontabentrée pourrait ressembler à ceci:

@reboot /path/to/script

Si vous souhaitez également exécuter la vérification lorsque vous vous connectez, ajoutez un appel au script dans le fichier de votre shell exécute lors de la connexion - cela pourrait être, en fonction de votre coquille, ~/.login, ~/.bash_login, etc.

D_Bye
la source
4

Sur FreeBSD 11 pour ARMv6 (Raspberry Pi), je n'ai pas pu faire fonctionner la @rebootdirective crontab pour l'utilisateur root, et la /etc/rc.localméthode "ajouter des scripts au fichier" a été remplacée par un mécanisme qui exécute automatiquement les scripts situés dans /usr/local/etc/rc.d/.

En d'autres termes, pour exécuter un script au démarrage sur FreeBSD 11 (ou 10?) Et probablement plus récent, placez un script shell exécutable avec l' extension .sh dans ce dossier pour l'exécuter au démarrage:

/usr/local/etc/rc.d/

Vous devrez peut-être créer le rc.ddossier s'il n'existe pas.

Voir http://www.defcon1.org/html/rc-local.html pour plus de détails.

Steve HHH
la source
3

Une autre solution pour le script de démarrage serait /etc/rc.local.

arved
la source
1
Bien qu'il man rcindique "En règle générale, le mécanisme /usr/local/etc/rc.d/ est utilisé à la place de rc.local de nos jours, mais si vous souhaitez utiliser rc.local, il est toujours pris en charge. Dans ce cas, il doit source / etc / rc.conf et contiennent du code de démarrage personnalisé supplémentaire pour votre système. La meilleure façon de gérer rc.local, cependant, est de le séparer en scripts rc.d / style et de les placer sous / usr / local / etc / rc .ré/."
zezollo