Services qui démarrent trop tôt

Bonjour.
Je ne sais pas si cette question peut être traitée sur un forum consacré à Debian. Veuillez donc m’excuser si ce n’était pas le cas.

Sur le raspberry pi 2 modèle B j’ai installé raspbian. Le problème que je rencontre est que les services lighttpd et dnsmasq démarrent avant que la clef wifi soit active. Du coup impossible de se connecter au réseau Wifi de la piratebox. Il faut que j’arrête les services lighttpd et dnsmasq à la main et qu’ensuite je redémarre la piratebox.
J’ai déjà pas mal cherché sur le Net mais tout ce que j’ai trouvé concerne d’autres modèles de Raspberry et ne fonctionne pas sur le 2 modèle B.

Merci de vos conseils et liens.

Salut,
J’ai temporise le démarrage de minidlna en le conditionnant au montage du disque USB qui contient mes médias.
Ça peut te donner des idées sur l’utilisation des commandes systemctl

minidlna-temporiser-son-demarrage-t51713.html#p524765

Ok, merci pour l’exemple mais c’est au-dessus de mon niveau.

Je pensais m’en sortir avec un script placé dans /etc/init.d/ qui stoppe les services lighttpd et dnsmasq et redémarre la piratebox mais ça ne fonctionne pas. Je ne comprends pas pourquoi. Sûrement une histoire de temporisation parce que si je le lance à la main ça me fait le travail.

A+

pour avoir le nom des services et leur ordre de lancement:

  • appuyer sur la barre d’espace pour passer à la page suivante
  • q pour quitter

Pour avoir les infos sur un service et trouver un paramètre à tester: systemctl show
Exemple:

