Contenu | Rechercher | Menus

Annonce

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.

À propos de l'équipe du forum.

#1 Le 09/07/2017, à 11:56

Z145746

ls -l lien symbolique

Bonjour à tous,

J'ai fais un tour dans /sbin et j'ai vu des liens symboliques vers le même programme avec des actions différentes:

lrwxrwxrwx  1 root root        14 sept. 29  2016 halt -> /bin/systemctl*
lrwxrwxrwx  1 root root        14 sept. 29  2016 poweroff -> /bin/systemctl*
lrwxrwxrwx  1 root root        14 sept. 29  2016 reboot -> /bin/systemctl*
lrwxrwxrwx  1 root root        14 sept. 29  2016 runlevel -> /bin/systemctl*
lrwxrwxrwx  1 root root        14 sept. 29  2016 shutdown -> /bin/systemctl*
lrwxrwxrwx  1 root root        14 sept. 29  2016 telinit -> /bin/systemctl*

Ce sont des arguments qui ont été mis lors de leur création et que ls -l n'affiche pas? Sinon comment pourrais-je voir ces arguments, style reboot -> /bin/systemctl reboot*?

Merci d'avance.
Cdlt.

Hors ligne

#2 Le 09/07/2017, à 12:48

f.x0

Re : ls -l lien symbolique

Bonjour Z145746,

pour lister les liens symboliques de /sbin
tapes

ls -F /sbin | grep '@'

si tu veux afficher tous les liens dans /sbin avec affichage de la cible et de la source
tapes

find /sbin -type l -lname '*' -exec bash -c 'echo -e "\n$1"; ls -la "$1"' _ '{}' \; 2>/dev/null

si tu veux afficher tous les liens vers systemctl dans /sbin avec affichage de la cible et de la source
tapes

find /sbin -type l -lname '*' -exec bash -c 'echo -e "\n$1"; ls -la "$1"' _ '{}' \; 2>/dev/null | grep systemctl

Dernière modification par f.x0 (Le 09/07/2017, à 12:50)


SOPI

Hors ligne

#3 Le 09/07/2017, à 12:54

seebz

Re : ls -l lien symbolique

Sauf erreur de ma part, il n'y a pas d'argument avec un lien symbolique.

Par contre, le binaire systemctl doit être en mesure de savoir quelle commande l'a exécuté.
Ainsi, il sait que c'est la commande reboot (par exemple) qui a été exécutée...

... un peu comme la variable $0 dans un script bash.

Hors ligne

#4 Le 09/07/2017, à 13:00

Toobuntu

Re : ls -l lien symbolique

f.x0

Est-ce que tu peux m'expliquer ce que tu fais avec : -exec bash ?

C'est peut être la solution qu'il me faut.

Dernière modification par Toobuntu (Le 09/07/2017, à 13:01)

#5 Le 09/07/2017, à 13:10

f.x0

Re : ls -l lien symbolique

cela sert à chainer  2 commandes (ou plus si besoin) dans find

find . -name fichier  -exec commande1 {} \; -exec commande2 {} \; 

est équivalent à

find . -name fichier  -exec bash -c "commande1 {} ; commande2 {} " \; 

Dernière modification par f.x0 (Le 09/07/2017, à 13:11)


SOPI

Hors ligne

#6 Le 09/07/2017, à 13:25

Toobuntu

Re : ls -l lien symbolique

ok, merci smile

#7 Le 09/07/2017, à 13:30

f.x0

Re : ls -l lien symbolique

De rien, en + il faut savoir que dans certains cas -exec bash -c
est indispensable pour que cela fonctionne mais je ne sais pas pour quelle raison ...


SOPI

Hors ligne

#8 Le 09/07/2017, à 13:32

Toobuntu

Re : ls -l lien symbolique

Tu envois les erreurs dans le néant avec le 2, c'est le stderr ?

Dernière modification par Toobuntu (Le 09/07/2017, à 13:32)

#9 Le 09/07/2017, à 13:34

Toobuntu

Re : ls -l lien symbolique

-c     Execute the program with an empty (cleared) environment

#10 Le 09/07/2017, à 13:37

f.x0

Re : ls -l lien symbolique

Toobuntu a écrit :

Tu envois les erreurs dans le néant avec le 2, c'est le stderr ?

oui c'est plus exploitable et plus rapide en affichage



Toobuntu a écrit :

-c     Execute the program with an empty (cleared) environment

Cool, merci cela explique certaines erreurs sans cette option   cool


SOPI

Hors ligne

#11 Le 09/07/2017, à 16:00

Z145746

Re : ls -l lien symbolique

Le coup du $0 je n'y avais pas pensé. C'est génial. Merci.

Hors ligne

#12 Le 09/07/2017, à 16:30

Z145746

Re : ls -l lien symbolique

On dirait que systemctl à été programmé autour de cette utilisation.

https://github.com/systemd/systemd/blob … ystemctl.c
argv[0] => Nom de l'appelant

Cf: https://unix.stackexchange.com/question … avior?rq=1

Hors ligne