Apparence
Uubu.fr

Les systèmes Linux, l’open source, les réseaux, l’interopérabilité, etc.
« Il vaut mieux viser la perfection et la manquer que viser l’imperfection et l’atteindre. » (Bertrand Arthur William RUSSEL)
05 septembre 2015

htmlpdflatexmanmd




ld.so

ld.so, ld-linux.so

loader/linker dynamique

   Le linker dynamique peut être lancé soit indirectement par un programme lié dynamiquement ou une librairie, ou directement en exécutant:

  /lib/ld-linux.so.* [OPTIONS] [PROGRAM [ARGUMENTS]]

   les programmes ld.so et ld-linux.so* trouvent et chargent les librairie nécessaires à un programme, préparent le programme et le lance.

   Les binaires linux nécessitent une liaison dynamique sauf si l'option -static a été donné à ld(1) durant la compilation.

   Le programme ld.so manipule les binaires a.out, un format utilisé depuis longtemps, ld-linux.so* manipulent les formats ELF (/lib/ld-linux.so.1 pour libc5, /lib/ld-linux.so.2 pour glibc2), qui sont utilisés depuis de nombreuses années. Sinon, les 2 ont le même comportement, et utilisent les même fichiers et programmes ldd(1), ldconfig(8), et /etc/ld.so.conf

   En résolvant les dépendances de librairies, le linker inspecte d'abord chaque chaîne de dépendance pour voir s'il contient un slash (cela se produit si un chemin de librairie contenant des '/' a été spécifié au moment du lien). Si un slash est trouvé, la chaîne de dépendance est interprété comme chemin (relatif ou absolu), et la librairie est chargée en utilisant ce chemin.

   Si une dépendance de librairie ne contient pas de '/', elle recherché dans l'ordre suivant:

- (ELF uniquement) Utiliser les répertoires spécifiés dans l'attribut de section dynamique DT_RPATH du binaire si présent et que l'attribut DT_RUNPATH n'existe pas. L'utilisation de DT_RPATH est déprécié
- Utilise la variable d'environnement LD_LIBRARY_PATH. Excepté si l'exécutable est un binaire set-user-ID/set-group-ID, auquel cas il est ignoré
- (ELF uniquement) Utilise les répertoires spécifiés dans l'attribut de section dynamique DT_RUNPATH du binaire si présent
- depuis le fichier de cache /etc/ld.so.cache, qui contient une liste compilée de librairies candidat précédemment trouvé. Si, cependant, le binaire a été lié avec l'option du linker -z nodeflib, les librairies dans les chemins par défaut sont sautés.
- Dans le chemin par défaut /lib, puis /usr/lib. Si le binaire a été lié avec -z nodeflib, cette étape est sauté

Expansion de token rpath

   ld.so comprend certaines chaîne dans une spécification rpath (DT_RPATH ou DT_RUNPATH); ces chaînes sont substituées comme suit:

$ORIGIN ou ${ORIGIN} Étend au répertoire contenant l'exécutable de l'application. Donc, une application localisée dans somedir/app pourrait être compilé avec gcc -Wl,-rpath,'$ORIGIN/../lib' pour qu'il trouve une librairie partagée dans somedir/lib peut importe où se trouve somedir.
$LIB ou ${LIB} S'étends à lib ou lib64 en fonction de l'architecture.
$PLATFORM ou ${PLATFORM} s'étends à la chaîne correspondant au type de processeur du système hôte (ex: X86_64). Dans certaines architectures, le kernel linux ne fournis pas un telle chaîne.

OPTIONS

--list Liste toutes les dépendances et comment elles sont résolues
--verify Vérifie que le programme est lié dynamiquement et que ce linker peut le gérer.
--library-path PATH Utilise le PATH spécifié au lieu de la variable LD_LIBRARY_PATH
--inhibit-rpath LIST Ignore les information RPATH et RUNPATH dans les noms d'objet dans LISTE.
--audit LIST Utilise les objets nommés dans LIST comme auditeurs.

Capacités hardware

   Certaines librairies sont compilées en utilisant des instructions spécifiques au hardware qui n'existe pas sur tous les CPU. De telles librairies devraient être installée dans des répertoires dont le nom définis les capacités hardware, tel que /usr/lib/sse2/. Le linker dynamique vérifie ces répertoires avec le hardware de la machine et sélectionne la version la plus appropriée de la librairie donnée. Les répertoire de capacité hardware peuvent être hiérarchisés pour combiner les fonctionnalités CPU. La liste des noms de capacités hardware supportée dépend du CPU. Les noms suivant sont actuellement reconnus:

Alpha ev4, ev5, ev56, ev6, ev67
MIPS loongson2e, loongson2f, octeon, octeon2
PowerPC 4xxmac, altivec, arch_2_05, arch_2_06, booke, cellbe, dfp, efpdouble, efpsingle, fpu, ic_snoop, mmu, notb, pa6t, power4, power5, power5+, power6x, ppc32, ppc601, ppc64, smt, spe, ucache, vsx
SPARC flush, muldiv, stbar, swap, ultra3, v9, v9v, v9v2
s390 dfp, eimm, esan3, etf3enh, g5, highgprs, hpage, ldisp, msa, stfle, z900, z990, z9-109, z10, zarch
x86 (32-bit only) acpi, apic, clflush, cmov, cx8, dts, fxsr, ht, i386, i486, i586, i686, mca, mmx, mtrr, pat, pbe, pge, pn, pse36, sep, ss, sse, sse2, tm

Variables d'environnement

LD_ASSUME_KERNEL glibc ›= 2.2.3. Force le linker dynamique à assumer qu'il fonctionne sur un système avec une version ABI kernel différent.
LD_BIND_NOT glibc ›=2.2. Ne met pas à jour le Global Offset Table et la Procedure Linkage Table en résolvant un symbole.
LD_BIND_NOW glibc ›=2.1.1. Si non vide, le linker dynamique résous tous les symboles au démarrage au lieu de déférer les appels de fonction au moment ou il sont référencé la première fois.
LD_LIBRARY_PATH Liste de répertoire dans lequel rechercher les librairies ELF au moment de l'exécution. Ignoré pour les programmes set-user-ID et set-group-ID
LD_PRELOAD Une liste de librairies partagées ELF additionnels à charger avant toutes les autres.
LD_TRACE_LOADED_OBJECTS ELF uniquement. non vide, force le programme à lister ses dépendance comme lancé par ldd, au lieu de se lancer normalement
LD_AOUT_LIBRARY_PATH (libc5) Version de LD_LIBRARY_PATH pour les binaires a.out
LD_AOUT_PRELOAD (libc5) Version de LD_PRELOAD pour les binaires a.out
LD_AUDIT glibc ›=2.4. Liste d'objets partagé à charger avec tous les autres dans un espace de nom de linker séparé.
LD_BIND_NOT glibc ›=2.1.95. ne met pas à jours GOT et PLT après avoir résolus un symbole
LD_DEBUG glibc ›=2.1. Mode verbeux du linker dynamique. (all ou help).
LD_DEBUG_OUTPUT glibc ›=2.1. Fichier dans lequel écrit la sortie LD_DEBUG (défaut: l'erreur standard)
LD_DYNAMIC_WEAK glibc ›=2.1.91. Autorise à écraser les symboles faibles (revenir à l'ancien comportement glibc)
LD_HWCAP_MASK glibc ›=2.1. Masque pour les capacités hardware.
LD_KEEPDIR (libc5). N'ignore pas le répertoire dans les noms des librairies a.out à charger.
LD_NOWARN (libc5).Supprime les alertes sur les librairie a.out avec des numéros de version mineur incompatible.
LD_ORIGIN_PATH glibc ›=2.1. Chemin œu le binaire est trouvé
LD_POINTER_GUARD glibc ›=2.4. À 0, désactive le pointer guarding, sinon l'active.
LD_PROFILE glibc ›=2.1. Le nom d'un simple objet partagé à profiler.
LD_PROFILE_OUTPUT glibc ›=2.1. Répertoire où la sortie LD_PROFILE doit être écrite.
LD_SHOW_AUXV glibc ›=2.1. Affiche un tableau auxiliaire passé par le kernel.
LD_USE_LOAD_BIAS Non définis, les exécutables et objets partagés pré-liés honorent les adresses de base de leur librairies et les PIE et autres objets partagé ne les honore pas. Si définis, tous les honorent. À 0 aucun de les honorent.
LD_VERBOSE glibc ›=2.1. Si non vide, affiche les informations de versionning de symbole sur le programme si LD_TRACE_LOADED_OBJECTS a été mis.
LD_WARN ELF, glibc ›=2.1.3. non vide, alerte sur les symboles non-résolus
LDD_ARGV0 libc5. argv[0] est utilisé par ldd quand aucun n'est présent.

Fichiers

/lib/ld.so linker/loader dynamique a.out
/lib/ld-linux.so.{1,2} linker/loader dynamique ELF
/etc/ld.so.cache Fichier contenant une liste compilée de répertoires dans lesquels rechercher les librairies et une liste ordonnées de librairies candidates.
/etc/ld.so.preload Fichier contenant une liste de librairies partagées ELF à charger avant le programme.
lib*.so* Librairies partagées.
^
05 septembre 2015

htmlpdflatexmanmd




ldconfig

ldconfig

Configure les liaisons dynamiques

   ldconfig créé les liens et caches nécessaires pour trouver les libraires dans les répertoires spécifiés, dans le fichier /etc/ld.so.conf, et dans les répertoire de confiance /lib et /usr/lib. Le cache est utilisé par le linker run-time, ld.so. ldconfig vérifie les en-têtes et noms de fichier des librairies qu'il rencontre.

OPTIONS

-v mode verbeux
-n  Ne traite que les répertoires spécifiés sur la ligne de commande, et non /lib et /usr/lib. Implique -N
-N Ne reconstruit pas le cache. Sauf si -X est également spécifié, les liens sont mis à jours
-X Ne met pas à jours les liens. reconstruit le cache sauf si -N est spécifié.
-f conf Utiliser le fichier spécifié au lieu de /etc/ld.so.conf
-C cache Utilise le cache spécifié au lieu de /etc/ld.so.cache
-r root Change et utilis root comme répertoire root
-l mode librairie. Lie manuellement les librairies.
-p Affiche les listes de répertoires candidat dans le cache courant.
^
05 septembre 2015

htmlpdflatexmanmd




pldd

pldd

afficher les objets partagés liés dynamiquement dans un processus

   pldd affiche une liste d'objets partagés dynamiquement qui sont liés dans le processus spécifié par son PID. Cette liste inclus les librairies qui ont été chargées dynamiquement en utilisant dlopen(3).

^
05 septembre 2015

htmlpdflatexmanmd




ldd

ldd

Afficher les dépendances de librairie partagées

   ldd affiche les librairies partagées par chaque programme ou librairie partagées sur la ligne de commande. Normalement, ldd invoque le linker dynamique standard (ld.so) avec la variable d'environnement LD_TRACE_LOADED_OBJECTS à 1, qui force le linker à afficher les dépendances de librairie. Cependant, sous certaines circonstances, certaines versions de ldd peuvent tenter d'obtenir les informations de dépendances directement en exécutant le programme. Donc, ne jamais employer ldd sur un exécutable non fiable, ce qui pourrait résulter dans l'exécution de code arbitraire. Une alternative plus sûre est d'utiliser:objdump -p /path/to/program | grep NEEDED

OPTIONS

-v, --verbose Affiche toutes les informations, incluant le versionning de symboles
-u, --unused Affiche les dépendances directes non utilisées.
-d, --data-relocs Affiche les relocations pour les objets de données et les fonctionne, et reporte les objets ou fonctions manquantes
^
17 juillet 2010

htmlpdflatexmanmd




Format d'entrée de date

Format d'entrée de date

Syntaxe du format de date

Syntaxe générale de date

   une date est une chaîne, qui peut être vide, contenant plusieurs items séparés avec un espace blanc. Une date peut contenir:

        - date de calendrier
        - heure du jour
        - time zone
        - jour de la semaine
        - iems relatifs
        - nombres

   Quelques nombres peuvent être écris en mot:

        last vaut -1
        this vaut 0
        first, next valent 1
        third pour 3
        fourth pour 4
        fifth pour 5
        sixth pour 6
        seventh pour 7
        eighth pour 8
        ninth pour 9
        tenth pour 10
        eleventh pour 11
        twelfth pour 12

   Dans l'implémentation actuelle, seul l'Anglais est supporté pour les mots et abbréviations comme AM, DST, EST, first, january, sunday, tomorrow et year.

Date de calentrier et TimeZone

Une date de calendrier spécifie un jour de l'année. Elle est spécifiée différemment, si le mois est indiqué numériquement ou littéralement. Toutes ces chaînes spécifient la même date de calendrier:
1972-09-24
72-9-24
72-09-24
9/24/72
24 September 1972
24 Sept 72
24 Sep 72
Sep 24, 1972
24-sep-72
24sep72
L'année peut également être omise. Dans ce cas, la dernière année spécifiée est utilisée, sinon l'année courante. Exemple
9/24
sep 24

   pour les mois numérique, le format ISO 8601 YEAR-MONTH-DAY est permis. La construction MONTH/DAY/YEAR, populaire aux USA est accepté. Les mois peuvent être spécifiés par leur nom : 'January', 'February','March', 'April', 'May', 'June', 'July', 'August', 'September','October', 'November', 'December'. On peut utiliser leur abréviation (les 3 premières lettres).

Quand les mois sont spécifiés ainsi, la date de calendrier peut être spécifié comme suit
DAY MONTH YEAR
DAY MONTH
MONTH DAY YEAR
DAY-MONTH-YEAR
ou omettre l'année
MONTH DAY

Heure du jour

Quelques exemples:
20:02:00.000000
20:02
8:02pm
20:02-0500 # In EST (U.S. Eastern Standard Time).

   Plus généralement, le temps peut être donné en HOUR:MINUTE:SECOND, et optionnellement suivi par un '.' ou ',' et une fraction contenant un ou plusieurs chiffres. SECOND peut être omis. Si le temps est suivi par 'am' ou 'pm', HOUR est restreint entre 1 et 12.

  L'heure peut être suivie par un time zone exprimé par SHHMM, où S vaut '+' ou '-', HH Est le nombre d'heures de la zone, et MM est le nombre de minutes de la zone (peut être omis).

Jour de la semaine

   La mention du jour de la semaine va renvoyer la date pour atteindre ce jours de la semaine dans le future. Les jours de la semaine peuvent être écris : 'Sunday', 'Monday','Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'. Leur abréviation peut être utilisé (3 premières lettres). Un nombre peut précéder le jour de la semaine pour spécifier un jour antérieur, comme third monday. Dans ce contexte, 'last DAY' ou 'next DAY' sont aussi acceptable.

Items relatifs

Quelques exemples:
1 year
1 year ago
3 years
2 days

   il est possible d'utiliser 'fortnight' pour 14 jours, week pour 7 jours, day pour 24 heures, hour pour 60 minutes, minute ou min pour 60 secondes et second ou sec. Un suffixe 's' est accepté et ignoré. L'unité de temps peut être précédée par un multiplicateur, un nombre signé. pour spécifié un temps antérieur, ajouter ago.

  Ainsi tomorrow est équivalent à day et yesterday est équivalent à day ago. Les chaînes now et today correspondent à aucun déplacement de temps. Ils peuvent être utilisés par exemple: "10:00 today". La chaîne this à la même signification, par exemple: this thursday.

Secondes depuis the Epoch

   Si vous précédez un nombre avec '@', il représente un compteur de seconde interne. the epoch correspond au 1970-01-01 00:00:00 UTC. Il est possible de spécifier des valeurs négatives. Les systèmes 32-bits peuvent représenter le temps de 1901-12-13 20:45:52 à 2038-01-19 03:14:07 UTC. Les systèmes plus modernes utilise un compteur 64-bits.

Spécifier les règles de TimeZone

   Normalement les dates sont interprétées en utilisant les règles de time zone courant, qui sont spécifiées par la variable d'environnement TZ ou par le systéme par défaut si TZ n'est pas définie.

exemple: quelle heure est-il à New York quand il est 6:30 à Paris le 31 octobre 2004, en utilisant une date commençant par TZ="Europe/Paris":
export TZ="America/New_York"
date --date='TZ="Europe/Paris" 2004-10-31 06:30'
Sun Oct 31 01:30:00 EDT 2004
^
14 juillet 2010

htmlpdflatexmanmd




arch

arch

Afficher le nom hardware de la machine

   arch affiche le nom hardware de la machine, est équivalent à uname -m

^
14 juillet 2010

htmlpdflatexmanmd




date

date

Affiche ou définit la date du système

   date affiche ou définit la date du système, invoqué sans format de date revient à l'invoquer avec un format par défaut que dépend de LC_TIME Normalement, date utilise les règles de temps indiqué par TZ, ou les règles par défaut du système si TZ n'est pas utilisé. Si un argument commence par +, date affiche la date courante ( ou la date spécifié par l'option --date) dans le format spécifié par l'argument, qui est similaire à la fonction strftime. Excepté pour les spécifieurs de conversion qui commence avec %, les caractères sont affichés tels quels.

Spécifieurs de conversion de temps

%H heure ('00'...'23')
%I heure ('01'...'12')
%k heure ('0'...'23')
%l heure ('1'...'12')
%M minute ('00'...'59')
%N nanosecondes (`000000000'...`999999999')
%p équivalent local à AM ou PM. vide dans beaucoup de locales
%P Idem mais en minuscule
%r heure locale sur 12 heures
%R identique à %H:%M
%s seconde depuis le 1.1.1970
%S Secondes (`00'...`60')
%T identique à %H:%M:%S
%X représentation de l'heure locale.
%z time RFC 2822. Zone en style numérique. ex: +0200. ou rien si le time zone ne peut pas être déterminé.
%:z RFC 3339. Zone en style numérique. ex: +02:00. ou rien si le time zone ne peut pas être déterminé.
%::z time zone à la plus proche seconde. ex: +02:00:00, ou rien si le time zone ne peut pas être déterminé.
%:::z time zone utilisant le précision minimal nécessaire, ou rien si le time zone ne peut pas être déterminé.
%Z abbréviation du time zone, ou rien si le time zone ne peut pas être déterminé.

Spécifieurs de conversion de date

%a Abréviation du nom du jour de la semaine
%A Nom du jour de la semaine
%b Abréviation du nom du mois
%B Nom du mois
%c Date et heure locale
%C siècle. Identique à %Y mais sans les 2 dernier chiffres.
%d Jour du mois
%D identique à %m/%d/%y
%e jour du mois, identique à %_d
%F Date au format iso 8601. identique à %Y-%m-%d
%g Année, sans le siècle.
%G Année, identique à %Y
%h identique à %b
%j jour de l'année
%m mois
%u jour de la semaine ('1'...'7') 1 correspond à lundi
%U semaine de l'année
%V semaine ISO de l'année. Si la semaine du 1er Janvier à au moins 4 jours dans la nouvelle année, c'est la semaine 1 de la nouvelle année, sinon la 53eme semaine de l'année précédente.
%w jour de la semaine ('0'...'6') 0 correspond à dimanche
%W semaine de l'année avec lundi comme premier jour de la semaine
%x date locale, identique à %d/%m/%Y
%y 2 derniers chiffres de l'année.
%Y année

Spécifieurs de conversion litéral

%% un %
%n newline
%t tabulation horizontale

Padding et autres flags

   date remplis normalement les champs par des 0

- Ne remplis pas les champs par des 0.
_ Remplis avec des espaces
0 remplis avec des 0
^ met les caractères en majuscule si possible
# oppose la casse si possible.
0 Ce chiffre permet de spécifier la largeur du champs

Régler l'heure du système

   Si un argument ne commence pas par +, date définis le temps du système. Les options --date et --set ne peuvent pas être utilisés avec cet argument. --universal peut être utilisé pour indiquer que l'heure est relative à UTC au lieu de du time zone local

MM mois
DD jour dans le mois
hh heure
mm minutes
CC 2 premiers chiffres de l'année
YY 2 derniers chiffres de l'année
ss secondes

OPTIONS

-d DATESTR, --date=DATESTR affiche la date et l'heure spécifié par DATESTR au lieu de l'heure courante. DATESTR peut être de plusieurs formes. Il contient le nom des mois, time zone, am et pm, yesterday etc...
-f DATEFILE, -file=DATEFILE utilise chaque ligne du fichier et affiche la date et l'heure comme pour -d. si DATE vaut '-', utilise l'entrée standard.
-r FILE, --reference=FILE affiche la date et l'heure du mtime du fichier spécifié.
-R, --rfc-822, --rfc-2822 Affiche la date et l'heure en utilisant le format %a, %d %b %Y %H:%M:%S%z
--rfc-3339=TIMESPEC Affiche la date en utilisant un format spécifié par la RFC 3339. Ce format est toujours utilisatable par -d et -f. TIMESPEC peut être:

        date Affiche juste la date complète, identique à %Y-%m-%d
        seconds affiche la date complète et l'heure complète séparé par un espace. Identique à %Y-%m-%d %H:%M:%S%:z
        ns idem, mais affiche les nanosecondes. identique à %Y-%m-%d %H:%M:%S.%N%:z

-s DATESTR, --date=DATESTR Définit la date et l'heure à DATESTR.
-u, --utc, --universal Utilise UTC

Exemples

affiche la date d'il y'a 2 jours:
date --date='2 days ago'
Affiche la date d'il y'a 3mois et 1 jour:
date --date='3 months 1 day'
Affiche le jour de noêl:
date --date='25 Dec' +%j
Affiche le nom du mois et le jour courant:
date '+%B %d'
afficher la date et l'heure sans remplir de 0:
date -d 1may '+%B %-d'
définis l'heure système en la reculant de 2 minutes:
date --set='+2 minutes'
Convertir une date en nombre de secondes depuis le 1/1/1970:
date --date='1970-01-01 00:02:00 +0000' +%s
^
14 juillet 2010

htmlpdflatexmanmd




uname

uname

Affiche des informations dur la machine et le système d'exploitation

   uname affiche des informations sur la machine et le système d'exploitation. Sans options, uname agit comme uname -s. Si plusieurs options ou -a sont donnés, les informations sont affichés dans l'ordre:

  KERNEL-NAME NODENAME KERNEL-RELEASE KERNEL-VERSION MACHINE PROCESSOR HARDWARE-PLATFORM OPERATING-SYSTEM

OPTIONS

-a, --all affiche toutes les informations, excèpté le type de processeur et le nom hardware.
-i, --hardware-plateform Affiche le nom de la plateforme hardware.
-m, --machine Affiche le nom hardware de la machine
-n, --nodename Affiche le hostname
-p, --processor Affiche le type de processeur
-o, --operating-system Affiche le nom du système d'exploitation
-r, --kernel-release affiche la version du kernel
-s, --kernel-name Nom du kernel
-v, --kernel-version Affiche la version du kernel
^
14 juillet 2010

htmlpdflatexmanmd




hostid

hostid

Affiche l'id de l'hôte

   hostid affiche l'identifiant numérique de l'hôte courant. Sur ce système, cette valeur est proche de l'adresse Internet du système, mais ce n'est pas toujours le cas

^
14 juillet 2010

htmlpdflatexmanmd




uptime

uptime

Affiche l'utilisation du système

   uptime affiche l'heure courante, le nombre d'utilisateurs loggés, et la charge moyenne. Si un fichier est spécifié, uptime lis ce fichier pour voir le nombre d'utilisateurs loggés.