Contents
Apperçu
Formations préalables
Aucune! On a besoin ici seulement de pouvoir utiliser les commandes les plus de base dans le command line pour lire des fichiers.
Temps estimé
15 mins
Objectifs
Prendre connaissance de quelques fichiers utiles sous /proc
Savoir grosso-modo ce que représente le contenu d'un répertoire /proc/$num_pid/
- Prendre connaissance d'une série de fichiers intéressants dans le répertoire
- Interpréter quelques informations utiles et les situer dans un contexte de débuggage
Préparation des participant.e.s
Rien! On a seulement besoin d'avoir un ordinateur linux qui roule. On peut faire la formation sur un VPS au besoin.
Théorie, concepts et information
TL;DR: Un répertoire /proc/$num_pid contient des informations sur l'environnement et les ressources d'un processus.
Quand linux démarre un processus, un nouveau répertoire devient disponible sous /proc. /proc est un "méta filesystem" qui contient seulement de l'information dynamique et non du stockage.
L'information dans un répertoire /proc/$num_pid peut s'avérer super utile pour débugger certaines choses.
Sous /proc il y a également certains fichiers utiles qui peuvent donner de l'information sur le système plus large.
Pour plus de détails sur les fichiers qui se trouvent sous /proc, voir proc(5)
Exercices
Information système
Lister les paramètres qui ont été donnés au kernel lors du boot
Pour savoir comment un système a été démarré, on peut vérifier quels paramètres ont été donnés au kernel. Ça peut être utile par exemple si on tente de démarrer une option particulière dans grub et qu'on veut vérifier si on a bien passé les bons paramètres.
# cat /proc/cmdline BOOT_IMAGE=/vmlinuz-4.9.0-12-amd64 root=/dev/mapper/argos-root ro console=tty0 console=ttyS0,115200n8 rootdelay=6 quiet
Lister de l'information sur les CPUs, la mémoire système et les consoles actives
dans cpuinfo, on obtient de l'information sur chaque CPU disponible. Ce pseudo-fichier liste chaque "thread" comme un CPU dans le cas où le "hyperthreading" est activé.
# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 23 model name : Intel(R) Xeon(R) CPU E5405 @ 2.00GHz stepping : 10 microcode : 0xa07 cpu MHz : 1995.058 cache size : 6144 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 4 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_goo d nopl aperfmperf pni dtes64 monitor ds_cpl vmx tm2 ssse3 cx16 xtpr pdcm dca sse4_1 xsave lahf_lm kaiser tpr_shadow vnmi flexpriority dtherm bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multi hit bogomips : 3990.11 clflush size : 64 cache_alignment : 64 address sizes : 38 bits physical, 48 bits virtual power management: processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 23 model name : Intel(R) Xeon(R) CPU E5405 @ 2.00GHz stepping : 10 [...]
dans meminfo, on obtient de l'information détaillée sur la mémoire système
# cat /proc/meminfo MemTotal: 32945592 kB MemFree: 11181816 kB MemAvailable: 27908908 kB Buffers: 343300 kB Cached: 16628540 kB SwapCached: 1608 kB Active: 4609800 kB Inactive: 16078036 kB Active(anon): 3664708 kB Inactive(anon): 387800 kB Active(file): 945092 kB Inactive(file): 15690236 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 10239996 kB SwapFree: 10232500 kB Dirty: 1084 kB Writeback: 8 kB AnonPages: 3714808 kB Mapped: 87464 kB Shmem: 336512 kB Slab: 741952 kB SReclaimable: 562744 kB SUnreclaim: 179208 kB KernelStack: 4816 kB PageTables: 13744 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 26712792 kB Committed_AS: 19734244 kB VmallocTotal: 34359738367 kB VmallocUsed: 0 kB VmallocChunk: 0 kB HardwareCorrupted: 0 kB AnonHugePages: 0 kB ShmemHugePages: 0 kB ShmemPmdMapped: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 1692088 kB DirectMap2M: 31856640 kB
dans consoles on peut lister quelles sont les consoles présentement actives
# cat /proc/consoles ttyS0 -W- (EC p a) 4:64 tty0 -WU (E p ) 4:1
Information sur un processus en particulier
Dans les exercices plus bas, le processus inspecté changera selon les exemples pour donner un meilleur contexte aux exemples.
N'importe quel processus peut être investigué de la même façon.
Identifier les fichiers important
En premier, on va lister les fichiers pour voir quelle genre d'information est disponible:
# ls -l /proc/943526/ total 0 -r--r--r-- 1 username username 0 Oct 2 23:02 arch_status dr-xr-xr-x 2 username username 0 Oct 2 18:32 attr -rw-r--r-- 1 username username 0 Oct 2 23:02 autogroup -r-------- 1 username username 0 Oct 2 23:02 auxv -r--r--r-- 1 username username 0 Oct 2 23:02 cgroup --w------- 1 username username 0 Oct 2 23:02 clear_refs -r--r--r-- 1 username username 0 Oct 2 18:55 cmdline -rw-r--r-- 1 username username 0 Oct 2 23:02 comm -rw-r--r-- 1 username username 0 Oct 2 23:02 coredump_filter -r--r--r-- 1 username username 0 Oct 2 23:02 cpuset lrwxrwxrwx 1 username username 0 Oct 2 20:20 cwd -> /home/username -r-------- 1 username username 0 Oct 2 20:20 environ lrwxrwxrwx 1 username username 0 Oct 2 20:20 exe -> /usr/lib/firefox/firefox dr-x------ 2 username username 0 Oct 2 23:02 fd dr-x------ 2 username username 0 Oct 2 23:02 fdinfo -rw-r--r-- 1 username username 0 Oct 2 23:02 gid_map -r-------- 1 username username 0 Oct 2 23:02 io -r--r--r-- 1 username username 0 Oct 2 23:02 limits -rw-r--r-- 1 username username 0 Oct 2 23:02 loginuid dr-x------ 2 username username 0 Oct 2 20:20 map_files -r--r--r-- 1 username username 0 Oct 2 20:20 maps -rw------- 1 username username 0 Oct 2 23:02 mem -r--r--r-- 1 username username 0 Oct 2 18:08 mountinfo -r--r--r-- 1 username username 0 Oct 2 23:02 mounts -r-------- 1 username username 0 Oct 2 23:02 mountstats dr-xr-xr-x 62 username username 0 Oct 2 23:02 net dr-x--x--x 2 username username 0 Oct 2 23:02 ns -r--r--r-- 1 username username 0 Oct 2 23:02 numa_maps -rw-r--r-- 1 username username 0 Oct 2 23:02 oom_adj -r--r--r-- 1 username username 0 Oct 2 23:02 oom_score -rw-r--r-- 1 username username 0 Oct 2 23:02 oom_score_adj -r-------- 1 username username 0 Oct 2 23:02 pagemap -r-------- 1 username username 0 Oct 2 23:02 patch_state -r-------- 1 username username 0 Oct 2 23:02 personality -rw-r--r-- 1 username username 0 Oct 2 23:02 projid_map lrwxrwxrwx 1 username username 0 Oct 2 18:32 root -> / -rw-r--r-- 1 username username 0 Oct 2 23:02 sched -r--r--r-- 1 username username 0 Oct 2 23:02 schedstat -r--r--r-- 1 username username 0 Oct 2 23:02 sessionid -rw-r--r-- 1 username username 0 Oct 2 23:02 setgroups -r--r--r-- 1 username username 0 Oct 2 23:02 smaps -r--r--r-- 1 username username 0 Oct 2 23:02 smaps_rollup -r-------- 1 username username 0 Oct 2 23:02 stack -r--r--r-- 1 username username 0 Oct 2 20:20 stat -r--r--r-- 1 username username 0 Oct 2 23:02 statm -r--r--r-- 1 username username 0 Oct 2 18:55 status -r-------- 1 username username 0 Oct 2 23:02 syscall dr-xr-xr-x 74 username username 0 Oct 2 19:36 task -rw-r--r-- 1 username username 0 Oct 2 23:02 timens_offsets -r--r--r-- 1 username username 0 Oct 2 23:02 timers -rw-rw-rw- 1 username username 0 Oct 2 23:02 timerslack_ns -rw-r--r-- 1 username username 0 Oct 2 23:02 uid_map -r--r--r-- 1 username username 0 Oct 2 23:02 wchan
Il y a beaucoup de fichiers dans ce répertoire. La liste complète peut être investiguée en lisant la man page proc(5). Nous prendrons le temps ici de vérifier seulement quelques fichiers plus important.
Situer le processus et son environnement
Pour savoir qu'est-ce qui roule et où, on peut vérifier les fichiers root, exe et cwd. Ce sont trois liens symboliques qui pointent respectivement vers:
La racine du filesystem. Si jamais ça pointe sur qqch qui n'est pas /, c'est que le process roule sous un "chroot" !
- Le binaire ou script qui a été exécuté
- Le répertoire d'où le binaire ou script a été exécuté.
Dans certains cas de scripts malicieux sur les serveurs web, on peut découvrir grâce à ces liens symboliques là d'où sont originaire les scripts malicieux, et donc par exemple dans quel compte d'hébergement partagé il faut investiguer d'avantage.
En plus des liens symboliques mentionnés plus haut, on peut voir dans les fichiers textes (donc on peut les lire avec cat):
dans cmdline, les arguments de commande qui ont été passés au programme
les arguments sont séparés par des caractères nuls (valeur 0), donc on peut utiliser tr pour transformer ceux-ci en espaces pour rendre le contenu plus facile à lire.
cat /proc/1028036/cmdline | tr '\0' ' ' ssh spartan.koumbit.net cat /proc/849532/cmdline | tr '\0' ' ' qmgr -l -t fifo -u
dans environ, on peut consulter les variables d'environnement qui ont été données au processus lors du démarrage
- encore une fois, les différentes variabled d'environnement sont séparés par des caractères nuls. Dans ce cas-ci pour rendre le contenu plus lisible on peut les transformer en fin de ligne pour avoir une variable d'environnement par ligne
certaines variables d'environnement peuvent contenir des caractères "non imprimables" qui pourraient faire des choses étranges sur votre terminal (par exemple ici les variables LESS_TERMCAP_* faisaient changer la couleur du texte de mon terminal.
$ cat /proc/1028036/environ | tr '\0' '\n' | sort BLACK=30 BLUE=34 CLUTTER_IM_MODULE=ibus COLORTERM=truecolor CYAN=36 DARK_GREY=90 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus DEBEMAIL=gabriel@koumbit.org DEBFULLNAME=Gabriel Filion DEFAULT_COLOR=39 DESKTOP_SESSION=default DISPLAY=:0 GDM_LANG=en_CA.utf8 GDMSESSION=default GIO_LAUNCHED_DESKTOP_FILE_PID=852849 GIT_PS1_SHOWDIRTYSTATE=true GIT_PS1_SHOWSTASHSTATE=true GIT_PS1_SHOWUNTRACKEDFILES=true GNOME_DESKTOP_SESSION_ID=this-is-deprecated GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1 GPG_TTY=/dev/pts/3 GREEN=32 GROFF_NO_SGR=1 GSM_SKIP_SSH_AGENT_WORKAROUND=true GTK_IM_MODULE=ibus GTK_MODULES=gail:atk-bridge HISTCONTROL=ignoredups HISTTIMEFORMAT=%Y-%m-%d %T HOME=/home/gabster IM_CONFIG_CHECK_ENV=1 IM_CONFIG_PHASE=1 INVOCATION_ID=bfec0c08e6c24b44bdf61a006d169113 JOURNAL_STREAM=8:15537189 LANG=en_CA.utf8 LC_ALL=en_CA.utf8 LC_MEASUREMENT=fr_CA.UTF-8 LC_MONETARY=fr_CA.UTF-8 LC_NUMERIC=fr_CA.UTF-8 LC_PAPER=fr_CA.UTF-8 LC_TIME=fr_CA.UTF-8 LESSCLOSE=/usr/bin/lesspipe %s %s LESSOPEN=| /usr/bin/lesspipe %s LESS=--RAW-CONTROL-CHARS LESS_TERMCAP_mb= LESS_TERMCAP_md= LESS_TERMCAP_me= LESS_TERMCAP_mh= LESS_TERMCAP_mr= LESS_TERMCAP_se= LESS_TERMCAP_so= LESS_TERMCAP_ue= LESS_TERMCAP_us= LESS_TERMCAP_ZN= LESS_TERMCAP_ZO= LESS_TERMCAP_ZV= LESS_TERMCAP_ZW= LIGHT_BLUE=94 LIGHT_CYAN=96 LIGHT_GREEN=92 LIGHT_GREY=37 LIGHT_MAGENTA=95 LIGHT_RED=91 LIGHT_YELLOW=93 LOGNAME=gabster LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36: MAGENTA=35 MANAGERPID=1997 PASSWORD_STORE_CLIP_TIME=20 PASSWORD_STORE_ENABLE_EXTENSIONS=true PATH=/home/gabster/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/gabster/bin PWD=/home/gabster/koumbit/control-repo QT4_IM_MODULE=ibus QT_ACCESSIBILITY=1 QT_IM_MODULE=ibus RED=31 RESET=00 SESSION_MANAGER=local/meevyl:@/tmp/.ICE-unix/851925,unix/meevyl:/tmp/.ICE-unix/851925 SHELL=/bin/bash SHLVL=1 SSH_AUTH_SOCK=/run/user/1000/gnupg/S.gpg-agent.ssh TERM=xterm-256color TILIX_ID=6d6fbf90-22e4-4979-8dae-3d8edc017e5b USER=gabster USERNAME=gabster _=/usr/bin/ssh VAGRANT_DEFAULT_PROVIDER=libvirt VTE_VERSION=6200 WHITE=97 WINDOWPATH=2 XAUTHORITY=/run/user/1000/gdm/Xauthority XDG_CURRENT_DESKTOP=GNOME XDG_DATA_DIRS=/usr/share/gnome:/usr/share/gnome:/usr/share/gnome:/usr/local/share/:/usr/share/ XDG_MENU_PREFIX=gnome- XDG_RUNTIME_DIR=/run/user/1000 XDG_SESSION_CLASS=user XDG_SESSION_DESKTOP=default XDG_SESSION_TYPE=x11 XMODIFIERS=@im=ibus YELLOW=33
Informations "système" sur le processus
On peut connaître un peu plus d'information sur les limitations système et la mémoire utilisée par un processus.
dans limits, on peut voir une liste de certaines limites imposées par le système sur un processus
l'exemple plus bas montre un processus de mysqld qui a eu sa limite du nombre maximum de fichiers ouvert augmentée à une valeur assez élevée
cat /proc/19600/limits Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Max file size unlimited unlimited bytes Max data size unlimited unlimited bytes Max stack size 8388608 unlimited bytes Max core file size 0 unlimited bytes Max resident set unlimited unlimited bytes Max processes 128599 128599 processes Max open files 1048576 1048576 files Max locked memory 65536 65536 bytes Max address space unlimited unlimited bytes Max file locks unlimited unlimited locks Max pending signals 128599 128599 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us
dans status on obtient de l'information détaillée sur toutes sortes de détails sur le "runtime" du processus, dont l'utilisation de la mémoire, le nombre de threads, l'état du processus et bien plus
$ cat /proc/943526/status Name: MainThread Umask: 0022 State: S (sleeping) Tgid: 943526 Ngid: 0 Pid: 943526 PPid: 851939 TracerPid: 0 Uid: 1000 1000 1000 1000 Gid: 1000 1000 1000 1000 FDSize: 512 Groups: 4 20 24 25 27 29 30 44 46 103 105 110 112 127 128 145 1000 NStgid: 943526 NSpid: 943526 NSpgid: 851939 NSsid: 851939 VmPeak: 19301148 kB VmSize: 3977076 kB VmLck: 0 kB VmPin: 0 kB VmHWM: 817284 kB VmRSS: 615112 kB RssAnon: 419288 kB RssFile: 143536 kB RssShmem: 52288 kB VmData: 733416 kB VmStk: 136 kB VmExe: 464 kB VmLib: 155332 kB VmPTE: 2996 kB VmSwap: 0 kB HugetlbPages: 0 kB CoreDumping: 0 THP_enabled: 1 Threads: 69 SigQ: 0/62744 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 0000000001001000 SigCgt: 0000000f800044ff CapInh: 0000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000 CapBnd: 0000003fffffffff CapAmb: 0000000000000000 NoNewPrivs: 0 Seccomp: 0 Speculation_Store_Bypass: thread vulnerable Cpus_allowed: ff Cpus_allowed_list: 0-7 Mems_allowed: 00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 14394075 nonvoluntary_ctxt_switches: 1226297
dans oom_score_adj, on peut voir si un processus est privilégié pour la terminaison d'urgence ou bien devrait être une des dernières cibles du mécanisme d'urgence du kernel (OOM kill)
- ici, on peut voir en premier lieu un processus qui n'a pas d'ajustement et donc sera traité pareil aux autres processus, puis un processus mysql qui a été marqué pour être une des dernières cibles (score -800 alors que -1000 désactive complètement la possibilité de terminer un certain processus)
# cat /proc/6686/oom_score_adj 0 # cat /proc/19600/oom_score_adj -800
Information de débuggage un peu plus précise
On peut lister de l'information qui peut nous permettre d'avoir plus de contexte précis pour le débuggage d'un processus
sous fd/, on retrouve des liens symboliques vers les fichiers pointés par des "file descriptors"
- les liens symobliques ont comme nom le numéro de file descriptor dans le programme
donc 0 correspond toujours au stdin, 1 au stdout et 2 au stderr
# ls -l /proc/6686/fd total 0 lr-x------ 1 root root 64 Oct 2 23:42 0 -> /dev/null lrwx------ 1 root root 64 Oct 2 23:42 1 -> /dev/null l-wx------ 1 root root 64 Oct 2 23:42 10 -> pipe:[70921529] lrwx------ 1 root root 64 Oct 2 23:42 2 -> /dev/null lrwx------ 1 root root 64 Oct 2 23:42 3 -> socket:[70923304] l-wx------ 1 root root 64 Oct 2 23:42 4 -> /var/log/fail2ban.log lrwx------ 1 root root 64 Oct 2 23:42 6 -> /var/lib/fail2ban/fail2ban.sqlite3 lr-x------ 1 root root 64 Oct 2 23:42 7 -> anon_inode:inotify lr-x------ 1 root root 64 Oct 2 23:42 8 -> anon_inode:inotify lr-x------ 1 root root 64 Oct 2 23:42 9 -> pipe:[70921529]
dans map_files on retrouve des liens symboliques vers les fichiers qui sont ouvert en "memory map"
total 0 lr-------- 1 mysql mysql 64 Oct 2 23:45 557d1f54e000-557d204fc000 -> /usr/sbin/mysqld lr-------- 1 mysql mysql 64 Oct 2 23:45 557d206fb000-557d207a4000 -> /usr/sbin/mysqld lr-------- 1 mysql mysql 64 Oct 2 23:45 557d207a4000-557d20856000 -> /usr/sbin/mysqld lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d1dbf000-7f99d1dc1000 -> /usr/lib/x86_64-linux-gnu/m ariadb18/plugin/metadata_lock_info.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d1dc1000-7f99d1fc0000 -> /usr/lib/x86_64-linux-gnu/m ariadb18/plugin/metadata_lock_info.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d1fc0000-7f99d1fc1000 -> /usr/lib/x86_64-linux-gnu/m ariadb18/plugin/metadata_lock_info.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d1fc1000-7f99d1fc2000 -> /usr/lib/x86_64-linux-gnu/m ariadb18/plugin/metadata_lock_info.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d1fc2000-7f99d1fcc000 -> /lib/x86_64-linux-gnu/libns s_files-2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d1fcc000-7f99d21cc000 -> /lib/x86_64-linux-gnu/libns s_files-2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d21cc000-7f99d21cd000 -> /lib/x86_64-linux-gnu/libns s_files-2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d21cd000-7f99d21ce000 -> /lib/x86_64-linux-gnu/libns s_files-2.24.so [...] lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d38fa000-7f99d3afa000 -> /lib/x86_64-linux-gnu/libgc rypt.so.20.1.6 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d3afa000-7f99d3afc000 -> /lib/x86_64-linux-gnu/libgc rypt.so.20.1.6 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d3afc000-7f99d3b03000 -> /lib/x86_64-linux-gnu/libgc rypt.so.20.1.6 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d3b03000-7f99d3b14000 -> /usr/lib/x86_64-linux-gnu/l iblz4.so.1.7.1 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d3b14000-7f99d3d13000 -> /usr/lib/x86_64-linux-gnu/l iblz4.so.1.7.1 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d3d13000-7f99d3d14000 -> /usr/lib/x86_64-linux-gnu/l iblz4.so.1.7.1 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d3d14000-7f99d3d15000 -> /usr/lib/x86_64-linux-gnu/l iblz4.so.1.7.1 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d3d15000-7f99d3d3a000 -> /lib/x86_64-linux-gnu/liblz ma.so.5.2.2 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d3d3a000-7f99d3f39000 -> /lib/x86_64-linux-gnu/liblz ma.so.5.2.2 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d3f39000-7f99d3f3a000 -> /lib/x86_64-linux-gnu/liblz ma.so.5.2.2 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d3f3a000-7f99d3f3b000 -> /lib/x86_64-linux-gnu/liblz ma.so.5.2.2 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d3f3b000-7f99d3f42000 -> /lib/x86_64-linux-gnu/librt -2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d3f42000-7f99d4141000 -> /lib/x86_64-linux-gnu/librt -2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4141000-7f99d4142000 -> /lib/x86_64-linux-gnu/librt -2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4142000-7f99d4143000 -> /lib/x86_64-linux-gnu/librt -2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4143000-7f99d4168000 -> /lib/x86_64-linux-gnu/libse linux.so.1 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4168000-7f99d4367000 -> /lib/x86_64-linux-gnu/libse linux.so.1 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4367000-7f99d4368000 -> /lib/x86_64-linux-gnu/libse linux.so.1 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4368000-7f99d4369000 -> /lib/x86_64-linux-gnu/libse linux.so.1 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d436b000-7f99d4500000 -> /lib/x86_64-linux-gnu/libc- 2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4500000-7f99d4700000 -> /lib/x86_64-linux-gnu/libc- 2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4700000-7f99d4704000 -> /lib/x86_64-linux-gnu/libc- 2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4704000-7f99d4706000 -> /lib/x86_64-linux-gnu/libc$ 2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d470a000-7f99d480d000 -> /lib/x86_64-linux-gnu/libm$ 2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d480d000-7f99d4a0c000 -> /lib/x86_64-linux-gnu/libm$ 2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4a0c000-7f99d4a0d000 -> /lib/x86_64-linux-gnu/libm$ 2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4a0d000-7f99d4a0e000 -> /lib/x86_64-linux-gnu/libm$ 2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4a0e000-7f99d4b80000 -> /usr/lib/x86_64-linux-gnu/$ ibstdc++.so.6.0.22 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4b80000-7f99d4d80000 -> /usr/lib/x86_64-linux-gnu/$ ibstdc++.so.6.0.22 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4d80000-7f99d4d8a000 -> /usr/lib/x86_64-linux-gnu/$ ibstdc++.so.6.0.22 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4d8a000-7f99d4d8c000 -> /usr/lib/x86_64-linux-gnu/$ ibstdc++.so.6.0.22 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4d90000-7f99d4d93000 -> /lib/x86_64-linux-gnu/libd$ -2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4d93000-7f99d4f92000 -> /lib/x86_64-linux-gnu/libd$ -2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4f92000-7f99d4f93000 -> /lib/x86_64-linux-gnu/libd$ -2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4f93000-7f99d4f94000 -> /lib/x86_64-linux-gnu/libd$ -2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4f94000-7f99d4f9c000 -> /lib/x86_64-linux-gnu/libc$ ypt-2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d4f9c000-7f99d519c000 -> /lib/x86_64-linux-gnu/libc$ ypt-2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d519c000-7f99d519d000 -> /lib/x86_64-linux-gnu/libc$ ypt-2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d519d000-7f99d519e000 -> /lib/x86_64-linux-gnu/libc$ ypt-2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d51cc000-7f99d5200000 -> /usr/lib/x86_64-linux-gnu/$ ibjemalloc.so.1 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d5200000-7f99d53ff000 -> /usr/lib/x86_64-linux-gnu/$ ibjemalloc.so.1 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d53ff000-7f99d5401000 -> /usr/lib/x86_64-linux-gnu/$ ibjemalloc.so.1 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d5401000-7f99d5402000 -> /usr/lib/x86_64-linux-gnu/$ ibjemalloc.so.1 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d5403000-7f99d541c000 -> /lib/x86_64-linux-gnu/libz$ so.1.2.8 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d541c000-7f99d561b000 -> /lib/x86_64-linux-gnu/libz. so.1.2.8 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d561b000-7f99d561c000 -> /lib/x86_64-linux-gnu/libz. so.1.2.8 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d561c000-7f99d561d000 -> /lib/x86_64-linux-gnu/libz. so.1.2.8 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d561d000-7f99d561e000 -> /lib/x86_64-linux-gnu/libai o.so.1.0.1 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d561e000-7f99d581d000 -> /lib/x86_64-linux-gnu/libai o.so.1.0.1 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d581d000-7f99d581e000 -> /lib/x86_64-linux-gnu/libai o.so.1.0.1 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d581f000-7f99d5837000 -> /lib/x86_64-linux-gnu/libpt hread-2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d5837000-7f99d5a36000 -> /lib/x86_64-linux-gnu/libpt hread-2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d5a36000-7f99d5a37000 -> /lib/x86_64-linux-gnu/libpt hread-2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d5a37000-7f99d5a38000 -> /lib/x86_64-linux-gnu/libpt hread-2.24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d5a3c000-7f99d5a5f000 -> /lib/x86_64-linux-gnu/ld-2. 24.so lrw------- 1 mysql mysql 64 Oct 2 23:45 7f99d5b93000-7f99d5b98000 -> /[aio] (deleted) lrw------- 1 mysql mysql 64 Oct 2 23:45 7f99d5b98000-7f99d5b9d000 -> /[aio] (deleted) lrw------- 1 mysql mysql 64 Oct 2 23:45 7f99d5b9d000-7f99d5ba2000 -> /[aio] (deleted) lrw------- 1 mysql mysql 64 Oct 2 23:45 7f99d5ba2000-7f99d5ba7000 -> /[aio] (deleted) lrw------- 1 mysql mysql 64 Oct 2 23:45 7f99d5ba7000-7f99d5bac000 -> /[aio] (deleted) lrw------- 1 mysql mysql 64 Oct 2 23:45 7f99d5bac000-7f99d5bb1000 -> /[aio] (deleted) lrw------- 1 mysql mysql 64 Oct 2 23:45 7f99d5bb1000-7f99d5bb6000 -> /[aio] (deleted) lrw------- 1 mysql mysql 64 Oct 2 23:45 7f99d5bb6000-7f99d5bbb000 -> /[aio] (deleted) lrw------- 1 mysql mysql 64 Oct 2 23:45 7f99d5bbb000-7f99d5bc0000 -> /[aio] (deleted) lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d5bc8000-7f99d5c4c000 -> /lib/x86_64-linux-gnu/libsy stemd.so.0.17.0 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d5c4c000-7f99d5c4d000 -> /lib/x86_64-linux-gnu/libsy stemd.so.0.17.0 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d5c4d000-7f99d5c50000 -> /lib/x86_64-linux-gnu/libsy stemd.so.0.17.0 lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d5c50000-7f99d5c51000 -> /lib/x86_64-linux-gnu/libsy stemd.so.0.17.0 lrw------- 1 mysql mysql 64 Oct 2 23:45 7f99d5c57000-7f99d5c59000 -> /[aio] (deleted) lrw------- 1 mysql mysql 64 Oct 2 23:45 7f99d5c59000-7f99d5c5e000 -> /[aio] (deleted) lrw------- 1 mysql mysql 64 Oct 2 23:45 7f99d5c5e000-7f99d5c5f000 -> /[aio] (deleted) lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d5c5f000-7f99d5c60000 -> /lib/x86_64-linux-gnu/ld-2. 24.so lr-------- 1 mysql mysql 64 Oct 2 23:45 7f99d5c60000-7f99d5c61000 -> /lib/x86_64-linux-gnu/ld-2. 24.so
Rétrospective
Pendant un maximum de 15 minutes, les participant.e.s sont invité.e.s à partager les éléments qui ont bien ou moins bien fonctionnés et les idées qui pourraient survenir pour des manières d'améliorer le processus.
Quelques éléments qui peuvent faire partie de la rétrospective, dépendant de la grosseur du projet ou de la formation:
- Sommaire collectif (e.g. résumé rapide en termes que tout le collectif peut comprendre)
Pas trop utile pour les projets vraiment simples ou les formations.
- Chronologie des événements marquant pour le projet
Surtout utile pour les projet qui se sont étalés sur plusieurs jours ou plus ou bien quand beaucoup de choses se sont produites simultanément, ce qui a rendu la compréhension des influences de chaque événement complexe.
- Les bons coups -- qu'est-ce qui a bien fonctionné et qu'on veut tenter de reproduire
- Les problèmes
- échecs -- avec l'aide de la chronologie (si elle a été faite), tenter de situer les échecs dans un contexte selon ce qui était connu des participant.e.s aux moments qui ont mené à l'échec
- problèmes techniques
- manques de ressources
- perturbations externes
- Une liste d'actions à court et/ou à plus long terme pour améliorer les choses telles que soulignées pendant les points précédents
- Transférer les actions dans redmine pour qu'elles puissent être suivies!
N'hésitez pas à partager les échecs à l'extérieur de l'équipe puisqu'on peut apprendre beaucoup de ceux-ci, mais surtout évitez de les formuler comme un blâme sur la/les personne(s) ayant échoué.
Une rétrospective est surtout utile quand on la partage: ça permet aux autres d'apprendre de nos erreurs et aussi de nos idées d'améliorations. On peut par exemple envoyer une forme écrite par email, ou bien sauvegardée comme page wiki.