@desktop:~$ systemctl show home.mount Where=/home What=/dev/sda2 Options=rw,relatime,rw Type=ext4 TimeoutUSec=1min 30s ControlPID=0 DirectoryMode=0755 SloppyOptions=no Result=success ExecMount={ path=/bin/mount ; argv[]=/bin/mount -n /dev/disk/by-uuid/4fabe726-57 Slice=system.slice ControlGroup=/system.slice/home.mount CPUAccounting=no CPUShares=18446744073709551615 StartupCPUShares=18446744073709551615 CPUQuotaPerSecUSec=(null) BlockIOAccounting=no BlockIOWeight=18446744073709551615 StartupBlockIOWeight=18446744073709551615 MemoryAccounting=no MemoryLimit=18446744073709551615 DevicePolicy=auto UMask=0022 LimitCPU=18446744073709551615 LimitFSIZE=18446744073709551615 LimitDATA=18446744073709551615 LimitSTACK=18446744073709551615 LimitCORE=18446744073709551615 LimitRSS=18446744073709551615 LimitNOFILE=4096 LimitAS=18446744073709551615 LimitNPROC=13935 LimitMEMLOCK=65536 LimitLOCKS=18446744073709551615 LimitSIGPENDING=13935 LimitMSGQUEUE=819200 LimitNICE=0 LimitRTPRIO=0 LimitRTTIME=18446744073709551615 OOMScoreAdjust=0 Nice=0 IOScheduling=0 CPUSchedulingPolicy=0 CPUSchedulingPriority=0 TimerSlackNSec=50000 CPUSchedulingResetOnFork=no NonBlocking=no StandardInput=null StandardOutput=journal StandardError=inherit TTYReset=no TTYVHangup=no TTYVTDisallocate=no SyslogPriority=30 SyslogLevelPrefix=yes SecureBits=0 CapabilityBoundingSet=18446744073709551615 MountFlags=0 PrivateTmp=no PrivateNetwork=no PrivateDevices=no ProtectHome=no ProtectSystem=no SameProcessGroup=yes IgnoreSIGPIPE=yes NoNewPrivileges=no SystemCallErrorNumber=0 RuntimeDirectoryMode=0755 KillMode=control-group KillSignal=15 SendSIGKILL=yes SendSIGHUP=no Id=home.mount Names=home.mount Requires=-.mount RequiresOverridable=systemd-fsck@dev-disk-by\x2duuid-4fabe726\x2d5797\x2d4439\x2 Wants=system.slice BindsTo=dev-disk-by\x2duuid-4fabe726\x2d5797\x2d4439\x2d9a1f\x2dc02b62b0d143.dev RequiredBy=local-fs.target WantedBy=dev-disk-by\x2duuid-4fabe726\x2d5797\x2d4439\x2d9a1f\x2dc02b62b0d143.de Conflicts=umount.target Before=local-fs.target umount.target After=systemd-fsck@dev-disk-by\x2duuid-4fabe726\x2d5797\x2d4439\x2d9a1f\x2dc02b6 RequiresMountsFor=/ /dev/disk/by-uuid/4fabe726-5797-4439-9a1f-c02b62b0d143 Documentation=man:fstab(5) man:systemd-fstab-generator(8) Description=/home LoadState=loaded ActiveState=active SubState=mounted FragmentPath=/run/systemd/generator/home.mount SourcePath=/etc/fstab InactiveExitTimestamp=mar. 2016-01-26 15:51:45 CET InactiveExitTimestampMonotonic=12485024 ActiveEnterTimestamp=mar. 2016-01-26 15:51:45 CET ActiveEnterTimestampMonotonic=12520605 ActiveExitTimestampMonotonic=0 InactiveEnterTimestampMonotonic=0 CanStart=yes CanStop=yes CanReload=yes CanIsolate=no StopWhenUnneeded=no RefuseManualStart=no RefuseManualStop=no AllowIsolate=no DefaultDependencies=yes OnFailureJobMode=replace IgnoreOnIsolate=yes IgnoreOnSnapshot=no NeedDaemonReload=no JobTimeoutUSec=0 ConditionResult=yes ConditionTimestamp=mar. 2016-01-26 15:51:45 CET ConditionTimestampMonotonic=12445397 Transient=no

Dans mon cas :

systemd-analyze blame

1min 38.732s piratebox.service
         22.982s dhcpcd.service
         10.985s dnsmasq.service
          8.719s checkroot.service
          7.991s systemd-logind.service
          7.853s alsa-restore.service
          7.796s triggerhappy.service
          7.793s dphys-swapfile.service
          7.790s rmnologin.service
          7.779s motd.service
          7.722s avahi-daemon.service
          6.338s mountall.service
          3.595s lightdm.service
          1.463s networking.service
          1.401s lighttpd.service

Il faudrait que dnsmasq.service et lighttpd.service démarrent après piratebox.service.
J’imagine qu’il est possible de modifier les paramètres des services pour temporiser leur démarrage mais je ne sais pas lequel il faut modifier.
A moins que je doive adapter l’exemple que dont tu m’as donné le lien mais ça va être difficile pour moi…

Il faut temporiser les deux services dhcpcd.service et dnsmasq.service pour qu’ils démarrent après piratebox.
Avec une tempo de 90 s ça doit passer et laisser le temps à piratebox de démarrer:

ou bien mettre un test sur l’état de dhcpcd.service dans l’init de piratebox

Dans tous les cas avant de modifier un fichier, en sauvegarder une copie:
sudo cp fichier fichier.old

[quote=“grandtoubab”]Il faut temporiser les deux services dhcpcd.service et dnsmasq.service pour qu’ils démarrent après piratebox.
Avec une tempo de 90 s ça doit passer et laisser le temps à piratebox de démarrer:

manpagesfr.free.fr/man/man3/sleep.3.html

ou bien mettre un test sur l’état de dhcpcd.service dans l’init de piratebox

Dans tous les cas avant de modifier un fichier, en sauvegarder une copie:
sudo cp fichier fichier.old[/quote]

Le problème c’est qu’en mettant sleep 90 dans /etc/init.d/lighttpd et /etc/lighttpd/dnsmasq j’arrive sur cette page quand je me connecte sur la piratebox :

Placeholder page
The owner of this web site has not put up any web pages yet. Please come back later.
You should replace this page with your own web pages as soon as possible.
Unless you changed its configuration, your new server is configured as follows:

Configuration files can be found in /etc/lighttpd. Please read /etc/lighttpd/conf-available/README file.
The DocumentRoot, which is the directory under which all your HTML files should exist, is set to /var/www.
CGI scripts are looked for in /usr/lib/cgi-bin, which is where Debian packages will place their scripts. You can enable cgi module by using command "lighty-enable-mod cgi".
Log files are placed in /var/log/lighttpd, and will be rotated weekly. The frequency of rotation can be easily changed by editing /etc/logrotate.d/lighttpd.
The default directory index is index.html, meaning that requests for a directory /foo/bar/ will give the contents of the file /var/www/foo/bar/index.html if it exists (assuming that /var/www is your DocumentRoot).
You can enable user directories by using command "lighty-enable-mod userdir"

etc…

Je viens d’essayer en mettant un script dans /etc/init.d/ qui redémarre le servie piratebox avec un sleep 120 mais j’ai un 404 not found.

A+

Je ne comprends pas.

J’ai laissé les fichiers /etc/init.d/lighttpd et /etc/init.d/dnsmasq comme ils étaient au départ c’est à dire sans sleep 90 dedans qui posait problème.
Si je démarre la piratebox et qu’à la main j’arrête les services lighttpd et dnsmasq pour ensuite redémarrer la piratebox je peux me connecter sur le réseau de cette piratebox.
Du coup je fais un script que je place dans /etc/init.d/ que je renseigne de cette manière :

cat /etc/init.d/redemarrer_piratebox.sh 
#!/bin/sh
sleep 120
systemctl stop lighttpd && systemctl stop dnsmasq && systemctl restart piratebox
exit 0

Et pourtant quand je reboote je ne peux toujours pas obtenir d’adresse ip du réseau de la piratebox et il faut que je retape les commandes à la main. Quelque chose m’échappe…

A+

Ne faudrait il pas redémarrer les deux services ??

[code]#!/bin/sh sleep 120 systemctl stop lighttpd && systemctl stop dnsmasq && systemctl restart piratebox sleep 30 systemctl start lighttpd && systemctl start dnsmasq exit 0[/code]

Normalement non, ils sont lancés avec le service piratebox apparemment. En tout cas lorsque je lance la commande systemctl restart piratebox à la main après avoir arrêté lighttpd et dnsmasq et que je demande le statut du service piratebox j’obtiens :

# systemctl status -all piratebox
● piratebox.service - LSB: All services around piratebox
   Loaded: loaded (/etc/init.d/piratebox)
   Active: active (running) since mar. 2016-01-26 20:04:33 CET; 1min 36s ago
  Process: 6612 ExecStop=/etc/init.d/piratebox stop (code=exited, status=0/SUCCESS)
  Process: 6641 ExecStart=/etc/init.d/piratebox start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/piratebox.service
           ├─11693 /usr/sbin/hostapd /opt/piratebox/conf/hostapd.conf
           ├─11700 /usr/sbin/dnsmasq -x /var/run/piratebox_dnsmasq.pid -C /opt/piratebox/conf/dnsmasq_generated.conf
           ├─11706 python /opt/piratebox/bin/droopy -d /opt/piratebox/share/Shared -m  --chmod 755 8080
           └─11718 /usr/sbin/lighttpd -f /opt/piratebox/conf/lighttpd/lighttpd.conf

janv. 26 20:04:39 raspberrypi hostapd[11693]: wlan0: STA 08:ed:b9:f8:7f:3b RADIUS: starting accounting session 56A7C33A-00000000
janv. 26 20:04:54 raspberrypi hostapd[11693]: wlan0: STA 08:ed:b9:f8:7f:3b IEEE 802.11: disassociated
janv. 26 20:04:55 raspberrypi hostapd[11693]: wlan0: STA 08:ed:b9:f8:7f:3b IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)
janv. 26 20:04:59 raspberrypi hostapd[11693]: wlan0: STA 08:ed:b9:f8:7f:3b IEEE 802.11: authenticated
janv. 26 20:04:59 raspberrypi hostapd[11693]: wlan0: STA 08:ed:b9:f8:7f:3b IEEE 802.11: associated (aid 1)
janv. 26 20:04:59 raspberrypi hostapd[11693]: wlan0: STA 08:ed:b9:f8:7f:3b RADIUS: starting accounting session 56A7C33A-00000001
janv. 26 20:05:16 raspberrypi dnsmasq-dhcp[11700]: DHCPDISCOVER(wlan0) 192.168.77.127 08:ed:b9:f8:7f:3b
janv. 26 20:05:16 raspberrypi dnsmasq-dhcp[11700]: DHCPOFFER(wlan0) 192.168.77.127 08:ed:b9:f8:7f:3b
janv. 26 20:05:16 raspberrypi dnsmasq-dhcp[11700]: DHCPREQUEST(wlan0) 192.168.77.127 08:ed:b9:f8:7f:3b
janv. 26 20:05:16 raspberrypi dnsmasq-dhcp[11700]: DHCPACK(wlan0) 192.168.77.127 08:ed:b9:f8:7f:3b notebook

