IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Démarrer un script au démarrage d'Ubuntu /etc/init.d


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2018
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 85
    Par défaut Démarrer un script au démarrage d'Ubuntu /etc/init.d
    Bonjour tout le forum, j'ai besoin de votre aide.

    Je suis sous Ubuntu server 22.04.3

    Je voudrais exécuter un script au démarrage de mon serveur. Voilà le script :

    initialiser_bash_history.sh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/bash
     
    cp /.bash_history /root/.bash_history
    et voilà le fichier /.bash_history :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    grep -lR "" /var/www/
    nano /etc/netplan/00-installer-config.yaml
    /root/bash/demonter_cle.sh
    /root/bash/monter_cle.sh
    apt-get update && apt-get dist-upgrade -u
    shutdown -h now
    /root/bash/save_rsync.sh
    /root/bash/maj_rsync.sh
    /root/bash/majChefDoeuvre.sh
    1. Je place le fichier initialiser_bash_history.sh dans le répertoire /etc/init.d
    2. chmod 755 /etc/init.d/initialiser_bash_history.sh
    3. update-rc.d initialiser_bash_history.sh defaults


    Le script ne se lance pas au démarrage.

    Si j'exécute le script après le démarrage avec le terminale, ça fonctionne.

    Qu'est-ce que je fais de mal ? Qu'est-ce que j'ai oublié ?

    Merci pour votre aide.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 801
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par kewan Voir le message
    Qu'est-ce que je fais de mal ? Qu'est-ce que j'ai oublié ?
    Vérifie les dossiers "/etc/rc3.d", "/etc/rc4.d" et "/etc/rc5.d" (chaque valeur 3, 4, 5 correspond à un niveau de démarrage de ta machine que tu peux voir en tapant a commande runlevel donc un seul dossier sera traité mais vaut mieux vérifier les trois).
    Chaque dossier doit contenir un lien symbolique nommé SXXinitialiser_bash_history.sh" pointant vers "/etc/init.d/initialiser_bash_history.sh". Le "XX" représente un numéro d'ordre (01, 02, 03, ... permettant de les classer) et le "S" signifiant "start" (lancés au démarrage de la machine).
    Parce que ce n'est pas le fichier de "/etc/init.d" qui est exécuté mais celui de "/etc/rcN.d" (N valant 3, 4 ou 5 et dépendant de ton niveau de démarrage). Le fichier "/etc/init.d" n'est que la "réserve" de tous les scripts ce qui permet de les centraliser et les rendre quand-même accessibles dans le dossier qui va bien via le lien symbolique.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2018
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 85
    Par défaut
    Bonjour Sve@r, merci pour ton aide.

    Les dossiers "/etc/rc3.d", "/etc/rc4.d" et "/etc/rc5.d" ne contiennent pas de SXXinitialiser_bash_history.sh

    j'ai relancé la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update-rc.d initialiser_bash_history.sh defaults
    mais aucun changement.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 801
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par kewan Voir le message
    Les dossiers "/etc/rc3.d", "/etc/rc4.d" et "/etc/rc5.d" ne contiennent pas de SXXinitialiser_bash_history.sh
    Bon ben c'est réglé, ce sont ces dossiers et seulement eux qui sont pris en compte (et je le redis seulement celui correspondant à la valeur qui est affichée par la commande runlevel).
    Donc si pas de "start programme" alors le programme ne sera pas démarré.

    Citation Envoyé par kewan Voir le message
    j'ai relancé la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update-rc.d initialiser_bash_history.sh defaults
    mais aucun changement.
    Ouais alors moi je suis un peu de la vieille école, j'ai l'habitude de faire pas mal de manips à la main. Rien ne t'interdit d'aller dans le rcX.d qui va bien, regarder un peu quels sont les numéros de disponibles dans les SXX qui sont présents (si par exemple tu as S57truc et S68chose tu peux très bien choisir de mettre ton programme entre les deux style S60initialiser_bash_history.sh et tu n'es même pas obligé de prendre un numéro libre, le numéro n'est qu'une façon de ranger les programmes par ordre de lancement donc si tu choisis de le nommer S68initialiser_bash_history.sh ça marchera aussi).
    Donc tu te choisis un numéro de ton choix (on va dire pour l'exemple 75) et tu tapes ln -s ../init.d/initialiser_bash_history.sh S75initialiser_bash_history.sh et c'est réglé. Et tu fais la même chose dans tous les autres dossiers rcX.d dans lesquels tu veux aussi que ce programme soit exécuté.

    Sinon d'après ce que je lis dans le man, il semble que la commande devrait être update-rc.d nom_script enable N ("N" étant à choisir parmi 0123456 correspondant aux rcN.d déjà évoqués) ce qui doit probablement correspondre à la création du lien symbolique. Là c'est le système qui se choisit un numéro.

    Pour info voici les niveaux et leur signification originelle
    • 0 => arrêt (oui, l'arrêt est considéré comme un mode de démarrage)
    • 1 => démarrage mono-utilisateur (équivalent du "mode sans échec")
    • 2 => démarrage normal sans réseau (même si aujourd'hui ça ne veut plus rien dire)
    • 3 => démarrage normal avec réseau
    • 4 => laissé libre pour cas particuliers (si tu veux te créer ton démarrage personnel)
    • 5 => démarrage normal avec environnement graphique (bien qu'aujourd'hui le mode graphique soit aussi présent en 3)
    • 6 => reboot

    Tu peux d'ailleurs parfaitement passer d'un niveau N1 à un niveau N2 en tapant init N2. Si tu étais en dessous ça te monte, si tu étais au dessus ça te descend (parfois je veux rebooter je tape init 6).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2018
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 85
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    tu tapes ln -s ../init.d/initialiser_bash_history.sh S75initialiser_bash_history.sh et c'est réglé.
    Ok j'ai tapé cette commande. Les fichiers S75initialiser_bash_history.sh doivent se créer automatiquement dans les rcX.d ? Si c'est le cas ça n'a pas fonctionné

    Citation Envoyé par Sve@r Voir le message
    Et tu fais la même chose dans tous les autres dossiers rcX.d dans lesquels tu veux aussi que ce programme soit exécuté.
    ou je crée les fichiers S75initialiser_bash_history.sh un par un dans les rcX.d ?

    Citation Envoyé par Sve@r Voir le message
    Sinon d'après ce que je lis dans le man, il semble que la commande devrait être update-rc.d nom_script enable N ("N" étant à choisir parmi 0123456 correspondant aux rcN.d déjà évoqués) ce qui doit probablement correspondre à la création du lien symbolique. Là c'est le système qui se choisit un numéro.
    J'ai testé la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update-rc.d initialiser_bash_history.sh enable 3
    ça me renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error: no runlevel symlinks to modify, aborting!

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 801
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par kewan Voir le message
    Ok j'ai tapé cette commande. Les fichiers S75initialiser_bash_history.sh doivent se créer automatiquement dans les rcX.d ?
    Non, ce n'est pas une "création automatique dans rcX.d", c'est une commande de création d'un lien symbolique à l'endroit où tu te trouves. Je présume en effet que pour vouloir faire de l'admin Linux, tu as au-moins une connaissance de base des commandes Unix/Linux, des types de fichiers disponibles et de la façon de les nommer.
    Donc puisqu'il faut créer ces liens symboliques dans chaque rcX.d, il te faut au préalable te positionner dans chaque rcX.d puisque dans la commande, le fichier est nommé "S75initialiser_bash_history.sh" (nom relatif donc relatif à l'endroit où tu te trouves quand tu tapes la commande).
    Sinon tu as aussi le droit de travailler en absolu et dans ce cas ce sera ln -s ../init.d/initialiser_bash_history.sh /etc/rcX.d/S75initialiser_bash_history.sh ("X" à faire varier entre 3 et 5 selon le choix). Et le ".." n'est pas une erreur, c'est parce que même si on le crée en nom absolu, le fichier final "/etc/rcX.d/S75initialiser_bash_history.sh" doit continuer, lui, à avoir une référence relative à celui présent dans "/etc/init.d".

    Citation Envoyé par kewan Voir le message
    Si c'est le cas ça n'a pas fonctionné
    Dans ce cas la commande a dû t'afficher un message d'erreur (c'est le comportement universel des commandes Unix: elles affichent un message si l'action demandée échoue).

    Citation Envoyé par kewan Voir le message
    ou je crée les fichiers S75initialiser_bash_history.sh un par un dans les rcX.d ?
    Oui c'était implicitement sous-entendu dans cette partie de phrase "donc un seul dossier sera traité mais vaut mieux vérifier les trois" de mon premier post.

    Citation Envoyé par kewan Voir le message
    J'ai testé la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update-rc.d initialiser_bash_history.sh enable 3
    ça me renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error: no runlevel symlinks to modify, aborting!
    Oui je viens de le faire aussi. Et en mettant juste "enable" sans mettre de numéro ça met "error: prog.sh Default-Start contains no runlevels, aborting.". Mais quel que soit le programme disponible dans /etc/init.d que j'invoque ça me met la même chose. Ca signifie juste que je ne sais pas utiliser cette commande et que ma suggestion n'était pas la bonne mais comme je l'ai dit, je ne l'utilise pas car je fais mes liens symboliques à la main (et je sais nommer mes fichiers.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Démarrer un script python après 1min au démarrage LXDE
    Par jonels dans le forum Raspberry Pi
    Réponses: 1
    Dernier message: 03/06/2019, 18h22
  2. Lancer script au démarrage d'Ubuntu
    Par NiamorH dans le forum Ubuntu
    Réponses: 8
    Dernier message: 20/11/2009, 16h24
  3. Ubuntu, gestion des scripts de démarrage
    Par kromartien dans le forum Ubuntu
    Réponses: 4
    Dernier message: 28/02/2008, 14h14
  4. Changer l'utilisateur lors de l'execution d'un script de démarrage
    Par kserradell dans le forum Administration système
    Réponses: 2
    Dernier message: 27/09/2006, 17h35
  5. Coup de main : scripts de /etc/init.d
    Par Rhineauféros dans le forum Linux
    Réponses: 7
    Dernier message: 04/07/2005, 17h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo