Work on TP3

This commit is contained in:
nemunaire 2017-10-23 00:14:32 +02:00
commit 1aa9530f3a
8 changed files with 130 additions and 103 deletions

View file

@ -6,10 +6,14 @@ Pseudos systèmes de fichiers
## Rappels sur les points de montage
Les systèmes Unix définissent le système de fichiers comme étant un arbre
unique partant d'une racine[1] et où l'on peut placer au sein de son arborescence
unique partant d'une racine[^FHS] et où l'on peut placer au sein de son arborescence
des points de montage. Ainsi, l'utilisateur définit généralement deux points de
montage :
[^FHS]: Consultez
<https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard> pour
plus de détails sur l'arboresence.
<div lang="en-US">
```
/dev/sda1 on / type ext4 (rw,relatime,data=ordered)
@ -38,10 +42,10 @@ Linux emploie de nombreux systèmes de fichiers virtuels :
- `/proc` : contient, principalement, la liste des processus (`top` et ses
dérivés se contentent de lire les fichiers de ce point de montage) ;
- `/proc/sys` : configuration du noyau ;
- `/sys` : contient des informations à propos du matériel (utilisées
notamment pour peupler `/dev`) et des périphériques (taille des
tampons, clignottement des DELs, ...) ;
- `/proc/sys` : contient la configuration du noyau ;
- `/sys` : contient des informations à propos du matériel (utilisées notamment
par `udev` pour peupler `/dev`) et des périphériques (taille des tampons,
clignottement des DELs, ...) ;
- `/sys/firmware/efi/efivars` : pour accéder et modifier les variables de
l'UEFI ;
- ...
@ -53,33 +57,25 @@ exemple, pour modifier les paramètres du noyau, on passe par le fichier
`/etc/sysctl.conf` et du programme `sysctl`.
## Exercices
### Consultation et modification
### `rev_kdb_leds.sh`
La consultation d'un élément se fait généralement à l'aide d'un simple `cat` :
Explorons le pseudo système de fichiers `/sys` pour écrire un script
qui va inverser l'état des diodes de notre clavier.
Si vous avez :
* numlock On,
* capslock Off,
* scrolllock Off ;
Après avoir exécuté le script, nous devrions avoir :
* numlock Off,
* capslock On,
* scrolllock On.
Voici un exemple d'utilisation :
<div lang="en-US">
```shell
42sh$ ./rev_kdb_leds.sh input20
42sh$ cat /sys/power/state
freeze mem
```
</div>
La modification d'un élément se fait avec `echo`, comme ceci :
```shell
echo mem > /sys/power/state
```
Vous devriez constater l'effet de cette commande sans plus attendre !
## Exercices
### `procinfo`
@ -124,25 +120,28 @@ uts:[4026531838]
```
</div>
## Rendu
### Questions
### `rev_kdb_leds.sh`
Sur le serveur `antares`, un serveur applicatif critique tourne aux côtés de sa
base de données PostgreSQL. Le serveur applicatif étant connu pour produire un
grand nombre de leak, il est relancé chaque nuit. Le serveur applicatif tourne
en root car plus personne ne sait le paramétrer ; la base de données a été
installé par le système de paquets de la distribution.
Explorons le pseudo système de fichiers `/sys` pour écrire un script
qui va inverser l'état des diodes de notre clavier.
Il arrive quelque fois que le serveur de base de données soit tué par
l'OOM-killer alors que le serveur applicatif utilise largement plus de mémoire
à la fin de la journée.
Si vous avez :
1. Quel paramètre du processus pourrait-on modifier pour que ce soit le serveur
applicatif qui aie plus de chance de se faire tuer par l'OOM-killer ?
* numlock On,
* capslock Off,
* scrolllock Off ;
2. Pourquoi est-ce le serveur de base de données qui est principalement tiré au
sort pour être tué en cas de manque de mémoire plutôt que le serveur
applicatif qui occupe pourtant bien plus de mémoire ?
Après avoir exécuté le script, nous devrions avoir :
[1]: Consultez <https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard> pour plus de détails sur l'arboresence.
* numlock Off,
* capslock On,
* scrolllock On.
Voici un exemple d'utilisation :
<div lang="en-US">
```shell
42sh$ ./rev_kdb_leds.sh input20
```
</div>