• [^] # Re: Juste une question

    Posté par . En réponse au journal Systemd va gagner une console système, un bootsplash et un login-screen. Évalué à 3. Dernière modification le 02 décembre 2013 à 15:14.

    Sous Slackware (mais ça doit être adaptable facilement sous une autre distribution), je ferais ça d’abord en ajoutant le code suivant dans /etc/rc.d/rc.local :

    mon_resultat=$(/usr/bin/mon_programme)
    echo "mon_resultat=$mon_resultat" > /var/state/resultats

    Le script /etc/rc.d/rc.local est exécuté à la fin de la séquence de démarrage (sous Slackware, il est vide par défaut — il est précisément conçu pour que l’administrateur puisse y rassembler ses bidouillages) ; ici, il exécute le programme demandé et stocke le résultat (sous une forme sourçable par un shell, c’est-à-dire nom=valeur) dans un fichier quelque part dans /var.

    Ensuite, dans /etc/profile, ou dans un fichier quelconque dans /etc/profile.d (ces fichiers étant sourcés lors de tout démarrage de session), on vérifie la présence du fichier /var/state/resultats, on le source, et on exporte la variable dans l’environnement :

    if [ -f /var/state/resultats ]; then
     . /var/state/resultats
     export mon_resultat
    fi

    (La variable n’est pas accessible depuis tout le système — en particulier, tous les processus démarrés dans les scripts d’init en ignoreront toujours l’existence —, mais elle sera accessible à tous les programmes démarrés depuis une session utilisateur.)

    La présence de systemd (ou d’un autre système d’init non-classique) ne devrait pas changer grand’chose, dès lors qu’on peut insérer un bout de script shell quelque part à une étape du démarrage. Avec systemd, j’imagine qu’il faudra créer une unit uniquement chargée d’exécuter un script dédié.