• MINT > lancer un script au démarrage

      EN MODE GRAPHIQUE

      menu principal > Tous les paramètres > système > session et démarrage

       

      EN MODE LIGNE DE COMMANDE

      Sous XFCE, par la fonction graphique, ça a généré ce fichier ~/.config/autostart/plank.desktop


      [Desktop Entry]
      Encoding=UTF-8
      Version=0.9.4
      Type=Application
      Name=plank
      Comment=
      Exec=plank
      OnlyShowIn=XFCE;
      StartupNotify=false
      Terminal=false
      Hidden=false

       

      Pour retarder l’exécution de 5 secondes : Exec=sh -c " sleep 5; plank "

       

      pour Unity :

       

      mkdir -p "${HOME}/.config/autostart/"
      
      echo "[Desktop Entry]
      Encoding=UTF-8
      Version=0.11.1
      Type=Application
      Name=plank
      Comment=Run Plank at startup
      Exec=plank
      StartupNotify=false
      Terminal=false
      Hidden=false" > "${HOME}/.config/autostart/plank.desktop"
      
      chmod +x "${HOME}/.config/autostart/plank.desktop"

       

      /etc/local.d/

      exemple du dossier /etc/local.d/

       

      ls /etc/local.d/
      01iptables.start  02serveurjeu.start

       

      Ainsi, lorsque le service local sera démarré, le script 01iptables.start s’exécutera puis 02serveurjeu.start.

      Activer le service local au démarrage

      On vérifie avant si le service se démarre :

       

      rc-update -v | grep local
      local |      default nonetwork

       

      C’est le cas chez moi en mode normal (default) et en mode sans réseau (nonetwork)

      Si tel n’est pas le cas, on l’ajoute ainsi :

       

      rc-update add local default

      Les scripts

      Les scripts positionnés dans /etc/local.d sont des scripts bash, tout ce qu’il y a de plus classique. Il suffit donc de les faire commencer par

      #! /bin/bash

       

      Et qu’ils soient exécutables :

       

      chmod +x /etc/local.d/lescript.start


      bonjour,
      Je souhaiterais exécuter un script au démarrage, mais je n’y parviens pas…
      J’ai essayé avec la crontab :

      crontab -e
      @reboot sh /root/Documents/iptables.sh

      ou alors

      @reboot /root/Documents/iptables.sh
      J’ai aussi ajouté mon script à /etc/init.d/
      Je l’ai chmod +x
      J’ai ajouté le lien symbolique :ln -s /etc/init.d/iptables.sh /etc/rc.d/
      j’ai ajouté le LSB au début du script
      Mais le script ne se lance toujours pas…
      Quelqu’un pour m’aider ?

      #2 17-04-2018 09:54:09

      Salut
      La méthode souvent employé est de mettre un fichier desktop dans le fichier autostart de ton fichier dossier .config
      exemple pour le script des mises à jour

       

      cat /home/stephane/.config/autostart/updates_notifier.desktop

       

      [Desktop Entry]
      Encoding=UTF-8
      Version=0.9.4
      Type=Application
      Name=Update notifier
      Comment=notify available updates
      Comment[fr]=notification des mises à jour disponibles
      Exec=/usr/bin/handy-update-notifier
      OnlyShowIn=XFCE;
      StartupNotify=false
      Terminal=false
      Hidden=false

       

      merci de cette réponse.

      Malheureusement ça ne fonctionne pas…
      j’ai fait :

      nano /root/;config/autostart-scripts/iptables.desktop

      dedans j’ai mis ce que tu m’as donné et j’ai remplacé cette ligne :

      Exec=/root/Documents/iptables.sh

      Mais ça ne fonctionne pas.
      Après je précise que j’ai créé le script en tant que root, et qu’il y a des commandes iptables et que je modifie resolv.conf dedans, donc il faut être root pour l’exécuter…

      EDIT :
      le fichier existe pourtant au chemin que j’indique :

      root@debian:~/Documents# ls -l
      total 4
      -rwxr-xr-x 1 root root 3556 Apr 17 04:10 iptables.sh
      root@debian:~/Documents# pwd
      /root/Documents
      root@debian:~/Documents#

      #4 17-04-2018 10:40:20

      Euh… pour un pare-feu, il vaut mieux le lancer au démarrage du système.
      Utiliser la crontab de l’utilisateur root, n’est certainement pas la bonne méthode. Si ça ne marche pas quand on le mets dans /etc/rc*.d/, c’est parce qu’il est très probable que le système d’init employé est systemd. Il faudrait un petit fichier unit pour systemd comme celui-ci

      [Unit]
      Description=Setup firewall
      After=network.target local-fs.target

      [Service]
      RemainAfterExit=true
      ExecStart=/root/Documents/iptables.sh

      [Install]
      WantedBy=multi-user.target

      Ce fichier que l’on peut appeler iptables.service, est à mettre dans /etc/systemd/system/
      Ensuite il faut activer le service :

      systemctl enable iptables.service

      Normalement il devrait être pris en compte au prochain démarrage.
      Mais évidemment, il faut que le script iptables.sh ne contiennent pas d’erreur pour que ça marche. Et pour cela vérifié que le script lancé manuellement fonctionne et produit bien le résultat attendu, en faisant :

      /root/Documents/iptables.sh

      --

      Lancer un script au démarrage de Debian

      Bonjours à tous,

      Tout d’abord je vous explique la situation: Depuis peu j’ai commencé à louer un VPS chez OVH (mon premier) pour diverses utilisations.

      Pour tâter un peu le terrain, j’ai mis un bot Discord (JavaScript) que j’avais fait dessus pour voir si tout fonctionne bien, nickel.

      Et là problème: J’ai essayé de faire un script pour le lancer au démarrage de mon VPS mais ça ne fonctionne pas !

      Voici les étapes que j’ai suivies pour essayer de le faire fonctionner au démarrage:

      Mon script est dans /etc/init.d

      chmod a+x /etc/init.d/bot_autostart.sh

      update-rc.d /etc/init.d/bot_autostart.sh defaults

      Et rien ne se passe…

      J’ai essayé de mettre la commande dans .bashrc (parce que j’ai pas de rc.local) pour tester mais cela s’ouvre après le démarrage de la session ce qui fait que je suis obligé d’avoir mon terminal d’ouvert pour que mon bot fonctionne…

      Donc voici ma question: Comment peut-on lancer le script au démarrage de Debian avant l’ouverture de session?

      Merci d’avoir de vos réponses.

      dantonq

       

      salut,

      les versions récentes des distributions modernes n’utilisent plus init.d

      il faut regarder du côté de systemd.

      « un problème clairement exposé est à moitié résolu. » -- pas de questions techniques en MP.

      Si c’est du systemd, la syntaxe est la suivante :

      systemctl enable MonService.service
      

      Qui fait référence un un fichier (généralement dans /etc/systemd/system/). Tu va donc devoir en créer un pour ton script

      -
      Edité par Heziode 8 décembre 2017 à 23:25:10

      Ensemble créons l’avenir !

      J’ai testé et ça ne marche pas j’ai du raté quelque chose :/

      Voici mon script (dans /usr/bin)

       

      #!/bin/sh

      start(){

      su node --harmony /home/bot/bot.js

      }

       

      Et voici mon service (dans /etc/systemd/system )

       

      [Unit]

      Description=Bot Autostart

      [Service]

      Type=oneshot

      ExecStart=/usr/bin/bot_autostart.sh

      [Install]

      WantedBy=multi-user.target

       

      Après j’ai bien fait

      systemctl enablebot_autostart.service

       

      Mais rien en se passe..

       

      salut,

      dans ton script, trois choses :

      il n’est pas nécessaire de devenir root dans un script de démarrage : le démarrage se fait en tant que root

      su, tout seul, va vouloir faire passer l’utilisateur en root, et attendre que l’utilisateur entre le mot de passe de root.
      mais de toute façon, ça ne sert pas ici.

      et, tu l’exécutes quand ta fonction ?

      « un problème clairement exposé est à moitié résolu. » -- pas de questions techniques en MP.

      il faut modifier comme ci-dessous ton script.sh (le start servai à l’époque pour le init.d)

      #!/bin/sh

      su node --harmony /home/bot/bot.js

      --

      Debian – Exécuter un script au démarrage de la machine

      Posté dans Linux

      Petit mémo pour exécuter un script au démarrage d’une machine sous Debian

       

      Créer un script « mon_script.sh » dans un répertoire au choix.
      L’en-tête doit commencer par :

      #!/bin/sh
      ### BEGIN INIT INFO
      # Provides:
      Nom du script
      # Required-Start:    $local_fs $network
      # Required-Stop:     $local_fs
      # Default-Start:     2 3 4 5
      # Default-Stop:      0 1 6
      # Short-Description: Description courte
      # Description:       Description longue
      ### END INIT INFO

      Ajouter à la suite, les commandes à exécuter.

       

      Rendre le script exécutable :

      chmod 700 mon_script.sh

       

      Indiquer à Debian d’exécuter le script au démarrage de la machine :

      update-rc.d mon_script.sh defaults

       

      Tester le script en relançant la machine.

       

      Un autre solution : https://askubuntu.com/a/797600

       

      Editer le fichier /etc/issue et ajouter la ligne à la fin :

      eth0: \4{eth0}

       

      Pour connaitre le nom de l’interface :

      command ip a

       

      Résultat :

      1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
      inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
      inet6 ::1/128 scope host
      valid_lft forever preferred_lft forever
      
      2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
      link/ether 52:54:00:16:1a:cc brd ff:ff:ff:ff:ff:ff
      inet 192.168.122.12/24 brd 192.168.122.255 scope global dynamic ens3
      valid_lft 3356sec preferred_lft 3356sec
      inet6 fe80::5054:ff:fe16:1acc/64 scope link
      valid_lft forever preferred_lft forever

       

      Le nom de la carte sera donc ens3.
      Donc la ligne à ajouter sera :

      ens3: \4{ens3}

       

      Testé sur Ubuntu 18.04 Server avec succès.

      --

      Bonjour à tous,

      je cherche à exécuter un script au démarrage de ma Debian, quelle est la meilleure procédure à suivre ?

      Merci

       

      Pour un utilisateur ou pour tout le système ?

      Si pour tout le systeme ça ce passe dans
      /etc/init.d

      sinon pour un user :
      soit en peaufinant le .bahsrc soit en utilisant sous gnome systeme/preferences/programmes au démarrage

      enfin, d’après moi

      tiens un lien pour l’init.d
      debian-administration.org/articles/28 6,3k

      En gros, tu as plusieurs solutions

      1. /etc/init.d/rc.local est systématiquement appelé à chaque démarrage, ce script lance
        /etc/rc.local où tu peux mettre un appel à tes programmes, y mettre ce que tu veux. Bref, pour un script local c’est la solution.
      2. Tu veux lancer un démon, etc, dans ce cas copie /etc/init.d/skeleton /etc/init.d/nomdetondemon, tu l’édites et à l’aide de update-rc.d, tu ajustes lkes niveaux et le moment où ce script est appelé.

      C’est tout de suite plus clair quand c’est François qui l’explique !
      Bon dimanche

      --

       

      --

       

      --

       

 

Aucun commentaire

 

Laissez un commentaire