Aller au contenu

Featured Replies

Posté(e)

Bonjour,

J'ai un problème, sur un DS 214play neuf, pour faire éxécuter le fichier /etc/rc.local.

Ce fichier n'existait pas à l'origine, je l'ai donc créé avec vi pour y mettre des commandes mount --bind.

Je suis sûr de mes commandes car elles passent à la main, mais ne sont pas éxécutées au démarrage.

Ce que j'ai essayé :

- Droits d'éxécution sur le fichier (chmod +x /etc/rc.local)

- Ajout de #!/bin/sh au début

- Ajout d'une commande plus simple (touch /volume1/files/test) pour tester l'éxécution. Ca ne fonctionne pas, le fichier n'est pas créé.

Mais maintenant, je suis paumé, je ne comprends pas pourquoi mon rc.local ne s'éxécute pas.

Modifié par sebbat

Posté(e)

Pourquoi chercher à passer par ce fichier "rc.local" (et par quel miracle sa seule présence ferait qu'il soit exécuté "magiquement" au boot) alors qu'il existe une manière supportée et documentée de mettre en place des scripts perso de démarrage?

C'est expliqué dans le le "guide des développeurs tiers" téléchargeable ici: , page 58:

Run Scripts When the System Boots
If you would like to run scripts when the system is booting or shutting down, you can write scripts in start-stop-status. This script will be executed with the “start” or “stop” parameter, under the condition that the package is enabled. If you would like a script to be executed during the booting or shutting down process, you can put a startup script in /usr/local/etc/rc.d/. Following are the rules for the startup script:

  • It must contain the suffix “.sh”. For example, “myprog.sh”.
  • The permission must be 755.
  • It must contain the options “start” and “stop”. When the system boots up, it will call “myprog.sh start”;
    when it shuts down, it will call “myprog.sh stop”.
You can refer to the scripts in /usr/syno/etc/rc.d/, which are scripts of Synology’s default services.


Suffit de faire comme expliqué

Modifié par CoolRaoul

Posté(e)
  • Auteur

Pourquoi chercher à passer par ce fichier "rc.local" (et par quel miracle sa seule présence ferait qu'il soit exécuté "magiquement" au boot) alors qu'il existe une manière supportée et documentée de mettre en place des scripts perso de démarrage?

Parceque l'utilisation du rc.local est un standard Linux (rien à voir avec de la magie donc) et que créer un script rc.d pour balancer deux commandes, c'est d'une part, destiné à démarrer des services (ce n'est pas ce que je fait) et d'autre part chercher à faire compliqué quand on peut faire simple.

Avec cette méthode, je vais donc devoir créer un faux script acceptant des arguments alors que je veut juste passer deux commandes mount.

Le fait est que cet article provient d'une doc pour développeurs alors que je cherche une solution du point de vue utilisateur.

Si je ne trouve pas la solution je passerait par la (merci pour la doc, du coup) mais c'est vraiment crade pour ce que je veut faire.

Edit : et en plus, il faut que ce script soit lié à un paquet actif. Vraiment pas ce qu'il me faut.

Modifié par sebbat

Posté(e)

Bon tant pis pour toi alors,

DSM n'exécute *pas* rc.local, la méthode que je te propose est éprouvée et pas du tout contraignante à mettre en ouvre

Tu débarques sur le forum sans même passer par la case "présentation", on te donne en quelques minutes en réponse à ta première question la solution supportée et recommandée par Synology avec les source vers la documentation officielle pour se voir répliquer que c'est "crade" :huh:

PS: au passage, "rc.local" n'est *pas* un standard Linux mais un standard BSD. Il est simplement supporté par certaines distrib Linux par compatibilité (cf: http://en.wikipedia.org/wiki/Init )

Modifié par CoolRaoul

Posté(e)
  • Auteur

Bon tant pis pour toi alors,

DSM n'exécute *pas* rc.local, la méthode que je te propose est éprouvée et pas du tout contraignante à mettre en ouvre

Tu débarques sur le forum sans même passer par la case "présentation", on te donne en quelques minutes en réponse à ta première question la solution supportée et recommandée par Synology avec les source vers la documentation officielle pour se voir répliquer que c'est "crade" :huh:

PS: au passage, "rc.local" n'est *pas* un standard Linux mais un standard BSD. Il est simplement supporté par certaines distrib Linux par compatibilité (cf: http://en.wikipedia.org/wiki/Init )

Je cherche simplement la méthode la plus adaptée, et utiliser un script start-stop pour envoyer une seule commande ne l'est pas pour moi. Il y a bien d'autres méthodes plus simple qui fonctionnent sur un synology, comme mettre le script dans /volume1/startup et configurer le support_startupd en conséquence, avant d'en arriver à utiliser ces scripts de boot qui sont fait pour les paquets incluant des services (d'où la doc pour devs).

