#1 Le 22/10/2015, à 11:50
- Byggvir
Exécuter un script avant l'ouverture de la session
Bonjour,
J'ai un pc sous Ubuntu 15.04 et je voudrais exécuter un script juste avant le gestionnaire de connexion ou je dois répondre à une question pour faire démarrer directement vers le gestionnaire de connexion ou de créer un écran virtuel puis de démarrer le gestionnaire de connexion.
Pour ce qui est de faire le script ce n'est pas un soucis ce que je ne sais pas faire c'est d'exécuter un script avant le gestionnaire de connexion.
Merci d'avance de vos réponses,
Dernière modification par Byggvir (Le 22/10/2015, à 11:50)
Hors ligne
#2 Le 22/10/2015, à 20:52
- HPIR40
Re : Exécuter un script avant l'ouverture de la session
un peu de lecture pour commencer
http://doc.ubuntu-fr.org/tutoriel/comme … en_service
attention: ton programme doit obligatoirement se finir par
exit 0
et ensuite pour finir les info sur quelle position lui donner dans la procedure de démarrage, donc juste avant les services de demarrage de connexion
http://www.funix.org/fr/linux/startup.htm
http://www.octetmalin.net/linux/tutorie … cripts.php
Dernière modification par HPIR40 (Le 22/10/2015, à 20:54)
Hors ligne
#3 Le 22/10/2015, à 20:56
- Byggvir
Re : Exécuter un script avant l'ouverture de la session
Merci pour toute les infos je vais tenter ça
Hors ligne
#4 Le 23/10/2015, à 10:53
- Byggvir
Re : Exécuter un script avant l'ouverture de la session
Re,
Donc je comprends maintenant comment cela fonctionne donc j'ai voulu tester avant de mettre mon gros script. J'ai fait un petit script de test que je placerai avant lightdm.
Le souci, c'est que je bloque au moment de tester mon script en tant que service. je m'explique :
Mon script :
#!/bin/sh -e
DAEMON="/opt/ED_start0.01/ED_start.sh" #ligne de commande du programme
daemon_OPT="-d -p -f /home/gsp/ED_start0.01/ED_start.ini" #argument à utiliser par le programme
DAEMONUSER="root" #utilisateur du programme
daemon_NAME="ED_start.sh" #Nom du programme (doit être identique à l'exécutable)
PATH="/sbin:/bin:/usr/sbin:/usr/bin" #Ne pas toucher
test -x $DAEMON || exit 0
. /lib/lsb/init-functions
d_start () {
log_daemon_msg "Starting system $daemon_NAME Daemon"
start-stop-daemon --background --name $daemon_NAME --start --quiet --chuid $DAEMONUSER --exec $DAEMON -- $daemon_OPT
log_end_msg $?
}
d_stop () {
log_daemon_msg "Stopping system $daemon_NAME Daemon"
start-stop-daemon --name $daemon_NAME --stop --retry 5 --quiet --name $daemon_NAME
log_end_msg $?
}
case "$1" in
start|stop)
d_${1}
;;
restart|reload|force-reload)
d_stop
d_start
;;
force-stop)
d_stop
killall -q $daemon_NAME || true
sleep 2
killall -q -9 $daemon_NAME || true
;;
status)
status_of_proc "$daemon_NAME" "$DAEMON" "system-wide $daemon_NAME" && exit 0 || exit $?
;;
*)
echo "Usage: /etc/init.d/$daemon_NAME {start|stop|force-stop|restart|reload|force-reload|status}"
exit 1
;;
esac
#DBT script
xeyes &
while test "$onvastopper" != stop
do
echo "On va stopper le programme ?"
read onvastopper
if test $onvastopper = stop
then
killall xeyes &
else
xeyes &
fi
done
exit 0
Donc un truc tout simple qui lance xeyes.
J'ai copié et rendu exécutable mon script dans /etc/init.d/ et /opt/ED_start0.01/
Mais quand je veux tester avec :
sudo /etc/init.d/ED_start.sh start
J'obtiens le message d'erreur suivant :
[....] Starting ED_start.sh (via systemctl): ED_start.serviceFailed to start ED_start.service: Unit ED_start.service failed to load: No such file or directory.
failed!
Il me cherche un ED_start.service mais je ne comprend pas vraiment pourquoi
Dernière modification par Byggvir (Le 23/10/2015, à 10:55)
Hors ligne
#5 Le 23/10/2015, à 13:28
- HPIR40
Re : Exécuter un script avant l'ouverture de la session
je suppose que les droit 755 sont bien appliqué
a tu transformé ton programme en service? si oui appelle le non pas ED_start.sh mais ED_start
Dernière modification par HPIR40 (Le 23/10/2015, à 13:29)
Hors ligne
#6 Le 23/10/2015, à 16:47
- Byggvir
Re : Exécuter un script avant l'ouverture de la session
Je viens de tester cela ne change strictement rien, toujours la même erreur
Hors ligne
#7 Le 23/10/2015, à 17:04
- MicP
Re : Exécuter un script avant l'ouverture de la session
AMHA tu devrais regarder du côté de systemd
Je ne sais pas si ça pourra t'aider, mais voici toujours quelques liens.
https://wiki.ubuntu.com/systemd
https://wiki.ubuntu.com/SystemdForUpstartUsers
Dernière modification par MicP (Le 23/10/2015, à 17:24)
Hors ligne
#8 Le 23/10/2015, à 17:10
- Byggvir
Re : Exécuter un script avant l'ouverture de la session
Il me semble pas que mon système utilise systemd mais je vais jeter un coup d'oeil.
Sinon c'est quoi "AMHA" un cris ? XD
Hors ligne
#9 Le 23/10/2015, à 17:15
- Ayral
Re : Exécuter un script avant l'ouverture de la session
Il me semble pas que mon système utilise systemd mais je vais jeter un coup d'oeil.
Sinon c'est quoi "AMHA" un cris ? XD
À Mon Humble Avis
Pour mettre les retours de commande entre deux balises code, les explications sont là : https://forum.ubuntu-fr.org/viewtopic.php?id=1614731
Blog d'un retraité
Site de graphisme du fiston Loïc
Ubuntu 22.04 LTS sur un Thinkpad W540
Hors ligne
#10 Le 23/10/2015, à 17:16
- Byggvir
Re : Exécuter un script avant l'ouverture de la session
Merci pour l'info
Hors ligne
#11 Le 23/10/2015, à 17:29
- MicP
Re : Exécuter un script avant l'ouverture de la session
…Il me semble pas que mon système utilise systemd…
Je n'ai pas assez fouillé sur les différentes versions ubuntu, donc moi non plus je ne suis pas certain que ce soit le cas.
C'est simplement le message d'erreur qui m'a fait pensé à ça : …Starting ED_start.sh (via systemctl): ED_start.service…
Dernière modification par MicP (Le 23/10/2015, à 17:31)
Hors ligne
#12 Le 23/10/2015, à 17:34
- Byggvir
Re : Exécuter un script avant l'ouverture de la session
Il y a en effet systemd sur la machine (Ubuntu 15.04), mais comment savoir si il est utilisé ?
Hors ligne
#13 Le 23/10/2015, à 17:45
- MicP
Re : Exécuter un script avant l'ouverture de la session
Ma machine debian 8.2 utilise systemd :
michel@debG53SW:~$ cat /proc/1/comm
systemd
michel@debG53SW:~$ ps -eaf | grep [s]ystemd
root 225 1 0 17:06 ? 00:00:00 /lib/systemd/systemd-journald
root 242 1 0 17:06 ? 00:00:00 /lib/systemd/systemd-udevd
root 863 1 0 17:06 ? 00:00:00 /lib/systemd/systemd-logind
message+ 868 1 0 17:06 ? 00:00:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
lightdm 1212 1 0 17:06 ? 00:00:00 /lib/systemd/systemd --user
michel 1322 1 0 17:06 ? 00:00:00 /lib/systemd/systemd --user
michel@debG53SW:~$
Entre la commande :
systemctl
Pg-Up, Pg-Dwn, flèches, et q pour quitter.
mêmes touches que pour less(puisque ça dépends du pager par défaut)
Dernière modification par MicP (Le 23/10/2015, à 17:59)
Hors ligne
#14 Le 23/10/2015, à 17:48
- Byggvir
Re : Exécuter un script avant l'ouverture de la session
J'ai moi aussi plusieurs serveur Debian et je savais que Debian 8 utilisait systemd (ça avait fait grand bruit).
Donc pour moi
cat /proc/1/comm
systemd
Même résultat donc il faut en déduire que la machine utilise systemd ? Si oui comment je gère avec ça pour lancer mon script au démarrage ?
Dernière modification par Byggvir (Le 23/10/2015, à 17:48)
Hors ligne
#15 Le 23/10/2015, à 18:09
- MicP
Re : Exécuter un script avant l'ouverture de la session
…ça avait fait grand bruit…
Oui, et à mon avis il s'agissait surtout de "résistance au changement", mais bon, on va pas relancer tout ça, ou alors sans moi
Sans compter que je me suis toujours adapté avec beaucoup de plaisir dans la découverte des nouveautés, alors j'aime.
Après, quand j'aurai de l'expérience avec systemd, je pourrais peut-être en parler. Pour l'instant j'en connais trop peu.
Hors ligne