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

RedHat / CentOS / Fedora Discussion :

Lancer automatiquement un script en runlevel 1 (après une commande "init 1")


Sujet :

RedHat / CentOS / Fedora

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Lancer automatiquement un script en runlevel 1 (après une commande "init 1")
    Bonjour,

    Je cherche à lancer automatiquement un script après que le système soit passé en runlevel 1
    (après une commande "init 1" qui passe le système en mode "maintenance mono-utilisateur")

    Ce script fait une sauvegarde de /dev/sda, puis fait un init 5 pour faire revenir le système en mode "normal".

    Solutions envisagées et testées:
    1) Lancer le script depuis le fichier /etc/rc.local
    mais rc.local n'est pas exécuté en runlevel 1

    2) Ajouter la ligne suivante au fichier /etc/inittab :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sauv:1:once:/bin/sh /root/sauve/sh
    mais rien ne se passe

    3) créer un service S99sauve uniquement en /etc/rc1.d
    (service créé avec la commande )
    Là, le script fonctionne une fois, puis la fois suivante le système reste bloqué en runlevel 1
    Peut-être parce que le retour en runlevel 5 se fait avant que le runlevel 1 ait terminé de s'initialiser ?

    Si quelqu'un a une idée lumineuse, ça serait super sympa ?

    Pour info, système utilisé: Red Hat 4.7

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    ton starteur dans rcX.d doit être un lien vers un script dans init.d capable de lire les parametres start et stop à minima

    tu as respecté ça ? ou tu a ecris direct ton script dans rc1.d/ ?

    enfin si ton script doit tourner en 1,3 et 5 il te faut un lien de starter dans chacun. des runlevel concernés. (et un kill dans 0 et 6) bien sur ....

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour frp31,

    Voila ce que j'ai fait...

    1) j'ai créer le fichier "sauvegarde_disque" dans "/etc/rc.d/init.d/" qui contient les lignes suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #!/bin/sh
    # Sauvegarde disque
    #
    # chkconfig: 1 99 1
    # description: Lance le script de sauvegarde disque
     
    prog="sauvegarde_disque"
     
    start() {
        echo "Exécution de la sauvegarde"
        dd if=/dev/sdc conv=notrunc,noerror bs=4M | gzip -c > /Sauvegardes/Disques/localhost/sauvegarde.dev_sdc.`date +%Y-%m-%d.%Hh%Mm%S`.img.gz
        echo "Redemarrage du serveur..."
        init 5
    }
     
    case "$1" in
            start)
                start
                ;;
            stop)
                # Ne rien faire
                ;;
            *)
    #           echo $"Usage: $0 {start|stop|restart|condrestart|status}"
              echo $"Usage: $0 {start}"
                exit 1
    esac
     
    exit $RETVAL
    2) j'ai passé la commande: chkconfig --add sauvegarde_disque
    qui m'a créé le lien "S99sauvegarde_disque" dans "/etc/rc.d/rc1.d/"

    3) et enfin pour tester j'ai mis un "init 1" dans la crontab toutes les 2 minutes comme suit
    0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 * * * * root /sbin/init 1
    (le disque sauvegardé, /dev/sdc, est vide donc la commande "dd" prend moins d'une minute)

    et curieusement ca fonctionne 2,3 ou 5 fois, c'est variable, puis la machine reste bloquée en mode mono-utilisateur ???
    Je ne comprends pas pourquoi

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Voici ce que j'ai quand la machine reste bloquée en mode mono-utilisateur

    Nom : Résultat.jpg
Affichages : 633
Taille : 51,3 Ko

  5. #5
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    un init en crontab ? il peut tourner qu'une fois ca n'a pas d'interet

    ducoup tu est en single user ce qui est donc normal et attendu comme résultat.

    init 5 ou init 3 te ramenera au bon runlevel.

    tes init = arrete/relancer tous les services concernés et comme tu lances ça des dizaines de fois y'a des truc qui ont pas le temps de démarrer/se tuer et tu finis par saturer et tu reste bloquer en init1 c'est tout.

    vires ça de ta cron ... c'est la sauvegarde que tu lances en cron et pas les init
    rien a voir entre les deux

    c'est ça que tu avais pas compris je suppose.


    l'init c'est un autostart unitaire par runlevel (et auto kill)

    le cron c'est un scheduler.....

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par frp31 Voir le message
    un init en crontab ? il peut tourner qu'une fois ca n'a pas d'interet

    ducoup tu est en single user ce qui est donc normal et attendu comme résultat.

    init 5 ou init 3 te ramenera au bon runlevel.
    Oui, c'est bien pour ça que dans le service S99sauvegarde_disque, qui est lancé automatiquement après le passage en runlevel 1,
    J’ai mis un init 5, juste après la commande de sauvegarde, de façon à ce que le système revienne en runlevel 5

    Citation Envoyé par frp31 Voir le message
    tes init = arrete/relancer tous les services concernés et comme tu lances ça des dizaines de fois y'a des truc qui ont pas le temps de démarrer/se tuer et tu finis par saturer et tu reste bloquer en init1 c'est tout.
    Tu as peut être raison, 2 minutes c'est peut-être un peu court. Je vais essayer avec 1 heure voir si le problème persiste.

    Citation Envoyé par frp31 Voir le message
    vires ça de ta cron ... c'est la sauvegarde que tu lances en cron et pas les init
    rien a voir entre les deux

    c'est ça que tu avais pas compris je suppose.


    l'init c'est un autostart unitaire par runlevel (et auto kill)

    le cron c'est un scheduler.....
    Comme tu as pu le voir, la commande de sauvegarde est une commande "dd" (dd if=/dev/sdc...) donc une sauvegarde de blocs et non pas de fichiers.

    Le disque de la machine finale qui est en exploitation (pour l'instant je test ca sur une machine virtuelle) fait 300 Go, et ca prend bien sur plusieurs heures à sauvegarder.

    S'il y a une multitude de processus qui tournent pendant la sauvegarde, certains blocs du disque vont être modifiés entre le début et la fin de la sauvegarde, et ma sauvegarde sera défectueuse.

    C'est bien pour ça que je veux passer en runlevel 1 pour arrêter le maximum de processus et ainsi éviter des modifications de blocs pendant la sauvegarde.

    En résumé, le but final est:
    - de faire un int 1 pour arrêter le maximum de processus
    - d'effectuer la sauvegarde du disque /dev/sdx avec la commande dd
    - de faire un init 5 pour retourner à la normale
    et le tout, lancé automatiquement une fois par semaine, donc par un cron.

    Bon je vais réessayer en passant le délais de 2 minutes à 1 heure, mais je n'y crois pas trop.

  7. #7
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    donc tu lances ton script via la cron de root c'est le script qui lance l'init 1
    le S99sauvegarde passe
    à la fin de celui ci il lance l'init5 pour le retour à la normale

    dans ce cas...

    mais la méthode reste mauvaise du coup.
    si ton but est de faire un DD tous les X temps.... tu te cogne un arret de service.... le mieux est alors de faire un raid mirroir+spare (sur 3 disques donc)
    tu sors un disque du raid toutes les semaines le temps d'en faire un DD sur une destination externe apres la sauvegarde tu le reintegre au raid. (qui rpasse du mode degradé au mode normal et se resynchronise pour els differnces qui sont apparues entre temps...) et le tour et joué.
    plus de problemes de changement d'interruptions de services et tu as une tolerance aux pannes en prime tout en gardant ta sauvegarde externe....

    tu peux meme faire du DRDB croisé si tu veux faire la meme chose entre plusieurs machines

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour frp31,

    1) Arrêt de service

    En ce qui concerne l’arrêt de service, ce n'est pas grave car le serveur ne sert pas le week-end.

    2) RAID mirroir+spare

    Effectivement c'est une bonne idée mais malheureusement la machine en question a deux emplacements RAID et deux emplacements SATA sans RAID,
    et les deux emplacements RAID sont déjà utilisés par le disque à sauvegarder qui est en RAID1, mais l'idée est bonne, je la note, ça peut servir.

    3) Derniers tests
    Le week-end dernier, j'ai augmenté le délais à 1 heure au lieu de 2 minutes en mettant un sleep de 20 mn entre chaque commande et j'ai laissé tourner.
    Ca a marché 12 fois et ça s'est bloqué comme avant*:-(
    Je pense que cette méthode avec un service ne fonctionne pas car le service est lancé avant la fin de l'init 1 et comme il y a l'init 5 dans le service, il fait un init 5 avant que l'init 1 soit entièrement terminé.

    Si je fait un init 1 manuel sans le service de sauvegarde l'affichage se présente comme ça:

    Nom : Sans titre.png
Affichages : 464
Taille : 4,9 Ko

    Alors que quand je lance l'init 1 par cron avec le service de sauvegarde activé j'ai ça*:

    Nom : Sans titre.png
Affichages : 457
Taille : 2,8 Ko

    Il manque les 4 dernières lignes du mode mono-utilisateur.

    Donc comme ca ne fonctionne pas et que ca commence à me prendre le choux, je vais laisser tomber pour l'instant*!

    En tout cas, merci d'avoir essayé de m'aider .

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/11/2013, 10h21
  2. Espace après une commande définie
    Par oc_alex86 dans le forum Débuter
    Réponses: 14
    Dernier message: 10/08/2010, 19h57
  3. Fichier .bat qui s'arrête après une commande
    Par VinnieMc dans le forum Administration
    Réponses: 6
    Dernier message: 28/08/2008, 18h17
  4. Réponses: 6
    Dernier message: 19/12/2006, 18h16
  5. comment lancer automatiquement 1 script au lieu d'une action sur un boutton
    Par winnie82 dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 13/07/2006, 17h13

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