web-dev-qa-db-fra.com

Différences dans l'exécution des scripts au démarrage

J'ai lu diverses questions sur how to run script at startup mais je ne sais pas trop quelles sont les différences ni quelle est la bonne façon de le faire sans interface graphique.

  • /etc/rc.local
  • travail cron utilisant @reboot
  • ~/.profile
  • /.bash_profile
  • /.bash_login

Exemples, j'ai besoin d'exécuter au démarrage

  • apt-get update
  • définir des autorisations
  • régler la luminosité de l'écran
  • activer numlock
  • pavé tactile d'installation
  • lancer des applications
  • lancer des scripts en tant que root (dois-je les appeler avec Sudo même si le script principal est déjà exécuté en tant que root?)
  • lancer des scripts sans root

Ce serait bien d'avoir un seul script qui gère toutes ces choses dans un seul fichier. Comment le faire correctement?

3
Sebastian

~/.profile, /.bash_profile et /.bash_login conviennent mieux à la définition des variables d'environnement et à la configuration de l'environnement qu'à l'exécution de scripts. Je ne les recommanderais pas.

/etc/rc.local peut être utilisé pour cela, mais rappelez-vous qu'il démarrera avant le démarrage de l'interface graphique. Sauf s'il s'agit d'un script qui envoie uniquement une notification à l'interface graphique. Notez que vous devrez appeler votre script à partir de /etc/rc.local au format /full/path/to/script & (& afin d'éviter de bloquer d'autres scripts que vous pourriez avoir lors de son exécution). Vous aurez également besoin de la variable export DISPLAY=:0 dans le script lui-même ou dans /etc/rc.local. Les applications nécessitant une interface graphique auront besoin de cette variable pour exister. Même idée avec cron job using @reboot.

Si vous souhaitez exécuter des scripts lors de la connexion à l'interface graphique, vous devez créer un fichier .desktop pour chaque script de votre dossier ~/.config/autostart/. Vous pouvez le faire à la main ou utiliser l'application Startup Applications qui fait exactement la même chose pour vous. Il suffit d'ouvrir le Dash Unity et de taper "Applications de démarrage"

Vue d'ensemble de vos exemples

  • apt-get update n'a pas besoin d'interface graphique, mais simplement de réseau. /etc/rc.local est ok pour celui-ci.
  • set some permissions, cela n’a pas besoin d’interface graphique, utilisez /etc/rc.local
  • set display brightness n'a pas besoin de GUI aussi, mais peut avoir besoin de privilèges root. Si vous souhaitez le modifier avant de vous connecter, vous devez écrire dans un fichier spécial. Consulter mon autre post à ce sujet
  • turn numlock on n'a peut-être pas besoin de GUI
  • setup touchpad selon votre méthode, peut avoir besoin d'une interface graphique
  • run some apps s'il s'agit d'applications GUI, vous devez les démarrer à partir des applications de démarrage décrites ci-dessus.
  • run some scripts as root vous pouvez utiliser /etc/rc.local ou cron pour ceux-ci. Exécuter des applications GUI en tant que root n’est pas une bonne idée, évitez-le.
  • run some scripts without root utilise la méthode Applications de démarrage.
5
Sergiy Kolodyazhnyy