--- winsup/doc/specialnames.xml | 2100 +++++++++++++++++++++++++++++++++++ 1 file changed, 2100 insertions(+)
diff --git a/winsup/doc/specialnames.xml b/winsup/doc/specialnames.xml index a1f7401e16b9..6b86187f39e9 100644 --- a/winsup/doc/specialnames.xml +++ b/winsup/doc/specialnames.xml @@ -486,6 +486,2106 @@ one in Linux, but it provides significant capabilities. The <systemitem>procps</systemitem> package contains several utilities that use it. </para> + <refentry id="proc"> + <!-- from Linux manpages project proc(5) + (c) Copyright 2020 Cygwin project + (c) Copyright 2002\-2008,2017 Michael Kerrisk <mtk.manpa...@gmail.com> + (c) Copyright 1994, 1995 by Daniel Quinlan (quin...@yggdrasil.com) --> + + <!-- %%%LICENSE_START(GPLv2+_DOC_FULL) + This is free documentation; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. --> + + <!-- The GNU General Public License's references to "object code" + and "executables" are to be interpreted as the output of any + document formatting or typesetting system, including + intermediate and printed output. --> + + <!-- This manual is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. --> + + <!-- You should have received a copy of the GNU General Public + License along with this manual; if not, see + <<ulink url='http://www.gnu.org/licenses/>'>http://www.gnu.org/licenses/></ulink>. + %%%LICENSE_END --> + + <refentryinfo><date>2020-11-11</date></refentryinfo> + <refmeta> + <refentrytitle>proc</refentrytitle> + <manvolnum>5</manvolnum> + <refmiscinfo class='date'>2020-11-11</refmiscinfo> + <refmiscinfo class='source'>Cygwin</refmiscinfo> + <refmiscinfo class='manual'>Cygwin User's Manual</refmiscinfo> + </refmeta> + + <refnamediv> + <refname>proc</refname> + <refpurpose>process information pseudo-filesystem</refpurpose> + </refnamediv> + + <refsect1 id='proc-desc'> + <title>Description</title> + <para>The <filename>proc</filename> filesystem is a pseudo-filesystem + which provides an interface to Cygwin data structures. + It is commonly mounted at <filename>/proc</filename>. + Typically, it is mounted automatically by the system. + </para> + + <refsect2 id='proc-overview'> + <title>Overview</title> + <para>Underneath <filename>/proc</filename>, there are the following + general groups of files and subdirectories: + </para> + + <variablelist remap='TP'> + <varlistentry> + <term><filename>/proc/[pid]</filename> subdirectories</term> + <listitem> + <para>Each one of these subdirectories contains files and + subdirectories exposing information about the process with the + corresponding process id. + </para> + + <para>The <filename>/proc/[pid]</filename> subdirectories are + visible when iterating through <filename>/proc</filename> with + <citerefentry> + <refentrytitle>readdir</refentrytitle><manvolnum>2</manvolnum> + </citerefentry> + (and thus are visible when one uses + <citerefentry> + <refentrytitle>ls</refentrytitle><manvolnum>1</manvolnum> + </citerefentry> + to view the contents of <filename>/proc</filename>). + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/self</filename></term> + <listitem> + <para>When a process accesses this magic symbolic link, it resolves + to the process's own <filename>/proc/[pid]</filename> directory. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[a-z]*</filename></term> + <listitem> + <para>Various other files and subdirectories under + <filename>/proc</filename> expose system-wide information. + </para> + + </listitem> + </varlistentry> + </variablelist> + + <para>All of the above are described in more detail below. + </para> + + </refsect2> + + <refsect2 id='proc-files-and-directories'> + <title>Files and directories</title> + <para> + The following list provides details of many of the files + and directories under the <filename>/proc</filename> hierarchy. + </para> + + <variablelist remap='TP'> + <varlistentry> + <term><filename>/proc/[pid]</filename></term> + <listitem> + <para> + There is a numerical subdirectory for each running + process; the subdirectory is named by the process id. + Each <filename>/proc/[pid]</filename> subdirectory + contains the pseudo-files and directories described below. + </para> + + <para>The files inside each <filename>/proc/[pid]</filename> + directory are normally owned by the effective user and + effective group id of the process. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/cmdline</filename></term> + <listitem> + <para>This read-only file holds the complete command line for the + process, unless the process is a zombie. + In the latter case, there is nothing in this file: that is, a + read on this file will return 0 characters. + The command-line arguments appear in this file as a set of + strings followed by null bytes ('\0'). + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/ctty</filename></term> + <listitem> + <para> + This read-only file holds the name of the console or control + terminal device for the process, unless the process is detached + from any terminal. + In the latter case, there is only a newline in this file. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/cwd</filename></term> + <listitem> + <para> + This is a symbolic link to the current working directory of the + process. + To find out the current working directory of process 20, for + instance, you can do this: + + <screen> + <prompt>$</prompt> <userinput>cd /proc/20/cwd; /bin/pwd</userinput> + </screen> + </para> + + <para>Note that the <emphasis remap='I'>pwd</emphasis> command + is often a shell built-in, and might not work properly. In + <citerefentry> + <refentrytitle>bash</refentrytitle><manvolnum>1</manvolnum> + </citerefentry>, + you may use <userinput>pwd -P</userinput>. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/environ</filename></term> + <listitem> + <para> + This read-only file contains the current environment that may + have been changed by the currently executing program. + The entries are separated by null bytes ('\0'), + and there may be a null byte at the end. + Thus, to print out the environment of process 1, you would do: + + <screen> + <prompt>$</prompt> <userinput>cat -A /proc/1/environ</userinput> + </screen> + </para> + + <para>If, after an + <citerefentry> + <refentrytitle>execve</refentrytitle><manvolnum>2</manvolnum> + </citerefentry>, + the process modifies its environment (e.g., by calling + functions such as + <citerefentry> + <refentrytitle>putenv</refentrytitle><manvolnum>3</manvolnum> + </citerefentry> + or modifying the + <citerefentry> + <refentrytitle>environ</refentrytitle><manvolnum>7</manvolnum> + </citerefentry> + variable directly), this file will reflect those changes. + That may not be the case on other systems such as Linux. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/exe</filename></term> + <listitem> + <para> + This file is a symbolic link containing the actual pathname of + the executed command. + This symbolic link can be dereferenced normally; attempting to + open it will open the executable. + You can even type <filename>/proc/[pid]/exe</filename> + to run another copy of the same executable that is being run by + process [pid]. + <filename>/proc/[pid]/exe</filename> is a pointer to + the binary which was executed, and appears as a symbolic link. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/exename</filename></term> + <listitem> + <para> + This read-only file contains the actual pathname of the executed + command. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/fd/</filename></term> + <listitem> + <para> + This is a subdirectory containing one entry for each + file which the process has open, named by its file + descriptor, and which is a symbolic link to the actual + file. + Thus, 0 is standard input, 1 standard output, 2 standard + error, and so on. + </para> + + <para> + For file descriptors for pipes and sockets, the entries will + be symbolic links whose content is the file type with the + inode. A + <citerefentry> + <refentrytitle>readlink</refentrytitle><manvolnum>2</manvolnum> + </citerefentry> + call on this file returns a string in the format: + <literal>type:[inode]</literal> + </para> + + <para>For example, <literal>socket:[2248868]</literal> + will be a socket and its inode is 2248868. + </para> + + <para> + Programs that take a filename as a command-line argument, but + don't take input from standard input if no argument is supplied, + and programs that write to a file named as a command-line + argument, but don't send their output to standard output if no + argument is supplied, can nevertheless be made to use standard + input or standard output by using + <filename>/proc/[pid]/fd</filename> files as command-line + arguments. + For example, assuming that <option>-i</option> is the flag + designating an input file and <option>-o</option> is the flag + designating an output file: + + <screen> + <prompt>$</prompt> <userinput>foobar -i /proc/self/fd/0 -o /proc/self/fd/1 ...</userinput> + </screen> + + and you have a working filter. + </para> + + <para><filename>/proc/self/fd/N</filename> is approximately + the same as <filename>/dev/fd/N</filename> in some Unix + and Unix-like systems. + Most Linux <command>makedev</command> scripts symbolically + link <filename>/dev/fd</filename> to + <filename>/proc/self/fd</filename>, in fact. + </para> + + <para>Most systems provide symbolic links + <filename>/dev/stdin</filename>, + <filename>/dev/stdout</filename>, and + <filename>/dev/stderr</filename>, which respectively link + to the files <literal>0</literal>, <literal>1</literal>, + and <literal>2</literal> in <filename>/proc/self/fd</filename>. + Thus the example command above could be written as: + + <screen> + <prompt>$</prompt> <userinput>foobar -i /dev/stdin -o /dev/stdout ...</userinput> + </screen> + </para> + + <para> + Note that for file descriptors referring to inodes (pipes and + sockets, see above), those inodes still have permission bits and + ownership information distinct from those of the + <filename>/proc/[pid]/fd</filename> entry, and that the + owner may differ from the user and group ids of the process. + An unprivileged process may lack permissions to open them, as in + this example: + + <screen> + <prompt>$</prompt> <userinput>echo test | sudo -u nobody cat</userinput> + <computeroutput>test</computeroutput> + <prompt>$</prompt> <userinput>echo test | sudo -u nobody cat /proc/self/fd/0</userinput> + <computeroutput>cat: /proc/self/fd/0: Permission denied</computeroutput> + </screen> + </para> + + <para> + File descriptor 0 refers to the pipe created by the shell and + owned by that shell's user, which is not + <literal>nobody</literal>, so <command>cat</command> + does not have permission to create a new file descriptor to + read from that inode, even though it can still read from its + existing file descriptor 0. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/gid</filename></term> + <listitem> + <para> + This read-only file contains the primary group id for the + process. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/maps</filename></term> + <listitem> + <para> + A file containing the currently mapped memory regions and their + access permissions. See + <citerefentry> + <refentrytitle>mmap</refentrytitle><manvolnum>2</manvolnum> + </citerefentry> + for some further information about memory mappings. + </para> + + <para>The format of the file is: + +<screen> +<emphasis remap='I'>address perms offset dev inode pathname</emphasis> +<computeroutput> +00010000-00020000 rw-s 00000000 0000:0000 0 [win heap 1 default shared] +... +00080000-00082000 rw-p 00000000 0000:0000 0 [win heap 0 default grow] +00082000-0009A000 ===p 00002000 0000:0000 0 [win heap 0 default grow] +000A0000-000A1000 rw-p 00000000 0000:0000 0 [win heap 2 grow] +000A1000-000BA000 ===p 00001000 0000:0000 0 [win heap 2 grow] +000C0000-000D9000 rw-p 00000000 0000:0000 0 [win heap 0 default grow] +000D9000-001C0000 ===p 00019000 0000:0000 0 [win heap 0 default grow] +00200000-00377000 ===p 00000000 0000:0000 0 +00377000-00378000 rw-p 00177000 0000:0000 0 [peb] +00378000-0037A000 rw-p 00178000 0000:0000 0 [teb (tid 8844)] +... +00400000-005F9000 ===p 00000000 0000:0000 0 [stack (tid 8884)] +005F9000-005FC000 rw-g 001F9000 0000:0000 0 [stack (tid 8884)] +005FC000-00600000 rw-p 001FC000 0000:0000 0 [stack (tid 8884)] +00600000-006C7000 r--s 00000000 EE45:4341 281474976741117 /proc/cygdrive/c/Windows/System32/locale.nls +... +100400000-100401000 r--p 00000000 EE45:4341 281474978095037 /usr/bin/sh.exe +100401000-100413000 r-xp 00001000 EE45:4341 281474978095037 /usr/bin/sh.exe +100413000-100414000 rw-p 00013000 EE45:4341 281474978095037 /usr/bin/sh.exe +... +180010000-180020000 rw-s 00000000 0000:0000 0 [procinfo] +180020000-180029000 rw-s 00000000 0000:0000 0 [cygwin-user-shared] +180030000-18003C000 rw-s 00000000 0000:0000 0 [cygwin-shared] +180040000-180041000 r--p 00000000 EE45:4341 2251799814294868 /usr/bin/cygwin1.dll +180041000-18022D000 r-xp 00001000 EE45:4341 2251799814294868 /usr/bin/cygwin1.dll +18022D000-180231000 rwxp 001ED000 EE45:4341 2251799814294868 /usr/bin/cygwin1.dll +180231000-18026A000 rw-p 001F1000 EE45:4341 2251799814294868 /usr/bin/cygwin1.dll +... +800000000-800090000 rw-p 00000000 0000:0000 0 [heap] +800090000-820000000 ===p 00090000 0000:0000 0 [heap] +7FF4FDEB0000-7FF4FDEB5000 r--s 00000000 0000:0000 0 +7FF4FDEB5000-7FF4FDFB0000 ===s 00005000 0000:0000 0 +7FF4FDFB0000-7FF5FDFD0000 ===p 00000000 0000:0000 0 +... +7FFBEEAC0000-7FFBEEAC1000 r--p 00000000 EE45:4341 844424934724994 /proc/cygdrive/c/Windows/System32/kernel32.dll +7FFBEEAC1000-7FFBEEB36000 r-xp 00001000 EE45:4341 844424934724994 /proc/cygdrive/c/Windows/System32/kernel32.dll +7FFBEEB36000-7FFBEEB68000 r--p 00076000 EE45:4341 844424934724994 /proc/cygdrive/c/Windows/System32/kernel32.dll +7FFBEEB68000-7FFBEEB6A000 rw-p 000A8000 EE45:4341 844424934724994 /proc/cygdrive/c/Windows/System32/kernel32.dll +7FFBEEB6A000-7FFBEEB72000 r--p 000AA000 EE45:4341 844424934724994 /proc/cygdrive/c/Windows/System32/kernel32.dll +... +</computeroutput> +</screen> + </para> + + <para>The <literal>address</literal> field is the address + space in the process that the mapping occupies. + The <literal>perms</literal> field is a set of permissions: + + <variablelist termlength="4"> + <varlistentry> + <term>r</term><listitem><para>read</para></listitem> + + </varlistentry> + <varlistentry> + <term>w</term><listitem><para>write</para></listitem> + + </varlistentry> + <varlistentry> + <term>x</term><listitem><para>execute</para></listitem> + + </varlistentry> + <varlistentry> + <term>===</term><listitem><para>reserved</para></listitem> + + </varlistentry> + <varlistentry> + <term>s</term><listitem><para>shared</para></listitem> + + </varlistentry> + <varlistentry> + <term>g</term><listitem><para>guard</para></listitem> + + </varlistentry> + <varlistentry> + <term>p</term><listitem><para>private</para></listitem> + </varlistentry> + </variablelist> + </para> + + <para>The <literal>offset</literal> field is the offset + into the file/whatever; + <literal>dev</literal> is the device (major:minor); + <literal>inode</literal> is the inode on that device. + 0 indicates that no inode is associated with the memory + region, as would be the case with BSS (uninitialized data). + </para> + + <para>The <literal>pathname</literal> field will usually + be the file that is backing the mapping. + </para> + + <para>There are additional helpful pseudo-paths: + <variablelist remap='TP'> + <varlistentry> + <term>[<literal>cygwin-shared</literal>]</term> + <listitem> + <para>Global shared Cygwin process information.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>[<literal>cygwin-user-shared</literal>]</term> + <listitem> + <para>Global shared Cygwin user information.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>[<literal>peb</literal>]</term> + <listitem> + <para>Windows Process Environment Block.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>[<literal>procinfo</literal>]</term> + <listitem> + <para>Cygwin process information.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>[<literal>shared-user-data</literal>]</term> + <listitem> + <para>Shared user information.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>[<literal>heap</literal>]</term> + <listitem> + <para>The process's heap.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>[<literal>stack</literal>]</term> + <listitem> + <para> + The initial process's (also known as the main + thread's) stack. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>[<literal>stack</literal> + (tid <literal><tid></literal>)] + </term> + <listitem> + <para> + A thread's stack (where the + <literal><tid></literal> is a thread id). + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>[<literal>teb</literal> + (tid <literal><tid></literal>)] + </term> + <listitem> + <para> + Windows Thread Environment Block (where + <literal><tid></literal> is a thread id). + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>[<literal>win heap <n> + default shared exec grow noserial debug</literal>] + </term> + <listitem> + <para> + Windows extended heap (where + <literal><n></literal> is a heap id) + and the rest of the words are heap flags: + + <variablelist termlength="8" remap='TP'> + <varlistentry> + <term><literal>default</literal></term> + <listitem> + <para>default heap flags</para> + + </listitem> + </varlistentry> + <varlistentry> + <term><literal>shared</literal></term> + <listitem> + <para>shareable and mapped heap flags</para> + + </listitem> + </varlistentry> + <varlistentry> + <term><literal>exec</literal></term> + <listitem> + <para>executable heap flag</para> + + </listitem> + </varlistentry> + <varlistentry> + <term><literal>grow</literal></term> + <listitem> + <para>growable heap flag</para> + + </listitem> + </varlistentry> + <varlistentry> + <term><literal>noserial</literal></term> + <listitem> + <para>do not serialize heap flag</para> + + </listitem> + </varlistentry> + <varlistentry> + <term><literal>debug</literal></term> + <listitem> + <para>debugged heap flag</para> + + </listitem> + </varlistentry> + </variablelist> + </para> + + </listitem> + </varlistentry> + </variablelist> + </para> + + <para>If the <filename>pathname</filename> field is blank, + this is an anonymous mapping as obtained via + <citerefentry> + <refentrytitle>mmap</refentrytitle><manvolnum>2</manvolnum> + </citerefentry>. + There is no easy way to coordinate this back to a process's + source, short of running it through + <citerefentry> + <refentrytitle>gdb</refentrytitle><manvolnum>1</manvolnum> + </citerefentry>, + <citerefentry> + <refentrytitle>strace</refentrytitle><manvolnum>1</manvolnum> + </citerefentry>, + or similar. + </para> + + <para> + <filename>pathname</filename> is shown unescaped except + for newline characters, which are replaced with an + octal escape sequence. + As a result, it is not possible to determine whether the + original <filename>pathname</filename> contained a newline + character or the literal <literal>\e012</literal> + character sequence. + </para> + + <para> + If the mapping is file-backed and the file has been deleted, + the string "<literal> (deleted)</literal>" + is appended to the <filename>pathname</filename>. + Note that this is ambiguous too. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/mountinfo</filename></term> + <listitem> + <para> + This file contains information about mount points in the + process's mount namespace (see + <citerefentry> + <refentrytitle>mount_namespaces</refentrytitle><manvolnum>7</manvolnum> + </citerefentry>). + It supplies various information (e.g., propagation state, root + of mount for bind mounts, identifier for each mount and its + parent) that is missing from the (older) + <filename>/proc/[pid]/mounts</filename> + file, and fixes various other problems with that file (e.g., + nonextensibility, failure to distinguish per-mount versus + per-superblock options). + </para> + + <para>The file contains lines of the form:</para> + +<screen> +<computeroutput> +36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue +(1)(2)(3) (4) (5) (6) (?) (7) (8) (9) (10) +</computeroutput> +</screen> + + <para> + The numbers in parentheses are labels for the descriptions below: + + <variablelist termlength="4" remap='TP'> + <varlistentry> + <term>(1)</term> + <listitem> + <para>mount id: a unique id for the mount (may be reused after + <citerefentry> + <refentrytitle>umount</refentrytitle><manvolnum>2</manvolnum> + </citerefentry>). + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(2)</term> + <listitem> + <para>parent id: the id of the parent mount (or of self for + the root of this mount namespace's mount tree). + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(3)</term> + <listitem> + <para><emphasis remap="B">major</emphasis><literal>:</literal><emphasis remap="B">minor</emphasis>: + the value of <literal>st_dev</literal> + for files on this filesystem (see + <citerefentry> + <refentrytitle>stat</refentrytitle><manvolnum>2</manvolnum> + </citerefentry>). + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(4)</term> + <listitem> + <para>root: the pathname of the directory in the filesystem + which forms the root of this mount. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(5)</term> + <listitem> + <para>mount point: the pathname of the mount point relative to + the process's root directory. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(6)</term> + <listitem> + <para>mount options: per-mount options (see + <citerefentry> + <refentrytitle>mount</refentrytitle><manvolnum>2</manvolnum> + </citerefentry>). + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(?)</term> + <listitem> + <para>optional fields: zero or more fields of the form + "<emphasis>tag</emphasis><literal>[:</literal><emphasis>value</emphasis><literal>]</literal>"; + see below. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(7)</term> + <listitem> + <para>separator: the end of the optional fields is marked by a + single hyphen. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(8)</term> + <listitem> + <para>filesystem type: the filesystem type in the form + "<emphasis>type</emphasis><literal>[.</literal><emphasis>subtype</emphasis><literal>]</literal>". + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(9)</term> + <listitem> + <para>mount source: filesystem-specific information or + "<literal>none</literal>". + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(10)</term> + <listitem> + <para>super options: per-superblock options (see + <citerefentry> + <refentrytitle>mount</refentrytitle><manvolnum>2</manvolnum> + </citerefentry>). + </para> + + </listitem> + </varlistentry> + </variablelist> + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/mounts</filename></term> + <listitem> + <para> + This file lists all the filesystems currently mounted in the + process's mount namespace (see + <citerefentry> + <refentrytitle>mount_namespaces</refentrytitle><manvolnum>7</manvolnum> + </citerefentry>). + The format of this file is documented in + <citerefentry> + <refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum> + </citerefentry>. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/pgid</filename></term> + <listitem> + <para> + This read-only file contains the process group id for the + process. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/ppid</filename></term> + <listitem> + <para> + This read-only file contains the parent process id for the + process. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/root</filename></term> + <listitem> + <para> + UNIX and Linux support the idea of a per-process root of the + filesystem, set by the + <citerefentry> + <refentrytitle>chroot</refentrytitle><manvolnum>2</manvolnum> + </citerefentry> system call. + This file is a symbolic link that points to the process's root + directory, and behaves in the same way as + <filename>exe</filename>, and + <filename>fd/*</filename>. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/sid</filename></term> + <listitem> + <para> + This read-only file contains the session id for the process. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/stat</filename></term> + <listitem> + <para> + Status information about the process. + This is used by some implementations of + <citerefentry> + <refentrytitle>ps</refentrytitle><manvolnum>1</manvolnum> + </citerefentry>. + </para> + + <para> + The fields, in order, with their proper + <citerefentry> + <refentrytitle>scanf</refentrytitle><manvolnum>3</manvolnum> + </citerefentry> format specifiers, are listed below. + </para> + + <variablelist remap='TP'> + <varlistentry> + <term>(1) <emphasis remap='I'>pid</emphasis> %d</term> + <listitem> + <para>The process id.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(2) <emphasis remap='I'>comm</emphasis> %s</term> + <listitem> + <para> + The filename of the executable, in parentheses. + This is visible whether or not the executable is swapped + out. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(3) <emphasis remap='I'>state</emphasis> %c</term> + <listitem> + <para> + One of the following characters, indicating process state: + </para> + + <variablelist termlength="2"> + <varlistentry> + <term>R</term> + <listitem> + <para>Runnable</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>O</term> + <listitem> + <para>Running</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>S</term> + <listitem> + <para>Sleeping in an interruptible wait</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>D</term> + <listitem> + <para>Waiting in uninterruptible disk sleep</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>Z</term> + <listitem> + <para>Zombie</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>T</term> + <listitem> + <para>Stopped (on a signal) or trace stopped</para> + + </listitem> + </varlistentry> + </variablelist> + </listitem> + </varlistentry> + <varlistentry> + <term>(4) <emphasis remap='I'>ppid</emphasis> %d</term> + <listitem> + <para>The PID of the parent of this process.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(5) <emphasis remap='I'>pgrp</emphasis> %d</term> + <listitem> + <para>The process group id of the process.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(6) <emphasis remap='I'>session</emphasis> %d</term> + <listitem> + <para>The session id of the process.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(7) <emphasis remap='I'>tty_nr</emphasis> %d</term> + <listitem> + <para> + The controlling terminal of the process. + (The minor device number is contained in the combination + of bits 31 to 20 and 7 to 0; the major device number is in + bits 15 to 8.) + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(8) <emphasis remap='I'>tpgid</emphasis> %d</term> + <listitem> + <para> + The id of the foreground process group of the controlling + terminal of the process. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(9) <emphasis remap='I'>flags</emphasis> %u</term> + <listitem> + <para>The kernel flags word of the process.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(10) <emphasis remap='I'>minflt</emphasis> %lu</term> + <listitem> + <para> + The number of minor faults the process has made which have + not required loading a memory page from disk. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(11) <emphasis remap='I'>cminflt</emphasis> %lu</term> + <listitem> + <para> + The number of minor faults that the process's waited-for + children have made. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(12) <emphasis remap='I'>majflt</emphasis> %lu</term> + <listitem> + <para> + The number of major faults the process has made which have + required loading a memory page from disk. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(13) <emphasis remap='I'>cmajflt</emphasis> %lu</term> + <listitem> + <para> + The number of major faults that the process's waited-for + children have made. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(14) <emphasis remap='I'>utime</emphasis> %lu</term> + <listitem> + <para> + Amount of time that this process has been scheduled in + user mode, measured in clock ticks (divide by + <literal>sysconf(_SC_CLK_TCK)</literal>). + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(15) <emphasis remap='I'>stime</emphasis> %lu</term> + <listitem> + <para> + Amount of time that this process has been scheduled in + kernel mode, measured in clock ticks (divide by + <literal>sysconf(_SC_CLK_TCK)</literal>). + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(16) <emphasis remap='I'>cutime</emphasis> %ld</term> + <listitem> + <para> + Amount of time that this process's waited-for children + have been scheduled in user mode, measured in clock ticks + (divide by <literal>sysconf(_SC_CLK_TCK)</literal>). + (See also + <citerefentry> + <refentrytitle>times</refentrytitle><manvolnum>2</manvolnum> + </citerefentry>). + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(17) <emphasis remap='I'>cstime</emphasis> %ld</term> + <listitem> + <para> + Amount of time that this process's waited-for children + have been scheduled in kernel mode, measured in clock + ticks (divide by <literal>sysconf(_SC_CLK_TCK)</literal>). + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(18) <emphasis remap='I'>priority</emphasis> %ld</term> + <listitem> + <para> + For processes running a real-time scheduling policy + (<emphasis remap='I'>policy</emphasis> below; see + <citerefentry> + <refentrytitle>sched_setscheduler</refentrytitle><manvolnum>2</manvolnum> + </citerefentry>), + this is the negated scheduling priority, minus one; that + is, a number in the range -2 to -100, corresponding to + real-time priorities 1 to 99. For processes running + under a non-real-time scheduling policy, this is the raw + nice value + (<citerefentry> + <refentrytitle>setpriority</refentrytitle><manvolnum>2</manvolnum> + </citerefentry>) + as represented in the kernel. + The kernel stores nice values as numbers in the range 0 + (high) to 39 (low), corresponding to the user-visible nice + range of -20 to 19. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(19) <emphasis remap='I'>nice</emphasis> %ld</term> + <listitem> + <para> + The nice value (see + <citerefentry> + <refentrytitle>setpriority</refentrytitle><manvolnum>2</manvolnum> + </citerefentry>), a value in the range 19 (low priority) + to -20 (high priority). + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(20) <emphasis remap='I'>num_threads</emphasis> %ld</term> + <listitem> + <para> + Number of threads in this process. Currently shown as 0. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(21) <emphasis remap='I'>itrealvalue</emphasis> %ld</term> + <listitem> + <para> + The time in jiffies before the next + <literal>SIGALRM</literal> + is sent to the process due to an interval timer. + This field is no longer maintained, and is hard coded as 0. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(22) <emphasis remap='I'>starttime</emphasis> %llu</term> + <listitem> + <para> + The time the process started after system boot. + The value is expressed in clock ticks (divide by + <literal>sysconf(_SC_CLK_TCK)</literal>). + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(23) <emphasis remap='I'>vsize</emphasis> %lu</term> + <listitem> + <para>Virtual memory size in bytes.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(24) <emphasis remap='I'>rss</emphasis> %ld</term> + <listitem> + <para> + Resident Set Size: number of pages the process has in real + memory. + This is just the pages which count toward text, data, or + stack space. + This does not include pages which have not been + demand-loaded in, or which are swapped out. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(25) <emphasis remap='I'>rsslim</emphasis> %lu</term> + <listitem> + <para> + Current soft limit in bytes on the rss of the process; see + the description of <literal>RLIMIT_RSS</literal> in + <citerefentry> + <refentrytitle>getrlimit</refentrytitle><manvolnum>2</manvolnum> + </citerefentry>. + </para> + + </listitem> + </varlistentry> + </variablelist> + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/statm</filename></term> + <listitem> + <para> + Provides information about memory usage, measured in pages. + The columns are: + + <variablelist termlength="12"> + <varlistentry> + <term>(1) size</term> + <listitem> + <para>total program size + (same as VmSize in <filename>/proc/[pid]/status</filename>)</para> + </listitem> + </varlistentry> + <varlistentry> + <term>(2) resident</term> + <listitem> + <para>resident set size + (same as VmRSS in <filename>/proc/[pid]/status</filename>)</para> + </listitem> + </varlistentry> + <varlistentry> + <term>(3) shared</term> + <listitem> + <para>number of resident shared pages + (i.e., backed by a file) (same as RssFile+RssShmem in + <filename>/proc/[pid]/status</filename>)</para> + </listitem> + </varlistentry> + <varlistentry> + <term>(4) text</term> + <listitem><para>text (code)</para></listitem> + </varlistentry> + <varlistentry> + <term>(5) lib</term> + <listitem><para>library</para></listitem> + </varlistentry> + <varlistentry> + <term>(6) data</term> + <listitem><para>data + stack</para></listitem> + </varlistentry> + <varlistentry> + <term>(7) dt</term> + <listitem><para>dirty pages (always 0)</para></listitem> + </varlistentry> + </variablelist> + + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/status</filename></term> + <listitem> + <para> + Provides much of the information in + <filename>/proc/[pid]/stat</filename> and + <filename>/proc/[pid]/statm</filename> + in a format that's easier for humans to parse. + Here's an example: + + <screen> + <prompt>$</prompt> <userinput>cat /proc/$$/status</userinput> + <computeroutput> + Name: bash + Umask: 0022 + State: S (sleeping) + Tgid: 17248 + Pid: 17248 + PPid: 17200 + Uid: 1000 1000 1000 1000 + Gid: 100 100 100 100 + VmSize: 131168 kB + VmLck: 0 kB + VmRSS: 13484 kB + VmData: 10332 kB + VmStk: 136 kB + VmExe: 992 kB + VmLib: 2104 kB + SigPnd: 0000000000000000 + SigBlk: 0000000000010000 + SigIgn: 0000000000384004 + </computeroutput> + </screen> + + </para> + + <para>The fields are as follows: + <itemizedlist remap='IP+bullet'> + <listitem> + <para> + <emphasis remap='I'>Name</emphasis>: + Command run by this process. + </para> + + </listitem> + <listitem> + <para> + <emphasis remap='I'>Umask</emphasis>: + Process umask, expressed in octal with a leading zero; see + <citerefentry> + <refentrytitle>umask</refentrytitle><manvolnum>2</manvolnum> + </citerefentry>. + </para> + + </listitem> + <listitem> + <para> + <emphasis remap='I'>State</emphasis>: + Current state of the process. + One of: + + <variablelist termlength="2" remap='TP'> + <varlistentry> + <term>R</term> + <listitem><para>runnable</para></listitem> + + </varlistentry> + <varlistentry> + <term>O</term> + <listitem><para>running</para></listitem> + + </varlistentry> + <varlistentry> + <term>S</term> + <listitem><para>sleeping</para></listitem> + + </varlistentry> + <varlistentry> + <term>D</term> + <listitem><para>disk sleep</para></listitem> + + </varlistentry> + <varlistentry> + <term>T</term> + <listitem><para>stopped or tracing stop</para></listitem> + + </varlistentry> + <varlistentry> + <term>Z</term> + <listitem><para>zombie</para></listitem> + + </varlistentry> + </variablelist> + </para> + + </listitem> + <listitem> + <para> + <emphasis remap='I'>Tgid</emphasis>: + Thread group id (i.e., Process id). + </para> + + </listitem> + <listitem> + <para> + <emphasis remap='I'>Pid</emphasis>: + Thread id (see + <citerefentry> + <refentrytitle>gettid</refentrytitle><manvolnum>2</manvolnum> + </citerefentry>). + </para> + + </listitem> + <listitem> + <para> + <emphasis remap='I'>PPid</emphasis>: + PID of parent process. + </para> + + </listitem> + <listitem> + <para> + <emphasis remap='I'>Uid</emphasis>, + <emphasis remap='I'>Gid</emphasis>: + Real, effective, saved set, and filesystem UIDs (GIDs). + </para> + + </listitem> + <listitem> + <para> + <emphasis remap='I'>VmSize</emphasis>: + Virtual memory size. + </para> + + </listitem> + <listitem> + <para> + <emphasis remap='I'>VmLck</emphasis>: + Locked memory size (see + <citerefentry> + <refentrytitle>mlock</refentrytitle><manvolnum>2</manvolnum> + </citerefentry>). + </para> + + </listitem> + <listitem> + <para> + <emphasis remap='I'>VmRSS</emphasis>: + Resident set size. + </para> + + </listitem> + <listitem> + <para> + <emphasis remap='I'>VmData</emphasis>, + <emphasis remap='I'>VmStk</emphasis>, + <emphasis remap='I'>VmExe</emphasis>: + Size of data, stack, and text segments. + </para> + + </listitem> + <listitem> + <para> + <emphasis remap='I'>VmLib</emphasis>: + Shared library code size. + </para> + + </listitem> + <listitem> + <para> + <emphasis remap='I'>SigPnd</emphasis>: + Number of signals pending for process as a whole (see + <citerefentry> + <refentrytitle>pthreads</refentrytitle><manvolnum>7</manvolnum> + </citerefentry> and + <citerefentry> + <refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>). + </para> + + </listitem> + <listitem> + <para> + <emphasis remap='I'>SigBlk</emphasis>, + <emphasis remap='I'>SigIgn</emphasis>: + Masks indicating signals being blocked and ignored (see + <citerefentry> + <refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum> + </citerefentry>). + </para> + + </listitem> + </itemizedlist> + </para> + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/uid</filename></term> + <listitem> + <para> + This read-only file contains the user id for the process. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/winexename</filename></term> + <listitem> + <para> + This read-only file contains the Windows pathname of the + executed command. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/[pid]/winpid</filename></term> + <listitem> + <para> + This read-only file contains the Windows process id for the + process. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/cpuinfo</filename></term> + <listitem> + <para> + This is a collection of CPU and system architecture dependent + items, for each supported architecture a different list. + Two common entries are <emphasis remap='I'>processor</emphasis> + which gives CPU number and + <emphasis remap='I'>bogomips</emphasis>, a system constant + that is calculated during kernel initialization. + SMP machines have information for each CPU. + The + <citerefentry> + <refentrytitle>lscpu</refentrytitle><manvolnum>1</manvolnum> + </citerefentry> + command gathers its information from this file. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/cygdrive</filename></term> + <listitem> + <para> + This file is a symbolic link that points to the user's + Windows mapped drive mount point, similar to + <emphasis remap='I'>root</emphasis>. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/devices</filename></term> + <listitem> + <para> + Text listing of major numbers and device groups. + This can be used by <command>makedev</command> + scripts for consistency with the system. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/filesystems</filename></term> + <listitem> + <para> + A text listing of the filesystems which are supported by Cygwin. + (See also + <citerefentry> + <refentrytitle>filesystems</refentrytitle><manvolnum>5</manvolnum> + </citerefentry>.) + If a filesystem is marked with "nodev", this means that it + does not require a block device to be mounted (e.g., virtual + filesystem, network filesystem). + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/loadavg</filename></term> + <listitem> + <para> + The first three fields in this file are load average figures + giving the number of jobs in the run queue (state R) or waiting + for disk I/O (state D) averaged over 1, 5, and 15 minutes. + They are the same as the load average numbers given by + <citerefentry> + <refentrytitle>uptime</refentrytitle><manvolnum>1</manvolnum> + </citerefentry> and other programs. + The fourth field consists of two numbers separated by a slash (/). + The first of these is the number of currently runnable + scheduling entities (processes, threads). + The value after the slash is the number of scheduling entities + that currently exist on the system. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/meminfo</filename></term> + <listitem> + <para> + This file reports statistics about memory usage on the system. + It is used by + <citerefentry> + <refentrytitle>free</refentrytitle><manvolnum>1</manvolnum> + </citerefentry> + to report the amount of free and used memory (both physical + and swap) on the system as well as the shared memory and + buffers used by the kernel. + Each line of the file consists of a parameter name, followed by + a colon, the value of the parameter, and an option unit of + measurement (e.g., "kB"). + The list below describes the parameter names and the format + specifier required to read the field value. + Some fields are displayed only if the system was configured + with various options; those dependencies are noted in the + list. + </para> + + <variablelist remap='TP'> + <varlistentry> + <term><emphasis remap='I'>MemTotal</emphasis> %lu</term> + <listitem> + <para> + Total usable RAM (i.e., physical RAM minus a few reserved + bits and the kernel binary code). + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis remap='I'>MemFree</emphasis> %lu</term> + <listitem> + <para> + The sum of <emphasis remap='I'>LowFree</emphasis> + + <emphasis remap='I'>HighFree</emphasis>. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis remap='I'>HighTotal</emphasis> %lu</term> + <listitem> + <para>Total amount of highmem.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis remap='I'>HighFree</emphasis> %lu</term> + <listitem> + <para>Amount of free highmem.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis remap='I'>LowTotal</emphasis> %lu</term> + <listitem> + <para> + Total amount of lowmem. + Lowmem is memory which can be used for everything that + highmem can be used for, but it is also available for the + system's use for its own data structures. + Bad things happen when you're out of lowmem. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis remap='I'>LowFree</emphasis> %lu</term> + <listitem> + <para>Amount of free lowmem.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis remap='I'>SwapTotal</emphasis> %lu</term> + <listitem> + <para>Total amount of swap space available.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis remap='I'>SwapFree</emphasis> %lu</term> + <listitem> + <para>Amount of swap space that is currently unused.</para> + + </listitem> + </varlistentry> + </variablelist> + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/misc</filename></term> + <listitem> + <para> + Text listing of minor device numbers and names of devices with + major device number of the <literal>misc</literal> device group. + This can be used by <command>makedev</command> scripts + for consistency with the system. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/mounts</filename></term> + <listitem> + <para> + With the introduction of per-process mount namespaces, this file + became a link to + <filename>/proc/self/mounts</filename>, + which lists the mount points of the process's own mount + namespace. + The format of this file is documented in + <citerefentry> + <refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum> + </citerefentry>. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/net</filename></term> + <listitem> + <para> + This directory contains various files and subdirectories + containing information about the networking layer. + The files contain ASCII structures and are, therefore, readable + with + <citerefentry> + <refentrytitle>cat</refentrytitle><manvolnum>1</manvolnum> + </citerefentry>. + However, the standard + <citerefentry> + <refentrytitle>netstat</refentrytitle><manvolnum>8</manvolnum> + </citerefentry> + suite provides much cleaner access to these files. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/net/if_inet6</filename></term> + <listitem> + <para> + This file contains information about IP V6 interface adapters, + if used. + Each line represents an IP V6 interface adapter. + </para> + +<screen> +<computeroutput> +fe800000000000002c393d3da6108636 12 40 20 80 {C6B5FBE5-A3AC-4DB0-A308-8EE94E1406A4} +fe8000000000000039da016f76bd92bc 13 40 20 20 {E06B8972-0918-41FC-851B-090C446C7D1C} +fe8000000000000050ba9cedf1fe1628 0b 40 20 20 {680ED6FD-DFAC-4398-AA85-FB33E17E38EA} +fe8000000000000030c5c6a0b30f109d 11 40 20 20 {B9E39F53-1659-4065-BDA5-F41162250E03} +20021840ac2c12343427e3b9ec6fa585 08 40 00 80 {4083A7F8-99CF-4220-8715-6FDF268B002F} +20021840ac2c12342403e3b2c7a5a32f 08 80 00 20 {4083A7F8-99CF-4220-8715-6FDF268B002F} +20021840ac2c1234284e8d0ecb4160cb 08 80 00 20 {4083A7F8-99CF-4220-8715-6FDF268B002F} +20021840ac2c123468cb06ea72f1d678 08 80 00 80 {4083A7F8-99CF-4220-8715-6FDF268B002F} +20021840ac2c12346cb59aca97c36e3b 08 80 00 20 {4083A7F8-99CF-4220-8715-6FDF268B002F} +20021840ac2c123498af9881de1fb828 08 80 00 20 {4083A7F8-99CF-4220-8715-6FDF268B002F} +20021840ac2c1234cd62a3d73a498611 08 80 00 20 {4083A7F8-99CF-4220-8715-6FDF268B002F} +20021840ac2c1234e410c873be09df93 08 80 00 20 {4083A7F8-99CF-4220-8715-6FDF268B002F} +fe800000000000003427e3b9ec6fa585 08 40 20 80 {4083A7F8-99CF-4220-8715-6FDF268B002F} +00000000000000000000000000000001 01 80 10 80 {2B5345AC-7502-11EA-AC73-806E6F6E6963} + (1) (2)(3)(4)(5) (6) +</computeroutput> +</screen> + + <para>The fields in each line are: + + <variablelist termlength="4" remap='TP'> + <varlistentry> + <term>(1)</term> + <listitem> + <para>The IP V6 address of the interface adapter.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(2)</term> + <listitem> + <para>The IP V6 interface adapter index.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(3)</term> + <listitem> + <para> + The prefix length of the IP V6 interface address. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(4)</term> + <listitem> + <para>The scope of the IP V6 interface address.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(5)</term> + <listitem> + <para>The state of the IP V6 interface address.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(6)</term> + <listitem> + <para> + The DUID/GUID/UUID of the IP V6 interface adapter. + </para> + + </listitem> + </varlistentry> + </variablelist> + <para> + The last number exists only for compatibility reasons and is + always 1. + </para> + + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/partitions</filename></term> + <listitem> + <para> + Contains the major and minor numbers of each partition as well + as the number of 1024-byte blocks and the partition name. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/registry</filename></term> + <listitem> + <para> + Under Windows, this directory contains subdirectories for + registry paths, keys, and subkeys, and files named for registry + values which contain registry data, for the current process. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/registry32</filename></term> + <listitem> + <para> + Under 64 bit Windows, this directory contains subdirectories for + registry paths, keys, and subkeys, and files named for registry + values which contain registry data, for 32 bit processes. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/registry64</filename></term> + <listitem> + <para> + Under 64 bit Windows, this directory contains subdirectories for + registry paths, keys, and subkeys, and files named for registry + values which contain registry data, for 64 bit processes. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/self</filename></term> + <listitem> + <para> + This directory refers to the process accessing the + <filename>/proc</filename> filesystem, and is identical to the + <filename>/proc</filename> directory named by the process id + of the same process. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/stat</filename></term> + <listitem> + <para> + kernel/system statistics. + Varies with architecture. + Common entries include: + <variablelist remap='TP'> + <varlistentry> + <term><emphasis remap='I'>cpu 10132153 0 3084719 46828483</emphasis></term> + <listitem> + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis remap='I'>cpu0 1393280 0 572056 13343292</emphasis></term> + <listitem> + <para> + The amount of time, measured in units of USER_HZ + (1/100ths of a second on most architectures, use + <literal>sysconf(_SC_CLK_TCK)</literal> + to obtain the right value), that the system ("cpu" + line) or the specific CPU + ("cpu <emphasis remap='I'>N</emphasis>" line) + spent in various states: + + <variablelist termlength="10" remap='TP'> + <varlistentry> + <term>(1) <emphasis remap='I'>user</emphasis></term> + <listitem> + <para>Time spent in user mode.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(2) <emphasis remap='I'>nice</emphasis></term> + <listitem> + <para> + Time spent in user mode with low priority + (nice). + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(3) <emphasis remap='I'>system</emphasis></term> + <listitem> + <para>Time spent in system mode.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term>(4) <emphasis remap='I'>idle</emphasis></term> + <listitem> + <para>Time spent in the idle task.</para> + + </listitem> + </varlistentry> + </variablelist> + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis remap='I'>page 5741 1808</emphasis></term> + <listitem> + <para> + The number of pages the system paged in and the number + that were paged out (from disk). + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis remap='I'>swap 1 0</emphasis></term> + <listitem> + <para> + The number of swap pages that have been brought in and + out. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis remap='I'>intr 1462898</emphasis></term> + <listitem> + <para>The number of interrupts serviced.</para> + + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis remap='I'>ctxt 115315</emphasis></term> + <listitem> + <para> + The number of context switches that the system + underwent. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><emphasis remap='I'>btime 769041601</emphasis></term> + <listitem> + <para> + boot time, in seconds since the Epoch, + 1970-01-01 00:00:00 +0000 (UTC). + </para> + + </listitem> + </varlistentry> + </variablelist> + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/swaps</filename></term> + <listitem> + <para> + Swap areas in use. + See also + <citerefentry> + <refentrytitle>swapon</refentrytitle><manvolnum>8</manvolnum> + </citerefentry>. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/sys</filename></term> + <listitem> + <para> + This directory contains a number of files and subdirectories + linking to Windows objects, which can be read using these + entries. + </para> + + <para> + String values may be terminated by either '\0' + or '\n'. + </para> + + <para> + Integer and long values may be either in decimal or in + hexadecimal notation (e.g. 0x3FFF). + Multiple integer or long values may be separated by any of the + following whitespace characters: + ' ', '\t', or + '\n'. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/sysvipc</filename></term> + <listitem> + <para> + Subdirectory containing the pseudo-files + <filename>msg</filename>, <filename>sem</filename>and + <filename>shm</filename>. + These files list the System V Interprocess Communication (IPC) + objects (respectively: message queues, semaphores, and shared + memory) that currently exist on the system, providing similar + information to that available via + <citerefentry> + <refentrytitle>ipcs</refentrytitle><manvolnum>1</manvolnum> + </citerefentry>. + These files are only available if the cygserver Cygwin service + is running. + These files have headers and are formatted (one IPC object per + line) for easy understanding. + <citerefentry> + <refentrytitle>svipc</refentrytitle><manvolnum>7</manvolnum> + </citerefentry> + provides further background on the information shown by these + files. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/uptime</filename></term> + <listitem> + <para> + This file contains two numbers (values in seconds): the uptime + of the system (including time spent in suspend) and the amount + of time spent in the idle process. + </para> + + </listitem> + </varlistentry> + <varlistentry> + <term><filename>/proc/version</filename></term> + <listitem> + <para> + This string identifies the kernel version that is currently + running. + For example: + +<screen> +<computeroutput> +CYGWIN_NT-10.0-18363 version 3.1.7-340.x86_64 (corinna@calimero) (gcc version 9.3.0 20200312 (Fedora Cygwin 9.3.0-1) (GCC) ) 2020-08-22 17:48 UTC +</computeroutput> +</screen> + + </para> + + </listitem> + </varlistentry> + </variablelist> + + <para> + Many files contain strings (e.g., the environment and command + line) that are in the internal format, with subfields terminated + by null bytes ('\0'). + When inspecting such files, you may find that the results are + more readable if you use a command of the following form to + display them: + + <screen> + <prompt>$</prompt> <userinput>cat -A <emphasis remap='I'>file</emphasis></userinput> + </screen> + </para> + + <para> + This manual page is incomplete, possibly inaccurate, and is the kind + of thing that needs to be updated very often. + </para> + </refsect2> + </refsect1> + + <refsect1 id='proc-see_also'><title>See Also</title> + <para> + <citerefentry> + <refentrytitle>cat</refentrytitle><manvolnum>1</manvolnum> + </citerefentry>, + <citerefentry> + <refentrytitle>find</refentrytitle><manvolnum>1</manvolnum> + </citerefentry>, + <citerefentry> + <refentrytitle>free</refentrytitle><manvolnum>1</manvolnum> + </citerefentry>, + <citerefentry> + <refentrytitle>ps</refentrytitle><manvolnum>1</manvolnum> + </citerefentry>, + <citerefentry> + <refentrytitle>pstree</refentrytitle><manvolnum>1</manvolnum> + </citerefentry>, + <citerefentry> + <refentrytitle>tr</refentrytitle><manvolnum>1</manvolnum> + </citerefentry>, + <citerefentry> + <refentrytitle>uptime</refentrytitle><manvolnum>1</manvolnum> + </citerefentry>, + <citerefentry> + <refentrytitle>chroot</refentrytitle><manvolnum>2</manvolnum> + </citerefentry>, + <citerefentry> + <refentrytitle>mmap</refentrytitle><manvolnum>2</manvolnum> + </citerefentry>, + <citerefentry> + <refentrytitle>readlink</refentrytitle><manvolnum>2</manvolnum> + </citerefentry>, + <citerefentry> + <refentrytitle>syslog</refentrytitle><manvolnum>2</manvolnum> + </citerefentry>, + <citerefentry> + <refentrytitle>hier</refentrytitle><manvolnum>7</manvolnum> + </citerefentry>, + <citerefentry> + <refentrytitle>arp</refentrytitle><manvolnum>8</manvolnum> + </citerefentry>, + <citerefentry> + <refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum> + </citerefentry>, + <citerefentry> + <refentrytitle>netstat</refentrytitle><manvolnum>8</manvolnum> + </citerefentry>, + <citerefentry> + <refentrytitle>route</refentrytitle><manvolnum>8</manvolnum> + </citerefentry>. + </para> + </refsect1> + + <refsect1 id='proc-colophon'><title>Colophon</title> + <para> + This page is part of the <emphasis remap='I'>Cygwin</emphasis> project. + A description of the project, information about reporting bugs, and the + latest documentation, can be found on + <ulink + url="https://cygwin.com/docs.html">the Cygwin project web pages</ulink>. + </para> + </refsect1> + </refentry> </sect2> <sect2 id="pathnames-proc-registry"><title>The /proc/registry filesystem</title>