Exécution script démarage

Bonjour à tous.

Voila plusieurs heures que je me prends la tête sur une manip qui je pense reste de simple.

Je m’explique. Je souhaite simplement exécuter deux lignes de commande au demarage de linux, a savoir celle ci :

cd /home/pi/webcams/mjpg-streamer/
mjpg_streamer -i “./input_uvc.so -y -r 320*240” -o " ./output_http.so -w ./www"

J’ai donc créé un fichier dans init.d appelé ServStream et j’ai inséré les ligne suivant dans le fichier

#!/bin/sh

# Placez ici des commandes à exécuter à chaque appel du script
echo 'Le script a été appelé !' 

# Le switch case ci-dessous permet de savoir si le système souhaite lancer ou arrêter le script (on le lance au démarrage et l'arrête à la fermeture du système)
case "$1" in
    start)
        # Placez ici les commandes à exécuter uniquement au lancement du script
        echo 'Le script a été lançé !' 
        cd /home/pi/webcams/mjpg-streamer/ 
        mjpg_streamer -i "./input_uvc.so -y -r 320*240" -o " ./output_http.so -w ./www"
    ;;

    stop)
        # Placez ici les commandes à exécuter uniquement à l'arrêt du script
        echo 'Le script a été arrêté !'         ;;

    *)
        # On indique ici comment utiliser le script, c'est dans le cas où le script est appelé sans argument ou avec un argument invalide
        echo 'Usage: /etc/init.d/ServStream{start|stop}'
        exit 1
    ;;
esac

exit 0

Ensuite je rentre la commande suivante :sudo chmod 755 /etc/init.d/helloworld
et rentre aussi cette commande : sudo update-rc.d helloworld defaults
J’obtiens les erreurs suivante : update-rc.d using depency based boot sequencing

Je test le script en tapant la commande service ServStream start et tout fonctionne correctement.

Je lance donc un reboot mais le script ne démarre pas. J’obtiens l’erreur suivante :
/etc/init.d/ServStream: 16 /etc/init.d/ServStream: mjpg_streamer : not found

Voila je désespère j’ai tout essayé. Une idée de pourquoi le script ne marche pas au démarrage

Merci à vous

[quote]…mjpg_streamer : not found…[/quote] La ligne de commande :which mjpg_streamerdevrait te donner le chemin absolu à spécifier pour pouvoir utiliser la commande [mono]mjpg_streamer[/mono] sur ton système.

NOTE : Un chemin absolu commence toujours par la [mono]racine[/mono] du système de fichiers. <=> [mono]/[/mono]

=======

[quote]… cd /home/pi/webcams/mjpg-streamer/ mjpg_streamer -i "./input_uvc.so -y -r 320*240" -o " ./output_http.so -w ./www" …[/quote]
Si le chemin absolu de la commande [mono]mjpg_streamer[/mono] est [mono]/usr/local/bin/mjpg_streamer[/mono] , ces deux lignes de commandes donc pourraient (devraient…) être remplacées par :

=======

Si la ligne de commande que tu as testé en utilisant ton compte personnel avait fonctionné, c’est que la variable [mono]PATH[/mono] de ton interpréteur de commande lui permettait de trouver les programmes et interprétait le [mono].[/mono] comme le chemin courant avant de lancer la commande.
Je te propose donc de la reformuler en spécifiant les chemins absolus des programmes et des fichiers utilisés, en te souhaitant qu’ils soient accessibles sur ton système quand cette commande sera lancée par le script.

Merci pour tes reponses rapide

J’ai donc rentré cette commande

/usr/local/bin/mjpg_streamer -i "/home/pi/webcams/mjpg-streamer/input_uvc.so -y -r 320*240" -o "/home/pi/webcams/mjpg-streamer/output_http.so -w /home/pi/webcams/mjpg-streamer/www"

La webcam ce lance bien mais le serveur web qui ce lance avec n’est pas accessible (comme si la commande était faite dans le mauvais répertoire)

J’ai re-testé

cd /home/pi/webcams/mjpg-streamer/ mjpg_streamer -i "./input_uvc.so -y -r 320*240" -o " ./output_http.so -w ./www"

Et la le serveur et la webcam tournent parfaitement

Une idée ?

Merci

