Quelque chose comme Cron ?
Notez le @reboot
entrée
C'est l'approche la plus flexible et celle qui ressemble le plus aux "tâches planifiées" de Windows (en fait, mieux).
Démarrage automatique de Xorg
Outre les scripts de démarrage au niveau du système, votre environnement de bureau peut avoir sa propre façon d'exécuter automatiquement des programmes. Le dossier .config/autostart
est censé être un moyen indépendant du bureau de définir les entrées d'exécution automatique. /etc/xdg/autostart
est pour la configuration à l'échelle du système. Détails sur la spécification sur http://developer.gnome.org/autostart-spec/.
Pour LXDE, les entrées de démarrage automatique peuvent également être définies dans ~/.config/lxsession/LXDE/autostart
.
C'est un peu différent si vous devez exécuter vos scripts après le réseau est opérationnel. Dans ce cas, vous devez vérifier les scripts post-connexion spéciaux qui peuvent être définis pour votre gestionnaire de réseau. Les deux NetworkManager et wicd ont leurs propres façons de spécifier les entrées d'exécution automatique post-connexion. Si le réseau est configuré via ifupdown
, alors les scripts post-up peuvent être placés dans le /etc/network/if-up.d/
dossier. Mais une meilleure approche pour exécuter des scripts post-connexion pourrait être systemd (pour les systèmes qui le prennent en charge, ce qui représente la majorité des distributions modernes).
Démarrage automatique en tant que service systemd
Si la chose que vous voulez démarrer automatiquement n'est pas une application graphique qui nécessite un bureau, il est préférable d'éviter d'utiliser les fonctionnalités de démarrage automatique fournies par xorg ou par votre environnement de bureau actuel.
systemd
est devenu omniprésent dans de nombreuses distributions modernes, et il offre beaucoup de contrôle et de flexibilité en termes de démarrage et d'exécution de vos services.
Je vais résumer quelques avantages (systemd peut faire beaucoup plus ):
- Exécuter en tant que root ou en tant qu'utilisateur spécifique :par ex.
User=myuser
- Redémarrer les services en cas d'échec avec des délais configurables :
Restart=on-failure|on-watchdog|on-abnormal|always
- Définition du type de service :
Type=simple|forking|oneshot|notify|dbus
- Établissez les conditions préalables au démarrage et les dépendances, c'est-à-dire que vous pouvez configurer votre service pour qu'il démarre une fois le réseau opérationnel (
Wants=network-online.target
dans le[Unit]
rubrique).
Un exemple de service qui démarre un démon telegram-cli. Placez-le en /etc/systemd/system/tg.service
.
[Unit]
Description=MyDaemon
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/local/bin/telegram-cli -k /etc/telegram-cli/tg-server.pub -W -P 1234 -d -vvvRC
ExecStop=/usr/bin/pkill -f telegram-cli
User=jicu
[Install]
WantedBy=multi-user.target
Vous pouvez maintenant activer le démarrage automatique du service :
sudo systemctl enable tg
Démarrer le service :
sudo systemctl start tg
Arrêtez le service :
sudo systemctl stop tg
Vérifiez l'état :
systemctl status tg
Désactiver le service :
sudo systemctl disable tg
Pour vous épargner une saisie supplémentaire, vous pouvez ajouter votre ~/.bashrc
la ligne alias sc='sudo systemctl $*'
alors vous pourrez raccourcir les commandes ci-dessus, par exemple. sc start tg
.
Plus d'informations :
- Comprendre systemd
- services systemd
- unités systemd
Oui il est possible de lancer des programmes au démarrage sous Linux en définissant les chemins vers les exécutables en rc.local
qui réside soit dans le /etc
ou /etc/rc.d
répertoire, par exemple :
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
/path/to/executable
Remarque :n'oubliez pas d'attribuer les droits exécutables comme décrit dans la documentation du fichier, c'est-à-dire Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure that this script will be executed during boot.