Pages : 1
#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
#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
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
-c Execute the program with an empty (cleared) environment
Cool, merci cela explique certaines erreurs sans cette option
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
Hors ligne
Pages : 1