[LINUX] Lire tout le contenu de proc / [pid] ~ De attr à cpuset ~

Aperçu

Je vous serais reconnaissant si vous pouviez lire les détails dans Lire tout le contenu de proc / [pid].

# sleep 365d > /dev/null &
[1] 3792

# ls /proc/3792
attr             cwd       map_files   oom_adj        schedstat  task
autogroup        environ   maps        oom_score      sessionid  timers
auxv             exe       mem         oom_score_adj  setgroups  uid_map
cgroup           fd        mountinfo   pagemap        smaps      wchan
clear_refs       fdinfo    mounts      patch_state    stack
cmdline          gid_map   mountstats  personality    stat
comm             io        net         projid_map     statm
coredump_filter  limits    ns          root           status
cpuset           loginuid  numa_maps   sched          syscall

# cd /proc/3792

attr/

# ls attr/
current  exec  fscreate  keycreate  prev  sockcreate
# cat current
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
# cat prev
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

C'était un fichier vide à l'exception de "current" et "prev". Après examen, ces fichiers semblent être référencés par la fonctionnalité SELinux. Sous Linux, vous pouvez gérer les autorisations de lecture, d'écriture et d'exécution pour les fichiers et les répertoires avec une fonction appelée permissions, et une extension de celle-ci est une fonction appelée SELinux. Il semble qu'il soit géré par la valeur du contexte SELinux au lieu de la permission.