Remarque, je suis allé un peu vite, car le message d’erreur ne parlait que de la commande [mono]mjpg_streamer[/mono], et je n’ai pas pris le temps de me renseigner sur la syntaxe attendue pour les paramètres de cette commande,
d’autant que je sais pas quel est le chemin absolu du programme [mono]mjpg_streamer[/mono] et que j’ai fait une supposition sur son chemin absolu ([mono]/usr/local/bin/mjpg_streamer[/mono]),
et il y a peut-être aussi une histoire de privilèges pour avoir les accès à la source et la cible utilisées par cette commande,
sans parler de l’interpréteur de commande utilisé ([mono]sh[/mono] pour le script et sans doute [mono]bash[/mono] pour l’émulateur de terminal).

=======
Histoire de savoir où sont tous ces fichiers, pourrais-tu me transmettre un copié/collé du retour des commandes suivantes,
(du prompt de départ avec la ligne de commande jusqu’au prompt de retour) ?

Merci.

Alors :

which mjpg-streamer /usr/local/bin/mjgp_streamer*

ls -l /home/pi/webcams/mjpg-streamer total 404 -rw-r--r-- 1 pi pi 102 mai 19 16:03 CHANGELOG -rwxr-xr-x 1 pi pi 14103 mai 19 16:06 input_file.so -rwxr-xr-x 1 pi pi 168236 mai 19 16:06 input_testpicture.so -rwxr-xr-x 1 pi pi 29981 mai 19 16:05 input_uvc.so -rw-r--r-- 1 pi pi 17987 mai 19 16:03 LICENSE -rw-r--r-- 1 pi pi 5107 mai 19 16:03 Makefile -rwxr-xr-x 1 pi pi 15610 mai 19 16:05 mjpg_streamer -rw-r--r-- 1 pi pi 15738 mai 19 16:03 mjpg_streamer.c -rw-r--r-- 1 pi pi 3617 mai 19 16:03 mjpg_streamer.h -rw-r--r-- 1 pi pi 9920 mai 19 16:05 mjpg_streamer.o -rwxr-xr-x 1 pi pi 20107 mai 19 16:05 output_file.so -rwxr-xr-x 1 pi pi 32038 mai 19 16:05 output_http.so -rwxr-xr-x 1 pi pi 14390 mai 19 16:05 output_udp.so drwxr-xr-x 13 pi pi 4096 mai 19 16:03 plugins -rw-r--r-- 1 pi pi 2631 mai 19 16:03 README drwxr-xr-x 2 pi pi 4096 mai 19 16:03 scripts -rwxr-xr-x 1 pi pi 4630 mai 19 16:03 start.sh -rw-r--r-- 1 pi pi 285 mai 19 16:03 TODO -rw-r--r-- 1 pi pi 2866 mai 19 16:03 utils.c -rw-r--r-- 1 pi pi 2399 mai 19 16:03 utils.h -rw-r--r-- 1 pi pi 1764 mai 19 16:05 utils.o drwxr-xr-x 2 pi pi 4096 mai 20 12:23 www

ls -l /home/pi/webcams/mjpg-streamer/input_uvc.so -rwxr-xr-x 1 pi pi 29981 mai 19 16:05 /home/pi/webcams/mjpg-streamer/input_uvc.so

ls -l /home/pi/webcams/mjpg-streamer/output_http.so -rwxr-xr-x 1 pi pi 32038 mai 19 16:05 /home/pi/webcams/mjpg-streamer/output_http.so