Je fais l’essai quand même pour voir.

Au passage j’ai augmenté la durée du sleep à 300 dans mon script.

Je viens d’essayer avec ce script et rien à faire.

# cat /etc/init.d/redemarrer_piratebox.sh 
#!/bin/sh

sleep 300

systemctl stop lighttpd && systemctl stop dnsmasq && systemctl restart piratebox

sleep 30
systemctl start lighttpd && systemctl start dnsmasq

exit 0

Ce script n’est pas au standard LSB, il manque notamment les en-têtes de description et dépendances.
T’es-tu contenté de le placer dans /etc/init.d/ ou bien l’as-tu “activé” avec [mono]update-rc.d[/mono] pour créer les liens symboliques qui seuls vont être exécutés au démarrage et à l’arrêt ? Sans cela, c’est comme s’il n’existait pas.

Ben non, je me suis contenté de le placer dans /etc/init.d/

Bon je vais me documenter et rectifier ça.

A+

Et ouais, c’est ce qu’il fallait faire. Ça marche merci.

Voici mon script :

cat /etc/init.d/redemarrer_piratebox 
#!/bin/sh
### BEGIN INIT INFO
# Provides: redemarrer_piratebox
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: stoppe lighttpd et dnsmasq et relance la piratebox pour que la clef wifi ait le temps de demarrer
# Description: This file should be used to construct scripts to be placed in /etc/init.d.
#
### END INIT INFO

