Je suis nouveau sur Linux et j'ai hâte de démarrer l'application (qui bascule une led toutes les 10 secondes). J'ai écrit le programme d'application et cela fonctionne bien mais maintenant je veux le démarrer automatiquement au démarrage.
La documentation ici dit de copier le script de démarrage dans le /etc/init.d
répertoire et de créer un lien symbolique vers le script copié dans le rc.d
répertoire.
Quelle devrait être l'extension et le nom de ces fichiers de script? Pouvons-nous ajouter manuellement le lien symbolique rc.d
ou existe-t-il une procédure spécifique pour cela?
Une suggestion sur la façon d'y parvenir?
start-stop-daemon
gère mieux (bien qu'il soit préférable que le programme lui-même démonifie). Quelle distro utilisez-vous? En dehors des types MIME de bureau, les extensions de fichier n'ont aucun sens dans * nix et il est préférable que les exécutables n'en aient pas.cron
place.Réponses:
Voici l'extrait de http://www.debian-administration.org/articles/28 qui semble répondre à votre question.
Remarque: Dans l'exemple de script ci-dessous, ajoutez simplement un appel à la
start)
section " " pour lancer réellement votre programme. Vous pouvez tester la fonctionnalité du script sans redémarrer le système: appelez-le avec le chemin complet et en lui donnant un paramètre de "start
" ou "stop
"Voici:
Debian utilise un système d'initialisation de type Sys-V pour exécuter des commandes lorsque le niveau d'exécution du système change - par exemple au démarrage et à l'arrêt.
Si vous souhaitez ajouter un nouveau service à démarrer au démarrage de la machine, vous devez ajouter le script nécessaire au répertoire
/etc/init.d/
. De nombreux scripts déjà présents dans ce répertoire vous donneront un exemple du genre de choses que vous pouvez faire.Voici un script très simple qui est divisé en deux parties, du code qui s'exécute toujours et du code qui s'exécute lorsqu'il est appelé avec "start" ou "stop".
Une fois que vous avez enregistré votre fichier à l'emplacement correct, assurez-vous qu'il est exécutable en exécutant "
chmod 755 /etc/init.d/blah
".Ensuite, vous devez ajouter les liens symboliques appropriés pour que le script soit exécuté lorsque le système tombe en panne ou monte.
La façon la plus simple de le faire est d'utiliser la commande spécifique à Debian
update-rc.d
:la source
systemd
de nombreuses choses, y compris pour la configuration de démarrage. Utilisezsystemctl
pour contrôler et configurersystemd
.La meilleure façon est de vérifier la source du package de votre distribution pour un service système régulier, par exemple pour OpenSSH - vous verrez quelles sont les bonnes pratiques. Après tout, l'une des raisons de l'open-source est de pouvoir apprendre des sources.
la source
Utilisez Supervisor, un programme efficace qui gère et enregistre les applications de démarrage avec des arguments. En savoir plus sur http://supervisord.org/running.html et (Suivez les instructions d'installation.
Créez un fichier de conf à
/etc/supervisor/conf.d/{PROGRAM_NAME}.conf
et voici le code,Exécutez ensuite à partir de la ligne cmd:
supervisorctl reload
la source
L'utilisation
crontab
est beaucoup plus facile.Utilisez
crontab -e
pour modifier la crontab de l'utilisateur.Ajoutez la ligne suivante à la fin:
Exemples:
@reboot my_script.sh
@reboot python my_script.py arg1 arg2
Enfin, utilisez
crontab -l
pour vous assurer que votre script a été ajouté à la liste.la source
Nouvelles versions du support Linux
systemd
(comme l'a dit @AlexanderShcheblikin). Il a plus de fonctionnalités et est plus portable que la solution spécifique à Debian.Veuillez lire ce très bon guide .
Voici une référence rapide du strict minimum nécessaire:
myscript.sh
) avec des autorisations exécutables.myservice.service
) avec l'extension ".service"/etc/systemd/system
avec 644 autorisations qui contient la commande pour exécuter le script. Par exemple,:
sudo systemctl enable myservice
pour l'activer au démarrage.la source