ls -l /home/pi/webcams/mjpg-streamer/www -rw-r--r-- 1 pi pi 107 mai 19 16:03 bodybg.gif -rw-r--r-- 1 pi pi 40289 mai 19 16:03 cambozola.jar -rw-r--r-- 1 pi pi 14531 mai 19 16:03 control.htm -rw-r--r-- 1 pi pi 8752 mai 19 16:03 example.jpg -rw-r--r-- 1 pi pi 318 mai 19 16:03 favicon.ico -rw-r--r-- 1 pi pi 233 mai 19 16:03 favicon.png -rw-r--r-- 1 pi pi 123 mai 19 16:03 fix.css -rwxr-xr-x 1 pi pi 2114 mai 19 16:03 functions.js -rw-r--r-- 1 pi pi 3099 mai 20 12:25 index.html -rw-r--r-- 1 pi pi 6361 mai 19 16:03 java_control.html -rw-r--r-- 1 pi pi 2548 mai 19 16:03 java.html -rw-r--r-- 1 pi pi 5429 mai 19 16:03 javascript.html -rw-r--r-- 1 pi pi 6270 mai 19 16:03 javascript_motiondetection.html -rw-r--r-- 1 pi pi 1620 mai 19 16:03 javascript_simple.html -rw-r--r-- 1 pi pi 302 mai 19 16:03 java_simple.html -rw-r--r-- 1 pi pi 72174 mai 19 16:03 jquery.js -rw-r--r-- 1 pi pi 2830 mai 19 16:03 jquery.rotate.js -rw-r--r-- 1 pi pi 2281 mai 19 16:03 JQuerySpinBtn.css -rw-r--r-- 1 pi pi 6880 mai 19 16:03 JQuerySpinBtn.js -rw-r--r-- 1 pi pi 3987 mai 19 16:03 jquery.ui.core.min.js -rw-r--r-- 1 pi pi 21090 mai 19 16:03 jquery.ui.custom.css -rw-r--r-- 1 pi pi 11435 mai 19 16:03 jquery.ui.tabs.min.js -rw-r--r-- 1 pi pi 2989 mai 19 16:03 jquery.ui.widget.min.js -rw-r--r-- 1 pi pi 17987 mai 19 16:03 LICENSE.txt -rw-r--r-- 1 pi pi 2962 mai 19 16:03 rotateicons.png -rw-r--r-- 1 pi pi 35 mai 19 16:03 sidebarbg.gif -rw-r--r-- 1 pi pi 1041 mai 19 16:03 spinbtn_updn.gif -rw-r--r-- 1 pi pi 1773 mai 19 16:03 static.html -rw-r--r-- 1 pi pi 329 mai 19 16:03 static_simple.html -rw-r--r-- 1 pi pi 1603 mai 20 12:36 stream2.html -rw-r--r-- 1 pi pi 3053 mai 19 16:03 stream.html -rw-r--r-- 1 pi pi 166 mai 19 16:03 stream_simple.html -rw-r--r-- 1 pi pi 5157 mai 19 16:03 style.css -rw-r--r-- 1 pi pi 2619 mai 19 16:03 videolan.html

Voila merci beaucoup

Merci pour les retours de commande.

Je pensais y trouver des attributs de droits ACL, mais non.
Le problème n’est pas là.

=======
Je n’ai pas vu de prompt de départ ni de retour dans les retours de commande que tu m’a transmis,
donc je suppose que tu lance la commande depuis le compte “pi”.

=======
Au cas où (Sait-on jamais…) :
La ligne de commande que je proposais est sur une seule ligne,
mais l’affichage dans ce forum la présente sur deux lignes.

As-tu entrée la commande que je te proposais sur une seule ligne ?

=======
Sinon, je ne vois pas du tout ce qui ne va pas.

Désolé. :confused:

Salut,

À savoir, si tu tournes sous [mono]Wheezy[/mono] ou une version légèrement antérieure, dans quel cas c’est [mono]sysvinit[/mono] qui est en charge.

Ton script est dépourvu d’une entête LSB, il ne respecte pas la normalisation.

Ensuite, sous [mono]Jessie[/mono], c’est [mono]systemd[/mono] qui a le monopole.

MicP oui j’ai mis sur une seul et même ligne

BelZéButh oui je tourne sur WHEEZY.

Je ne comprends pas le sysvinit . C’est quoi ?

Merci

SysVinit, c’est le système “classique” d’init, remplacé (pour ceux qui le veulent bien) par systemd depuis Jessie.

SysVinit, c’est la continuité de l’init d’UNIX système V (5 et pas vé) sorti en 1983.

D’accord. Mais je ne vois pas en quoi cela résous mon problème :slightly_smiling:

Je vois bien le script au démarrage ce lancer mais il le lance dans le mauvais emplacement

Pour ton problème spécifique, BelZéButh est beaucoup plus compétent que moi.

Il t’a demandé si tu étais sous Wheezy ou sur Jessie, parce qu’étant donné que les systèmes d’init sont différents,
la procédure pour obtenir ce que tu veux doit être totalement différente.