Je me suis présenté il y a des années, lors de ma première inscription au forum et mon premier achat de Syno. Si le message n'y est plus, je n'y suis pour rien.

J'utilise rc.local depuis des années sur un DS212j, cela fonctionnait toujours, donc le plus probable est que quelque chose s'est passé entre DSM 4 et 5.

Le fichier /etc/rc montre bien

if [ -r /etc/rc.local ]; then
echo -n 'Starting local daemons:'
sh /etc/rc.local
fi
Je te remercie en tout cas pour ta réponse et désolé de t'avoir donné mon avis sur celle ci vu ta réaction. Merci également pour la précision en PS.
Posté(e)

Je cherche simplement la méthode la plus adaptée, et utiliser un script start-stop pour envoyer une seule commande ne l'est pas pour moi. Il y a bien d'autres méthodes plus simple qui fonctionnent sur un synology, comme mettre le script dans /volume1/startup et configurer le support_startupd en conséquence, avant d'en arriver à utiliser ces scripts de boot qui sont fait pour les paquets incluant des services (d'où la doc pour devs).

Je te garantis que cette méthode n'est pas réservée au services, on est nombreux à pratiquer ainsi.

Autre avantage, tout ce qui est sous "/usr/local" est présérvé lors des upgrades DSM

En outre me semble pas bien compliqué de déposer un script avec comme contenu:

#! /bin/sh
case $1 in
    "start")
        mount ....
    ;;
esac

Et c'est suffisant, absolument rien d'autre à faire!

J'utilise rc.local depuis des années sur un DS212j, cela fonctionnait toujours, donc le plus probable est que quelque chose s'est passé entre DSM 4 et 5.

Le fichier /etc/rc montre bien

if [ -r /etc/rc.local ]; then

echo -n 'Starting local daemons:'

sh /etc/rc.local

fi

Ah oui exact, j'avais oublié ça.

Dans ce cas je t'engage à aller consulter le contenu de "/var/log/upstart/rc.log" qui dans lequel est redirigé contient stdout/stderr lors de l'exécution de /etc/rc.

Tu auras peut-être l'explication de ce qui c'est passé

Modifié par CoolRaoul

Posté(e)

Je suis sûr de mes commandes car elles passent à la main, mais ne sont pas éxécutées au démarrage.

Elles passent a la main avec un systeme totalement demarre et un PATH etendu...

1) Verifier que le fichier rc.local est vraiment execute :

#!/bin/sh

# rc.local

/bin/echo "test rc.local" > /root/rclocal.log

2) Utiliser des chemins complets pour les commandes (/bin/mount), ou definir le PATH en debut de script

3) Verifier que les points de montages pour mount existent vraiment (les volumes risquent de ne pas etre montes au moment ou rc.local est execute)

Modifié par Fravadona

Posté(e)
  • Auteur

3) Verifier que les points de montages pour mount existent vraiment (les volumes risquent de ne pas etre montes au moment ou rc.local est execute)

C'est ce dernier point qui est le bon, je pense. Je viens de penser que le volume que j'essaye de monter (et sur lequel j'essaye de faire un touch) est un volume chiffré monté au démarrage. Je suppose qu'il n'est pas encore monté au moment ou rc.local est éxécuté.

Merci pour vos réponses.

Posté(e)

1) Verifier que le fichier rc.local est vraiment execute :

#!/bin/sh

# rc.local

/bin/echo "test rc.local" > /root/rclocal.log

Sur ce point, je pense que la consultation de "/var/log/upstart/rc.log" suffira à trouver ce qui coince

Posté(e)
  • Auteur

Sur ce point, je pense que la consultation de "/var/log/upstart/rc.log" suffira à trouver ce qui coince

C'est bien le montage du dossier chiffré qui n'est pas fait à ce moment la. Je vais utiliser ta méthode. L'argument de la conservation du script lors de l'upgrade aura au raison de mes "petits principes". Merci beaucoup pour votre aide, notamment sur les emplacements des logs.

Posté(e)

bonsoir,

peut etre que va réponse va etre complétement à coté de la plaque, mais si tu veux utiliser la commande mount, c'est bien pour monter une sorte de lecteur reseau.

si c'est le cas, il est possible de le faire directement via l'interface web dans file station, et meme d'indiquer s'il doit etre monté au démarage du nas...

Bonne soirée

Julien

Posté(e)

peut etre que va réponse va etre complétement à coté de la plaque, mais si tu veux utiliser la commande mount, c'est bien pour monter une sorte de lecteur reseau.

si c'est le cas, il est possible de le faire directement via l'interface web dans file station, et meme d'indiquer s'il doit etre monté au démarage du nas...

Pas exactement: il était question d'un "mount --bind", qui "mappe" un répertoire local en tant que point de montage.

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.