Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/01/2017, à 11:47

khazai

[Résolu] Executer une commande sudo au démarrage

Bonjour,

je n'arrive pas à exécuter une commande au démarrage. J'ai suivi le tuto "Gérer sa télécommande avec IR-Keytable", et au chapitre 3.3 il faut mettre la commande suivante dans le fichier /etc/rc.local :

sudo ir-keytable -c -w /lib/udev/rc_keymaps/budget_ci_old --sysdev rc2

Je précise que j'ai déjà fait ce tuto lors de ma précédente installation de Ubuntu et que j'ai rencontré aucune difficulté. Cette fois ci, en refaisant la même chose, la commande ne s’exécute pas au démarrage. Par contre si je lance manuellement l’exécution de /etc/rc.local dans un terminal, sa fonctionne. On dirait que c'est carrément le fichier /etc/rc.local qui ne s’exécute pas au démarrage. J'ai également copier ma commande dans /etc/init.d/rc.local mais même résultat. J'ai lu aussi qu'il y avait une histoire de level rc1.d, rc2.d, j'ai tenté de mettre mon rc.local renommé S02rc.local (exemple pour le level 2) dans tous les levels, mais ça ne fonctionne toujours pas (sachant que je ne sais pas sur quel level je démarre, le 2 normalement mais pas sur).

Quand je demande l'état du rc.local j'ai ce résultat :

florent@florent-desktop:~$ systemctl status rc-local.service
● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: 
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: inactive (dead)
lines 1-5/5 (END)

et si je tente de l'activer :

florent@florent-desktop:~$ systemctl enable rc-local.service
The unit files have no installation config (WantedBy, RequiredBy, Also, Alias
settings in the [Install] section, and DefaultInstance for template units).
This means they are not meant to be enabled using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
   .wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
   a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
   D-Bus, udev, scripted systemctl call, ...).
4) In case of template units, the unit is meant to be enabled with some
   instance name specified.

J'ai fait la commande :

systemctl start rc-local.service

puis de nouveau :

systemctl status rc-local.service

Ca m'a dit que le fichier etc/rc;local n'était pas exécutable, je l'ai rendu exécutable et j'ai recommencé un Start. voici ce que Statut me répond :

florent@florent-desktop:~$ systemctl start rc-local.service
Job for rc-local.service failed because the control process exited with error code.
See "systemctl status rc-local.service" and "journalctl -xe" for details.
florent@florent-desktop:~$ systemctl status rc-local.service
● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: 
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: failed (Result: exit-code) since dim. 2017-01-29 11:05:53 CET; 13s ag
  Process: 12407 ExecStart=/etc/rc.local start (code=exited, status=203/EXEC)

janv. 29 11:05:53 florent-desktop systemd[1]: Starting /etc/rc.local Compatibili
janv. 29 11:05:53 florent-desktop systemd[1]: rc-local.service: Control process 
janv. 29 11:05:53 florent-desktop systemd[1]: Failed to start /etc/rc.local Comp
janv. 29 11:05:53 florent-desktop systemd[1]: rc-local.service: Unit entered fai
janv. 29 11:05:53 florent-desktop systemd[1]: rc-local.service: Failed with resu
lines 1-12/12 (END)...skipping...
● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: enabled)
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: failed (Result: exit-code) since dim. 2017-01-29 11:05:53 CET; 13s ago
  Process: 12407 ExecStart=/etc/rc.local start (code=exited, status=203/EXEC)

janv. 29 11:05:53 florent-desktop systemd[1]: Starting /etc/rc.local Compatibility...
janv. 29 11:05:53 florent-desktop systemd[1]: rc-local.service: Control process exited, code=exited status=203
janv. 29 11:05:53 florent-desktop systemd[1]: Failed to start /etc/rc.local Compatibility.
janv. 29 11:05:53 florent-desktop systemd[1]: rc-local.service: Unit entered failed state.
janv. 29 11:05:53 florent-desktop systemd[1]: rc-local.service: Failed with result 'exit-code'.

Quelqu'un à une idée car là je sèche littéralement ???
Toute aide serait la bienvenue, merci wink

Flo

Dernière modification par khazai (Le 29/01/2017, à 19:16)

Hors ligne

#2 Le 29/01/2017, à 12:15

erresse

Re : [Résolu] Executer une commande sudo au démarrage

Bonjour,
Essaie en ne mettant pas "sudo" dans ta commande dans rc.local.
En principe, le rc.local est exécuté sous "root", donc il n'a pas besoin de sudo...


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#3 Le 29/01/2017, à 14:10

maxire

Re : [Résolu] Executer une commande sudo au démarrage

Salut,

Pas certain qu'utiliser rc-local pour démarrer une tâche au démarrage système sous SystemD est une bonne idée, mieux vaudrait créer un service SystemD.
rc-local est un couche de compatilité de Upstart avec SystemD, à terme elle disparaîtra quasi certainement.
Je t'invite à lire la documentation SystemD disponible.

Remarque:
Inutile d'essayer d'activer le service rc-local car il est démarré, ce service est sans doute une dépendance d'un ou un autre service ce qui explique ce démarrage.

