I would appreciate it if you could read the details in Read all the contents of 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
It was an empty file except for current
and prev
.
Upon examination, these files seem to be referenced by SELinux features.
In Linux, you can manage read, write, and execute permissions for files and directories with a function called permissions, and an extension of that is a function called SELinux.
It seems that it is managed by the value of SELinux context instead of permission.
It seems that current
describes the SELinux context of this process itself, and prev
describes the SELinux context of the immediately executed process. (It is not well understood)
The SELinux context set in the file created by this process seems to be written in ʻexec, Since
/ proc / 3792 / exec` this time is an empty file, it seems to be created with the default value.
You can check the default value here.
# 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 *
I will study SELinux in the future.
autogroup
# cat autogroup
/autogroup-401 nice 0
It seems that the value used by the CPU for scheduling is described.
auxv
# ll | grep auxv
-r--------. 1 root root 0 Jan 12 05:09 auxv
# cat auxv
! Temple
d@@Awa d
捐 beef ゚ class P sucking
# 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
....
Contains ELF interpreter information passed to the process at run time. http://surf.ml.seikei.ac.jp/~nakano/JMwww/html/LDP_man-pages/man5/proc.5.html
And that. It seems that auxv is an auxiliary vector.
I tried ʻodand
hexdump, but I couldn't understand it because of the enumeration of numbers. Even if you hit
file aux v, it will be displayed as
./auxv: empty`, probably because it is a special file.
It seems that the purpose is to read through some function.
It seems that the executable file has a format called ELF. It seems that the header information is described. I didn't know how to fix the garbled characters.
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
is a feature that allows you to set limits on processes. It seems that you can set the CPU usage rate and the upper limit of memory in detail. Upward compatible with autogroup.
From left: Hierarchy ID number: Set of subsystems associated with the hierarchy: Control group in the hierarchy to which the process belongs
That's right. Study required.
clear_refs
# cat clear_refs
cat: clear_refs: Invalid argument
I got angry when I cated.
# ll clear_refs
--w-------. 1 root root 0 Jan 11 06:40 clear_refs
I had only write privileges with root privileges.
I opened it with vi clear_refs
but it was an empty file.
Refer to when measuring memory? It seems. I didn't understand too much.
If the permissions are only for writing, such as -w -------, It is intended to do something by writing data to that file.
I received a comment. It seems that some operation is performed through this file. I want to be able to read the source code of the kernel? CentOS ?. cmdline
# cat cmdline
sleep365d
# tr \\0 _ < cmdline
sleep_365d_
The command executed when the process started. It seems that arguments (such as ls -l) are also displayed. The delimiter was \ 0 (NULL).
comm
# cat comm
sleep
The command name displayed by ps -c
.
coredump_filter
# cat coredump_filter
00000033
It seems that it is a bit filter setting of the error that is thrown when the process terminates abnormally. I don't know what mask each 00000033 is.
spuset
# cat cpuset
/
It seems to be referenced by cgroup. I searched a lot, but I'm sorry.
There were too many things I didn't understand. I'm worried if the article I tweet is meaningful if I don't understand it. In the first place, there were many contents such as "Is this item used now ...?", And I could not distinguish it. I definitely want to hold down the cgroup.
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