Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

Appel à contributeurs pour la doc.

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.

#1 Le 31/07/2017, à 23:13

ublender

application au démarrage

Bonjour,

J'aimerais lancer cette commande (le but étant de compléter la doc):

setxkbmap -option terminate:ctrl_alt_bksp

au démarrage, juste après s'être logué (je sais pas si c'est obligatoire), et en ligne de commande. C'est une commande qui ne renvoie rien et se termine aussitôt.
Il faut que cette commande s'applique à l'utilisateur, et pas à root.
J'ai testé
-rc.local, j'ai pas réussi à le faire fonctionner, même pour créer un stupide fichier
-cron, pour créer un fichier ça marche mais pour cette commande non (j'ai testé @reboot setxkbmap -option terminate:ctrl_alt_bksp, je comprends pas pourquoi ça marche pas, si quelqu'un peut m'expliquer)

J'ai pas testé systemd parce que je ne comprends pas grand chose à la création de scripts systemd. Si je dois utiliser systemd, c'est un script de type oneshot qu'il faut faire dans mon cas?

Si quelqu'un peut m'aiguiller vers la solution, ça serait cool smile

Hors ligne

#2 Le 31/07/2017, à 23:51

DonutMan75

Re : application au démarrage

Hello, la syntaxe ne me choque pas,
peut-être tenter la commande suivante pour voir si une erreur est générée ?

@reboot setxkbmap -option terminate:ctrl_alt_bksp 2>/chemin/vers/fichier_de_log.log

Ou alors encapsuler la commande dans un script sh ?

@reboot /chemin/de/mon_script.sh

mon_script.sh :

#! /bin/sh
setxkbmap -option terminate:ctrl_alt_bksp

Bonne soirée smile

Donut

Hors ligne

#3 Le 01/08/2017, à 00:04

Watael

Re : application au démarrage

salut,

setxkbmap étant une application X, elle va avoir du mal à être exécutée par cron (surtout au démarrage, alors que X n'est encore lancé). sad

il est préférable de configurer le Window Manager (lequel ?) pour qu'il l'exécute au moment de son démarrage.


eval, c'est mal.

En ligne

#4 Le 01/08/2017, à 09:18

Hizoka

Re : application au démarrage

sinon dans ce cas là, je fais :

@reboot sleep 30 && setxkbmap -option terminate:ctrl_alt_bksp 2>/chemin/vers/fichier_de_log.log

ça laisse le temps à x de se lancer.

mais sinon comme le dit Watael, via le Window Manager.

Hors ligne

#5 Le 01/08/2017, à 13:58

ublender

Re : application au démarrage

Merci pour vos réponses.
Effectivement, cron démarre avant le serveur X ce qui produisait une erreur du style 'cannot find default display'.

@reboot sleep 30 && setxkbmap -option terminate:ctrl_alt_bksp 2>/chemin/vers/fichier_de_log.log

fonctionne donc très bien.
Au passage, je viens de remarquer que je confonds deux touches du clavier, donc on peut mettre l'option dans /etc/default/keyboard, ça fonctionne aussi (je pensais que le fichier n'était plus pris en compte, c'est pourquoi j'ai ouvert ce fil)

Par curiosité, y a t'il une méthode en ligne de commande pour exécuter un programme après le chargement du Window Manager (je suis sur xubuntu 16.04)?

Hors ligne

#6 Le 03/08/2017, à 15:38

Harashi

Re : application au démarrage

Bonjour,

Alors je débarque peut-être complètement, mais il me semble que la méthode décrite ici pour lancer iptables au démarrage est la plus simple. Il te suffit de créer un script bash avec ta commande (appelons-le ton_script), puis de faire ça :

sudo mv /emplacement/du/script /etc/init.d
sudo chmod +x /etc/init.d/ton_script
sudo update-rc.d ton_script defaults

Après quoi il se lancera à chaque démarrage. Ça me parait être la méthode de base, du coup désolé si je n'ai pas bien compris ce que tu essayes de faire mais si jamais ça peut aider.


Asus RoG GL552JX-DM322T : Triple amorçage Windows 10 / Ubuntu 16.04 LTS / Archlinux
Dell-Latitude D430 : Double amorçage Windows 7 / Debian 9 (Stretch)

Hors ligne

#7 Le 03/08/2017, à 16:59

Hizoka

Re : application au démarrage

avec ta methode, c'est executé en root non ?
ce qui n'est pas forcement une bonne idée en fonction du logiciel.

de plus, ta méthode fonctionne pour les logiciels graphiques ?

Hors ligne

#8 Le 03/08/2017, à 17:07

Harashi

Re : application au démarrage

C'est plus que probablement exécuté en root car je me sers de ça pour un script iptables. Après je ne cherchais ici qu'à répondre par rapport à la commande que voulait lancer ublender.

Je n'ai jamais testé pour les logiciels graphiques, mais comme c'est l'équivalent d'une ligne de commande normale tu dois pouvoir le faire aussi avec la commande adéquate. Par exemple pour lancer le terminal de XFCE, tu dois marquer xfce4-terminal. A tester avec un programme sans conséquence au préalable, cependant.


Asus RoG GL552JX-DM322T : Triple amorçage Windows 10 / Ubuntu 16.04 LTS / Archlinux
Dell-Latitude D430 : Double amorçage Windows 7 / Debian 9 (Stretch)

Hors ligne

#9 Le 03/08/2017, à 17:50

Hizoka

Re : application au démarrage

à mon avis les commandes sont exécutées avant le lancement de X, d'où ma question.

Hors ligne

#10 Le 04/08/2017, à 21:57

ublender

Re : application au démarrage

@Harashi: J'ai testé ce que tu proposes mais ça n'a pas fonctionné, même pour créer un fichier. En tout cas merci d'avoir proposé une solution.

Hors ligne

#11 Le 05/08/2017, à 12:46

Harashi

Re : application au démarrage

@ublender : Oui, ça n'a pas dû fonctionner car je me rend compte que j'ai oublié de préciser un truc important (désolé ^^'), il faut mettre ceci au début de ton script :

#!/bin/bash

### BEGIN INIT INFO
# Provides:          skeleton
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.
### END INIT INFO
## Ajout: LSB tags and overrides

Ensuite tu sautes une ligne et tu ajoutes ta commande.

@Hizoka : Bonne question, je vais tester avec firefox dès que j'ai deux minutes


Asus RoG GL552JX-DM322T : Triple amorçage Windows 10 / Ubuntu 16.04 LTS / Archlinux
Dell-Latitude D430 : Double amorçage Windows 7 / Debian 9 (Stretch)

Hors ligne

#12 Le 06/08/2017, à 17:04

LeoMajor

Re : application au démarrage

salut,

sous systemd, tu es obligé de faire un test sur

DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$(awk -F: '{print $3}'< <(getent passwd $(whoami)))/bus" 

l'export  DISPLAY est facultatif

#!/bin/bash

### BEGIN INIT INFO
# Provides:          skeleton
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.
### END INIT INFO
## Ajout: LSB tags and overrides

à mon avis, c'est carrément obsolète, surtout avec systemd

soit tu utilises un script au démarrage de session (gnome-session-properties) ; le plus simple

soit tu utilises un service systemd type inotify incron iwatch,  qui surveille l'existence de DBUS_SESSION_BUS_ADDRESS, et qui déclenche le script contenant ton code.

le cron n'est pas du tout adapté.

Hors ligne

#13 Le 06/08/2017, à 18:25

Harashi

Re : application au démarrage

LeoMajor a écrit :

à mon avis, c'est carrément obsolète, surtout avec systemd

Probablement, je l'avais pris sur une vieille page de documentation il y a un an, mais en attendant chez moi c'est la seule façon de le faire fonctionner, si je ne le met pas il ne se déclenche pas. Après il y a peut-être un truc que je ne maîtrise pas là-dedans.


Asus RoG GL552JX-DM322T : Triple amorçage Windows 10 / Ubuntu 16.04 LTS / Archlinux
Dell-Latitude D430 : Double amorçage Windows 7 / Debian 9 (Stretch)

Hors ligne

#14 Le 06/08/2017, à 20:00

Sub0

Re : application au démarrage

Je sais pas si c’est pertinent mais : un service systemd de Type=OneShot WantedBy=multi-user.target avec un truc du genre ExecStart=ta_commande ?
J’ai pas de buntu installé avec un serveur graphique sous la main, donc j’peux pas regarder en détail, mais c’est quel service qui lance le gestionnaire de login ou le DE ?

Edit : pas convaincu par le multi-user.target…
Mais je crois que c’est une piste.

graphical.target ?
Faut regarder la séquence de boot.

Dernière modification par Sub0 (Le 06/08/2017, à 20:02)


Seule alternative au bépo acceptée = stylo/papier.

Hors ligne

#15 Le 08/08/2017, à 11:06

ublender

Re : application au démarrage

@LeoMajor: je comprends pas ce qu'est DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$(awk -F: '{print $3}'< <(getent passwd $(whoami)))/bus" et ce qu'il faut en faire.

J'ai essayé de faire un service systemd, j'ai mis ça:

[Unit]
Description=test
After=lightdm.service
 
[Service]
Type=simple
 
User=user
Group=user
 
ExecStart=/usr/bin/touch /home/user/test.txt

Ensuite j'ai fait:

sudo systemctl enable test.service

pour qu'il s’exécute à chaque démarrage, mais il ne se passe rien. Quand je fais:

sudo systemctl start test.service

ça fonctionne, donc le service est bon.
Et j'ai créé le service dans /etc/systemd/system, je sais pas si c'est le bon endroit pour faire ça

Dernière modification par ublender (Le 08/08/2017, à 11:15)

Hors ligne

#16 Le 10/08/2017, à 11:50

LeoMajor

Re : application au démarrage

salut,

juste pour info

DBUS_SESSION_BUS_ADDRESS est crée lorsqu'on se connecte par *pam_dbus

d'autres possibilités;

dbus-send --session --type=method_call --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.IsSessionRunning

method return time=1502357451.080962 sender=:1.41 -> destination=:1.241 serial=426 reply_serial=2
   boolean true

>regarder du côté de d-feet pour les méthodes sur le dbus.

loginctl show-session $XDG_SESSION_ID

Id=c6
User=1000
Name=toto
Timestamp=mer. 2017-08-09 18:38:39 CEST
TimestampMonotonic=23653585059
VTNr=7
Seat=seat0
Display=:0
Remote=no
Service=lightdm
Desktop=ubuntu
Scope=session-c6.scope
Leader=931
Audit=0
Type=x11
Class=user
Active=yes
State=active
IdleHint=no
IdleSinceHint=0
IdleSinceHintMonotonic=0

Hors ligne