systemctl stop lighttpd && systemctl stop dnsmasq && systemctl restart piratebox

exit 0

J’ai ensuite fait # update-rc.d redemarrer_piratebox defaults

Je me suis rendu compte que le sleep n’était pas nécessaire.

A+

Bonjour.

J’ai une question. Est-ce qu’à chaque fois que je modifie un fichier qui est dans init.d/ je suis obligé de relancer update-rc.d ?

A+

Seulement si on modifie l’en-tête LSB.

Bonjour.

Une autre question.

Lorsque je fais :

# systemctl show lighttpd.service 

j’obtiens un tas d’informations :

Type=simple Restart=no NotifyAccess=none RestartUSec=100ms TimeoutStartUSec=1min 30s TimeoutStopUSec=1min 30s WatchdogUSec=0 WatchdogTimestampMonotonic=0 StartLimitInterval=10000000 StartLimitBurst=5 etc…

Pourtant, quand je regarde dans le script /etc/init.d/lighttpd ou bien dans /etc/lighttpd/lighttpd.conf je ne trouve rien de tout ça.

J’ai vu sur cette page wiki.freedesktop.org/www/Softwa … orkTarget/ que je pouvais, à la place de faire un script comme je l’ai fait, internenir directement dans les scripts existants lighttpd et dnsmasq. Du coup je me demande où je dois mettre ces lignes…

A+