Il semble que "current" décrit le contexte SELinux de ce processus lui-même, et "prev" décrit le contexte SELinux du dernier processus exécuté. (Ce n'est pas bien compris) Le contexte SELinux défini dans le fichier créé par ce processus semble être écrit en ʻexec, Cette fois, / proc / 3792 / exec` est un fichier vide, il semble donc être créé avec la valeur par défaut.

Vous pouvez vérifier la valeur par défaut ici.

# semanage login -l

Login Name           SELinux User         MLS/MCS Range        Service

__default__          unconfined_u         s0-s0:c0.c1023       *
root                 unconfined_u         s0-s0:c0.c1023       *
system_u             system_u             s0-s0:c0.c1023       *

J'étudierai SELinux à l'avenir.

autogroup

# cat autogroup
/autogroup-401 nice 0

Il semble que la valeur utilisée par la CPU pour la planification soit décrite.

auxv

# ll | grep auxv
-r--------. 1 root root 0 Jan 12 05:09 auxv

# cat auxv
! Temple
     d@@Awa d

捐  boeuf ゚  classe P  sucer

# od -x auxv
0000000 0021 0000 0000 0000 0000 9fbb 7fff 0000
0000020 0010 0000 0000 0000 fbff 1f8b 0000 0000
0000040 0006 0000 0000 0000 1000 0000 0000 0000
0000060 0011 0000 0000 0000 0064 0000 0000 0000
0000100 0003 0000 0000 0000 0040 0040 0000 0000
0000120 0004 0000 0000 0000 0038 0000 0000 0000
    ....

Contient les informations d'interprétation ELF transmises au processus au moment de l'exécution. http://surf.ml.seikei.ac.jp/~nakano/JMwww/html/LDP_man-pages/man5/proc.5.html

Et cela. Il semble que auxv soit un vecteur auxiliaire. J'ai essayé ʻodethexdump, mais je ne pouvais pas le comprendre à cause de l'énumération des nombres. Même si vous appuyez sur file aux v, il sera affiché comme ./auxv: empty`, probablement parce que c'est un fichier spécial. Il semble que le but est de lire une fonction.

Il semble que le fichier exécutable ait un format appelé ELF. Il semble que les informations d'en-tête soient décrites. Je ne savais pas comment réparer les caractères déformés.

cgroup

# cat cgroup
11:cpuset:/
10:blkio:/
9:devices:/user.slice
8:hugetlb:/
7:net_prio,net_cls:/
6:perf_event:/
5:memory:/
4:cpuacct,cpu:/
3:pids:/
2:freezer:/
1:name=systemd:/user.slice/user-1000.slice/session-89.scope

cgroup est une fonction qui vous permet de définir des limites sur les processus. Il semble que vous puissiez définir en détail le taux d'utilisation du processeur et la limite supérieure de la mémoire. Compatibilité ascendante avec autogroupe. De gauche à droite: numéro d'identification de la hiérarchie: ensemble de sous-systèmes associés à la hiérarchie: groupe de contrôle dans la hiérarchie auquel appartient le processus C'est vrai. Etude requise.

clear_refs

# cat clear_refs
cat: clear_refs: Invalid argument

Je me suis mis en colère quand j'ai cédé

# ll clear_refs
--w-------. 1 root root 0 Jan 11 06:40 clear_refs

Je n'avais que l'autorisation d'écriture avec les privilèges root. Je l'ai ouvert avec vi clear_refs, mais c'était un fichier vide. Se référer à lors de la mesure de la mémoire? Il semble. Je n'ai pas trop compris.

Postscript

Si les permissions sont uniquement pour l'écriture, comme -w -------, Il est destiné à faire quelque chose en écrivant des données dans ce fichier.

J'ai reçu un commentaire. Il semble que certaines opérations soient effectuées via ce fichier. Je veux pouvoir lire le code source du noyau «CentOS». cmdline

# cat cmdline
sleep365d

# tr \\0 _ < cmdline
sleep_365d_

La commande exécutée au démarrage du processus. Il semble que les arguments (tels que ls -l) soient également affichés. Le délimiteur était \ 0 (NULL).

comm

# cat comm
sleep

Le nom de la commande affiché par ps -c.

coredump_filter

# cat coredump_filter
00000033

Il semble que ce soit un paramètre de filtre de bits de l'erreur qui est émis lorsque le processus se termine anormalement. Je ne sais pas quel masque chaque 00000033 est.

spuset

# cat cpuset
/

Il semble être référencé par cgroup. J'ai beaucoup cherché, mais je suis désolé.

Impressions

Il y avait trop de choses que je ne comprenais pas. Je suis inquiet si l'article que je tweet est significatif si je ne le comprends pas. En premier lieu, il y avait de nombreux contenus tels que "Cet élément est-il utilisé maintenant ...?", Donc je ne pouvais pas le distinguer. Je veux vraiment maintenir le groupe de contrôle.

référence

http://blue-9.hatenadiary.com/entry/2017/03/14/212929 http://www.usupi.org/sysad/024.html http://man7.org/linux/man-pages/man5/proc.5.html https://www.atmarkit.co.jp/flinux/rensai/watch2007/watch10a.html https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/resource_management_guide/sec-cpuset https://blog.goo.ne.jp/tell14/e/d03e57fbe77a73f7991da7016824cfbf http://manpages.ubuntu.com/manpages/bionic/ja/man5/proc.5.html

Recommended Posts

Lire tout le contenu de proc / [pid] ~ De attr à cpuset ~
Lire tout le contenu de proc / [pid] ~ De setgroups à wchan ~
Lire tout le contenu de proc / [pid] ~ De cwd à loginuid ~
Lire tout le contenu de proc / [pid] ~ De map_files à numa_maps ~
Lire tout le contenu de proc / [pid] ~ De oom_adj à sessionid ~
Lire tout le contenu de proc / [pid]
Modèle de script python pour lire le contenu du fichier
Après tout, l'histoire du retour de Linux à Windows
Modifiez le point décimal de la journalisation de, à.
De l'introduction de pyethapp à l'exécution du contrat
Histoire de passer de Pipenv à la poésie
Le mur lors du passage du service Django de Python 2.7 à la série Python 3
DataNitro, implémentation de la fonction de lecture des données de feuille
Lisez également le contenu de arch / arm / kernel / swp_emulate.c
J'ai lu la référence Chainer (mise à jour de temps en temps)
[Ubuntu] Comment supprimer tout le contenu du répertoire
Comment calculer la quantité de calcul appris de ABC134-D
Paramètres pour entrer et déboguer le contenu de la bibliothèque avec VS Code
[Introduction à matplotlib] Lire l'heure de fin à partir des données COVID-19 ♬
Déployer Django + React de zéro sur GKE: Table des matières
Comment voir le contenu du fichier ipynb du notebook Jupyter
L'histoire de la copie de données de S3 vers TeamDrive de Google
Comment connecter le contenu de la liste dans une chaîne de caractères
Simulation du contenu du portefeuille
[EC2] Comment installer Chrome et le contenu de chaque commande
Exportez le contenu de ~ .xlsx dans le dossier en HTML avec Python
De l'introduction de JUMAN ++ à l'analyse morphologique du japonais avec Python
Créez une fonction pour obtenir le contenu de la base de données dans Go
[Python] Un programme qui fait pivoter le contenu de la liste vers la gauche
Comment lire l'ensemble de données SNLI
Voir le contenu de Kumantic Segumantion
Supplément à l'explication de vscode
De l'introduction de l'API GoogleCloudPlatform Natural Language à son utilisation
À propos de l'ordre d'apprentissage des langages de programmation (de débutant à intermédiaire) Partie 2
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
[Reconnaissance d'image] Comment lire le résultat de l'annotation automatique avec VoTT
Comment comparer si le contenu des objets dans scipy.sparse.csr_matrix est le même
Paramètre pour entrer le contenu de la bibliothèque avec pytest et effectuer un test de débogage
Téléchargez collectivement les images collées dans le corps de la pull request sur Github
Obtenez le titre de la chanson à partir du titre de la vidéo que vous avez chanté