Dernière modification par maxire (Le 29/01/2017, à 14:11)


Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne

#4 Le 29/01/2017, à 15:08

khazai

Re : [Résolu] Executer une commande sudo au démarrage

J'ai regardé la documentation et j'ai installé la partie graphique de SystemD. Le service rc.local est Loaded mais le statut est Failed.

Hors ligne

#5 Le 29/01/2017, à 15:45

khazai

Re : [Résolu] Executer une commande sudo au démarrage

erresse a écrit :

Bonjour,
Essaie en ne mettant pas "sudo" dans ta commande dans rc.local.
En principe, le rc.local est exécuté sous "root", donc il n'a pas besoin de sudo...

J'ai essayé sans mettre sudo, ça ne fonctionne pas non plus. J'ai aussi essayé avec ou sans exit0 à la fin, pareil. D'ailleurs le fichier rc.local, hormis ma ligne de commande, le fichier est totalement vide. Normal?

Hors ligne

#6 Le 29/01/2017, à 15:46

khazai

Re : [Résolu] Executer une commande sudo au démarrage

Puis-je mettre ma ligne de commande dans un autre fichier que rc.local pour l'exécuter sans ce service?

Hors ligne

#7 Le 29/01/2017, à 16:07

maxire

Re : [Résolu] Executer une commande sudo au démarrage

Je me suis mal exprimé, le service rc-local démarre naturellement et part en échec, ce que je voulais dire est qu'il est inutile de faire une activation (enable) du service.

Normalement systemd n'utilise pas /etc/rc.local, par contre il existe peut-être une solution à ton problème ici.
Solution trouvée en 2 minutes via une recherche avec Duckduckgo avec pour critère de recherche «systemd rc-local».

Mais bon, je le redis définis plutôt un service utilisateur spécifique c'est plus propre et viable à long terme, une distribution comme Archlinux n'utilise plus rc.local.


Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne

#8 Le 29/01/2017, à 17:10

erresse

Re : [Résolu] Executer une commande sudo au démarrage

Ça tient peut-être à la variante de la distribution utilisée (Ubuntu-Mate pour moi), mais j'ai ceci :

root@erresse-mate:/home/erresse# systemctl status rc-local
● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset:
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: active (exited) since mer. 2017-01-25 13:54:43 CET; 4 days ago

janv. 25 13:54:43 erresse-mate systemd[1]: Starting /etc/rc.local Compatibility...
janv. 25 13:54:43 erresse-mate systemd[1]: Started /etc/rc.local Compatibility.
root@erresse-mate:/home/erresse#

Le service est donc activé par défaut chez moi, car je n'ai jamais rien demandé dans ce sens... et pour cause, je n'ai rien dans "rc.local" !

Je pense que maxire a raison sur le fait que la distribution est passée de Upstart à SystemD et que rc.local est une survivance de l'ancienne procédure de démarrage. Mais peut-être que certaines variantes ont mieux pris la compatibilité en charge que d'autres...


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#9 Le 29/01/2017, à 17:44

khazai

Re : [Résolu] Executer une commande sudo au démarrage

Sur ma précédente installation d'Ubuntu, qui a été faite et mise à jour au fur et a mesure des versions, rc.local fonctionnait bien, mais depuis que j'ai formaté et réinstallé Ubuntu 16.10, j'ai eu ce problème. La solution du lien fournit par Maxire ne fonctionnait pas non plus (la partie où ils disent comment faire pour activer rc.local avec systemd) mais j'ai commencé a explorer la partie cron. J'ai eu quelques difficultés mais au final ça fonctionne. J'ai crée un fichier rclocal.sh dans /init.d/ et j'ai rajouté "@reboot sudo /etc/rclocal.sh" dans cron. et là, ça fonctionne.

Maxire, qu'elle est ta solution propre de service utilisateur spécifique? Comment la mettre en place?

Hors ligne

#10 Le 29/01/2017, à 18:59

maxire

Re : [Résolu] Executer une commande sudo au démarrage

Tu peux créer un fichier irkeytable.service dans /etc/systemd/system contenant:

[Unit]
Description=Initialisation IR-keytable

[Service]
ExecStart=/usr/???ir-keytable -c -w /lib/udev/rc_keymaps/budget_ci_old --sysdev rc2 
Type=oneshot
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

Mettre le chemin exact de la commande à exécuter dans ExecStart par exemple /usr/bin/ir-keytable (je ne sais pas où tu as mis cette commande).
Puis systemctl start irkeytable et si c'est ok un enable.
Je ne garantis rien quant aux options à utiliser (Type etcetera) lis les pages man de systemd.unit et systemd.service.
En fait c'est simple comme bonjour.

Dernière modification par maxire (Le 29/01/2017, à 19:01)


Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne

#11 Le 29/01/2017, à 19:15

khazai

Re : [Résolu] Executer une commande sudo au démarrage

En effet ça semble pas très compliqué, je vais essayé ca demain.

Hors ligne

#12 Le 30/01/2017, à 13:51

khazai

Re : [Résolu] Executer une commande sudo au démarrage

C'est fait de façon propre, du coup j'ai supprimé ma tâche cron. Merci Maxire wink

Hors ligne