Thứ Sáu, 28 tháng 2, 2014

Tài liệu Advanced Linux Programming: 7-The /proc File System pdf

The /proc File System
7
TRY INVOKING THE mount COMMAND WITHOUT ARGUMENTS—this displays the file
systems currently mounted on your GNU/Linux computer.You’ll see one line that
looks like this:
none on /proc type proc (rw)
This is the special /proc file system. Notice that the first field, none, indicates that this
file system isn’t associated with a hardware device such as a disk drive. Instead, /proc
is a window into the running Linux kernel. Files in the /proc file system don’t corre-
spond to actual files on a physical device. Instead, they are magic objects that behave
like files but provide access to parameters, data structures, and statistics in the kernel.
The “contents” of these files are not always fixed blocks of data, as ordinary file con-
tents are. Instead, they are generated on the fly by the Linux kernel when you read
from the file.You can also change the configuration of the running kernel by writing
to certain files in the
/proc file system.
Let’s look at an example:
% ls -l /proc/version
-r r r 1 root root 0 Jan 17 18:09 /proc/version
Note that the file size is zero; because the file’s contents are generated by the kernel,
the concept of file size is not applicable. Also, if you try this command yourself, you’ll
notice that the modification time on the file is the current time.
09 0430 CH07 5/22/01 10:30 AM Page 147
148
Chapter 7 The /proc File System
What’s in this file? The contents of /proc/version consist of a string describing the
Linux kernel version number. It contains the version information that would be
obtained by the uname system call, described in Chapter 8,“Linux System Calls,” in
Section 8.15,“uname,” plus additional information such as the version of the compiler
that was used to compile the kernel.You can read from /proc/version like you would
any other file. For instance, an easy way to display its contents is with the cat command.
% cat /proc/version
Linux version 2.2.14-5.0 (root@porky.devel.redhat.com) (gcc version egcs-2.91.
66 19990314/Linux (egcs-1.1.2 release)) #1 Tue Mar 7 21:07:39 EST 2000
The various entries in the /proc file system are described extensively in the proc man
page (Section 5).To view it, invoke this command:
% man 5 proc
In this chapter, we’ll describe some of the features of the /proc file system that are
most likely to be useful to application programmers, and we’ll give examples of using
them. Some of the features of /proc are handy for debugging, too.
If you’re interested in exactly how /proc works, take a look at the source code in
the Linux kernel sources, under /usr/src/linux/fs/proc/.
7.1 Extracting Information from /proc
Most of the entries in /proc provide information formatted to be readable by humans,
but the formats are simple enough to be easily parsed. For example, /proc/cpuinfo
contains information about the system CPU (or CPUs, for a multiprocessor machine).
The output is a table of values, one per line, with a description of the value and a
colon preceding each value.
For example, the output might look like this:
% cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 5
model name : Pentium II (Deschutes)
stepping : 2
cpu MHz : 400.913520
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
sep_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep
mtrr pge mca cmov pat pse36 mmx fxsr
bogomips : 399.77
09 0430 CH07 5/22/01 10:30 AM Page 148
149
7.1 Extracting Information from /proc
We ’ll describe the interpretation of some of these fields in Section 7.3.1,“CPU
Information.”
A simple way to extract a value from this output is to read the file into a buffer and
parse it in memory using sscanf. Listing 7.1 shows an example of this.The program
includes the function get_cpu_clock_speed that reads from /proc/cpuinfo into
memory and extracts the first CPU’s clock speed.
Listing 7.1 (clock-speed.c) Extract CPU Clock Speed from /proc/cpuinfo
#include <stdio.h>
#include <string.h>
/* Returns the clock speed of the system’s CPU in MHz, as reported by
/proc/cpuinfo. On a multiprocessor machine, returns the speed of
the first CPU. On error returns zero. */
float get_cpu_clock_speed ()
{
FILE* fp;
char buffer[1024];
size_t bytes_read;
char* match;
float clock_speed;
/* Read the entire contents of /proc/cpuinfo into the buffer. */
fp = fopen (“/proc/cpuinfo”, “r”);
bytes_read = fread (buffer, 1, sizeof (buffer), fp);
fclose (fp);
/* Bail if read failed or if buffer isn’t big enough. */
if (bytes_read == 0
|| bytes_read == sizeof (buffer))
return 0;
/* NUL-terminate the text. */
buffer[bytes_read] = ‘\0’;
/* Locate the line that starts with “cpu MHz”. */
match = strstr (buffer, “cpu MHz”);
if (match == NULL)
return 0;
/* Parse the line to extract the clock speed. */
sscanf (match, “cpu MHz : %f”, &clock_speed);
return clock_speed;
}
int main ()
{
printf (“CPU clock speed: %4.0f MHz\n”, get_cpu_clock_speed ());
return 0;
}
09 0430 CH07 5/22/01 10:30 AM Page 149
150
Chapter 7 The /proc File System
Be aware, however, that the names, semantics, and output formats of entries in the
/proc file system might change in new Linux kernel revisions. If you use them in a
program, you should make sure that the program’s behavior degrades gracefully if the
/proc entry is missing or is formatted unexpectedly.
7.2 Process Entries
The /proc file system contains a directory entry for each process running on the
GNU/Linux system.The name of each directory is the process ID of the correspond-
ing process.
1
These directories appear and disappear dynamically as processes start and
terminate on the system. Each directory contains several entries providing access to
information about the running process. From these process directories the /proc file
system gets its name.
Each process directory contains these entries:
n
cmdline contains the argument list for the process.The cmdline entry is
described in Section 7.2.2, “Process Argument List.”
n
cwd is a symbolic link that points to the current working directory of the process
(as set, for instance, with the chdir call).
n
environ contains the process’s environment.The environ entry is described in
Section 7.2.3,“Process Environment.”
n
exe is a symbolic link that points to the executable image running in the
process.The exe entry is described in Section 7.2.4,“Process Executable.”
n
fd is a subdirectory that contains entries for the file descriptors opened by the
process.These are described in Section 7.2.5, “Process File Descriptors.”
n
maps displays information about files mapped into the process’s address. See
Chapter 5,“Interprocess Communication,” Section 5.3,“Mapped Memory,” for
details of how memory-mapped files work. For each mapped file, maps displays
the range of addresses in the process’s address space into which the file is
mapped, the permissions on these addresses, the name of the file, and other
information.
The
maps table for each process displays the executable running in the process,
any loaded shared libraries, and other files that the process has mapped in.
n
root is a symbolic link to the root directory for this process. Usually, this is a
symbolic link to /, the system root directory.The root directory for a process
can be changed using the chroot call or the chroot command.
2
1. On some UNIX systems, the process IDs are padded with zeros. On GNU/Linux, they
are not.
2.The
chroot call and command are outside the scope of this book. See the chroot man page
in Section 1 for information about the command (invoke
man 1 chroot), or the chroot man
page in Section 2 (invoke
man 2 chroot) for information about the call.
09 0430 CH07 5/22/01 10:30 AM Page 150
151
7.2 Process Entries
n
stat contains lots of status and statistical information about the process.These
are the same data as presented in the status entry, but in raw numerical format,
all on a single line.The format is difficult to read but might be more suitable for
parsing by programs.
If you want to use the stat entry in your programs, see the proc man page,
which describes its contents, by invoking man 5 proc.
n
statm contains information about the memory used by the process.The statm
entry is described in Section 7.2.6, “Process Memory Statistics.”
n
status contains lots of status and statistical information about the process,
formatted to be comprehensible by humans. Section 7.2.7, “Process Statistics,”
contains a description of the
status entry.
n
The cpu entry appears only on SMP Linux kernels. It contains a breakdown of
process time (user and system) by CPU.
Note that for security reasons, the permissions of some entries are set so that only the
user who owns the process (or the superuser) can access them.
7.2.1 /proc/self
One additional entry in the /proc file system makes it easy for a program to use /proc
to find information about its own process.The entry /proc/self is a symbolic link to
the /proc directory corresponding to the current process.The destination of the
/proc/self link depends on which process looks at it: Each process sees its own
process directory as the target of the link.
For example, the program in Listing 7.2 reads the target of the /proc/self link to
determine its process ID. (We’re doing it this way for illustrative purposes only; calling
the getpid function, described in Chapter 3,“Processes,” in Section 3.1.1,“Process
IDs,” is a much easier way to do the same thing.) This program uses the readlink sys-
tem call, described in Section 8.11,“readlink: Reading Symbolic Links,” to extract
the target of the symbolic link.
Listing 7.2 (get-pid.c) Obtain the Process ID from /proc/self
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
/* Returns the process ID of the calling processes, as determined from
the /proc/self symlink. */
pid_t get_pid_from_proc_self ()
{
char target[32];
int pid;
/* Read the target of the symbolic link. */
readlink (“/proc/self”, target, sizeof (target));
continues
09 0430 CH07 5/22/01 10:30 AM Page 151
152
Chapter 7 The /proc File System
/* The target is a directory named for the process ID. */
sscanf (target, “%d”, &pid);
return (pid_t) pid;
}
int main ()
{
printf (“/proc/self reports process id %d\n”,
(int) get_pid_from_proc_self ());
printf (“getpid() reports process id %d\n”, (int) getpid ());
return 0;
}
7.2.2 Process Argument List
The cmdline entry contains the process argument list (see Chapter 2,“Writing Good
GNU/Linux Software,” Section 2.1.1,“The Argument List”).The arguments are pre-
sented as a single character string, with arguments separated by NULs. Most string func-
tions expect that the entire character string is terminated with a single NUL and will not
handle NULs embedded within strings, so you’ll have to handle the contents specially.
NUL vs. NULL
NUL is the character with integer value 0. It’s different from NULL, which is a pointer with value 0.
In C, a character string is usually terminated with a NUL character. For instance, the character string
“Hello, world!” occupies 14 bytes because there is an implicit NUL after the exclamation point
indicating the end of the string.
NULL, on the other hand, is a pointer value that you can be sure will never correspond to a real memory
address in your program.
In C and C++, NUL is expressed as the character constant
‘\0’, or (char) 0. The definition of NULL
differs among operating systems; on Linux, it is defined as ((void*)0) in C and simply 0 in C++.
In Section 2.1.1, we presented a program in Listing 2.1 that printed out its own argu-
ment list. Using the cmdline entries in the /proc file system, we can implement a pro-
gram that prints the argument of another process. Listing 7.3 is such a program; it
prints the argument list of the process with the specified process ID. Because there
may be several NULs in the contents of cmdline rather than a single one at the end,
we can’t determine the length of the string with strlen (which simply counts the
number of characters until it encounters a NUL). Instead, we determine the length of
cmdline from read, which returns the number of bytes that were read.
Listing 7.2 Continued
09 0430 CH07 5/22/01 10:30 AM Page 152
153
7.2 Process Entries
Listing 7.3 (print-arg-list.c) Print the Argument List of a Running Process
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
/* Prints the argument list, one argument to a line, of the process
given by PID. */
void print_process_arg_list (pid_t pid)
{
int fd;
char filename[24];
char arg_list[1024];
size_t length;
char* next_arg;
/* Generate the name of the cmdline file for the process. */
snprintf (filename, sizeof (filename), “/proc/%d/cmdline”, (int) pid);
/* Read the contents of the file. */
fd = open (filename, O_RDONLY);
length = read (fd, arg_list, sizeof (arg_list));
close (fd);
/* read does not NUL-terminate the buffer, so do it here. */
arg_list[length] = ‘\0’;
/* Loop over arguments. Arguments are separated by NULs. */
next_arg = arg_list;
while (next_arg < arg_list + length) {
/* Print the argument. Each is NUL-terminated, so just treat it
like an ordinary string. */
printf (“%s\n”, next_arg);
/* Advance to the next argument. Since each argument is
NUL-terminated, strlen counts the length of the next argument,
not the entire argument list. */
next_arg += strlen (next_arg) + 1;
}
}
int main (int argc, char* argv[])
{
pid_t pid = (pid_t) atoi (argv[1]);
print_process_arg_list (pid);
return 0;
}
09 0430 CH07 5/22/01 10:30 AM Page 153
154
Chapter 7 The /proc File System
For example, suppose that process 372 is the system logger daemon, syslogd.
% ps 372
PID TTY STAT TIME COMMAND
372 ? S 0:00 syslogd -m 0
% ./print-arg-list 372
syslogd
-m
0
In this case, syslogd was invoked with the arguments -m 0.
7.2.3 Process Environment
The environ entry contains a process’s environment (see Section 2.1.6,“The
Environment”). As with cmdline, the individual environment variables are separated by
NULs.The format of each element is the same as that used in the environ variable,
namely VARIABLE=value.
Listing 7.4 presents a generalization of the program in Listing 2.3 in Section 2.1.6.
This version takes a process ID number on its command line and prints the environ-
ment for that process by reading it from /proc.
Listing 7.4 (print-environment.c) Display the Environment of a Process
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
/* Prints the environment, one environment variable to a line, of the
process given by PID. */
void print_process_environment (pid_t pid)
{
int fd;
char filename[24];
char environment[8192];
size_t length;
char* next_var;
/* Generate the name of the environ file for the process. */
snprintf (filename, sizeof (filename), “/proc/%d/environ”, (int) pid);
/* Read the contents of the file. */
fd = open (filename, O_RDONLY);
length = read (fd, environment, sizeof (environment));
close (fd);
/* read does not NUL-terminate the buffer, so do it here. */
environment[length] = ‘\0’;
09 0430 CH07 5/22/01 10:30 AM Page 154
155
7.2 Process Entries
/* Loop over variables. Variables are separated by NULs. */
next_var = environment;
while (next_var < environment + length) {
/* Print the variable. Each is NUL-terminated, so just treat it
like an ordinary string. */
printf (“%s\n”, next_var);
/* Advance to the next variable. Since each variable is
NUL-terminated, strlen counts the length of the next variable,
not the entire variable list. */
next_var += strlen (next_var) + 1;
}
}
int main (int argc, char* argv[])
{
pid_t pid = (pid_t) atoi (argv[1]);
print_process_environment (pid);
return 0;
}
7.2.4 Process Executable
The exe entry points to the executable file being run in a process. In Section 2.1.1,
we explained that typically the program executable name is passed as the first element
of the argument list. Note, though, that this is purely conventional; a program may be
invoked with any argument list. Using the exe entry in the /proc file system is a more
reliable way to determine which executable is running.
One useful technique is to extract the path containing the executable from the
/proc file system. For many programs, auxiliary files are installed in directories with
known paths relative to the main program executable, so it’s necessary to determine
where that executable actually is.The function get_executable_path in Listing 7.5
determines the path of the executable running in the calling process by examining the
symbolic link /proc/self/exe.
Listing 7.5 (get-exe-path.c) Get the Path of the Currently Running Program
Executable
#include <limits.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
/* Finds the path containing the currently running program executable.
The path is placed into BUFFER, which is of length LEN. Returns
the number of characters in the path, or -1 on error. */
continues
09 0430 CH07 5/22/01 10:30 AM Page 155
156
Chapter 7 The /proc File System
size_t get_executable_path (char* buffer, size_t len)
{
char* path_end;
/* Read the target of /proc/self/exe. */
if (readlink (“/proc/self/exe”, buffer, len) <= 0)
return -1;
/* Find the last occurrence of a forward slash, the path separator. */
path_end = strrchr (buffer, ‘/’);
if (path_end == NULL)
return -1;
/* Advance to the character past the last slash. */
++path_end;
/* Obtain the directory containing the program by truncating the
path after the last slash. */
*path_end = ‘\0’;
/* The length of the path is the number of characters up through the
last slash. */
return (size_t) (path_end - buffer);
}
int main ()
{
char path[PATH_MAX];
get_executable_path (path, sizeof (path));
printf (“this program is in the directory %s\n”, path);
return 0;
}
7.2.5 Process File Descriptors
The fd entry is a subdirectory that contains entries for the file descriptors opened by a
process. Each entry is a symbolic link to the file or device opened on that file descrip-
tor.You can write to or read from these symbolic links; this writes to or reads from the
corresponding file or device opened in the target process.The entries in the
fd subdi-
rectory are named by the file descriptor numbers.
Here’s a neat trick you can try with fd entries in /proc. Open a new window, and
find the process ID of the shell process by running ps.
% ps
PID TTY TIME CMD
1261 pts/4 00:00:00 bash
2455 pts/4 00:00:00 ps
Listing 7.5 Continued
09 0430 CH07 5/22/01 10:30 AM Page 156
157
7.2 Process Entries
In this case, the shell (bash) is running in process 1261. Now open a second window,
and look at the contents of the fd subdirectory for that process.
% ls -l /proc/1261/fd
total 0
lrwx 1 samuel samuel 64 Jan 30 01:02 0 -> /dev/pts/4
lrwx 1 samuel samuel 64 Jan 30 01:02 1 -> /dev/pts/4
lrwx 1 samuel samuel 64 Jan 30 01:02 2 -> /dev/pts/4
(There may be other lines of output corresponding to other open file descriptors as
well.) Recall that we mentioned in Section 2.1.4,“Standard I/O,” that file descriptors
0, 1, and 2 are initialized to standard input, output, and error, respectively.Thus, by
writing to /proc/1261/fd/1, you can write to the device attached to stdout for the
shell process—in this case, the pseudo TTY in the first window. In the second win-
dow, try writing a message to that file:
% echo “Hello, world.” >> /proc/1261/fd/1
The text appears in the first window.
File descriptors besides standard input, output, and error appear in the fd subdirec-
tory, too. Listing 7.6 presents a program that simply opens a file descriptor to a file
specified on the command line and then loops forever.
Listing 7.6 (open-and-spin.c) Open a File for Reading
#include <fcntl.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int main (int argc, char* argv[])
{
const char* const filename = argv[1];
int fd = open (filename, O_RDONLY);
printf (“in process %d, file descriptor %d is open to %s\n”,
(int) getpid (), (int) fd, filename);
while (1);
return 0;
}
Try running it in one window:
% ./open-and-spin /etc/fstab
in process 2570, file descriptor 3 is open to /etc/fstab
In another window, take a look at the fd subdirectory corresponding to this process in
/proc.
% ls -l /proc/2570/fd
total 0
lrwx 1 samuel samuel 64 Jan 30 01:30 0 -> /dev/pts/2
09 0430 CH07 5/22/01 10:30 AM Page 157
158
Chapter 7 The /proc File System
lrwx 1 samuel samuel 64 Jan 30 01:30 1 -> /dev/pts/2
lrwx 1 samuel samuel 64 Jan 30 01:30 2 -> /dev/pts/2
lr-x 1 samuel samuel 64 Jan 30 01:30 3 -> /etc/fstab
Notice the entry for file descriptor 3, linked to the file /etc/fstab opened on this
descriptor.
File descriptors can be opened on sockets or pipes, too (see Chapter 5 for more
information about these). In such a case, the target of the symbolic link corresponding
to the file descriptor will state “socket” or “pipe” instead of pointing to an ordinary
file or device.
7.2.6 Process Memory Statistics
The statm entry contains a list of seven numbers, separated by spaces. Each number is
a count of the number of pages of memory used by the process in a particular cate-
gory.The categories, in the order the numbers appear, are listed here:
n
The total process size
n
The size of the process resident in physical memory
n
The memory shared with other processes—that is, memory mapped both by
this process and at least one other (such as shared libraries or untouched copy-
on-write pages)
n
The text size of the process—that is, the size of loaded executable code
n
The size of shared libraries mapped into this process
n
The memory used by this process for its stack
n
The number of dirty pages—that is, pages of memory that have been modified
by the program
7.2.7 Process Statistics
The status entry contains a variety of information about the process, formatted for
comprehension by humans. Among this information is the process ID and parent
process ID, the real and effective user and group IDs, memory usage, and bit masks
specifying which signals are caught, ignored, and blocked.
7.3 Hardware Information
Several of the other entries in the /proc file system provide access to information
about the system hardware.Although these are typically of interest to system configu-
rators and administrators, the information may occasionally be of use to application
programmers as well.We’ll present some of the more useful entries here.
09 0430 CH07 5/22/01 10:30 AM Page 158
159
7.3 Hardware Information
7.3.1 CPU Information
As shown previously, /proc/cpuinfo contains information about the CPU or CPUs
running the GNU/Linux system.The Processor field lists the processor number; this is
0 for single-processor systems.The Vendor, CPU Family, Model, and Stepping fields
enable you to determine the exact model and revision of the CPU. More useful, the
Flags field shows which CPU flags are set, which indicates the features available in
this CPU. For example,“mmx” indicates the availability of the extended MMX
instructions.
3
Most of the information returned from /proc/cpuinfo is derived from the cpuid
x86 assembly instruction.This instruction is the low-level mechanism by which a pro-
gram obtains information about the CPU. For a greater understanding of the output
of
/proc/cpuinfo, see the documentation of the cpuid instruction in Intel’s IA-32 Intel
Architecture Software Developer’s Manual,Volume 2: Instruction Set Reference.This manual is
available from http://developer.intel.com/design.
The last element, bogomips, is a Linux-specific value. It is a measurement of the
processor’s speed spinning in a tight loop and is therefore a rather poor indicator of
overall processor speed.
7.3.2 Device Information
The /proc/devices file lists major device numbers for character and block devices
available to the system. See Chapter 6, “Devices,” for information about types of
devices and device numbers.
7.3.3 PCI Bus Information
The /proc/pci file lists a summary of devices attached to the PCI bus or buses.These
are actual PCI expansion cards and may also include devices built into the system’s
motherboard, plus AGP graphics cards.The listing includes the device type; the device
and vendor ID; a device name, if available; information about the features offered by
the device; and information about the PCI resources used by the device.
7.3.4 Serial Port Information
The /proc/tty/driver/serial file lists configuration information and statistics about
serial ports. Serial ports are numbered from 0.
4
Configuration information about serial
ports can also be obtained, as well as modified, using the setserial command.
However, /proc/tty/driver/serial displays additional statistics about each serial
port’s interrupt counts.
3. See the IA-32 Intel Architecture Software Developer’s Manual for documentation about MMX
instructions, and see Chapter 9, “Inline Assembly Code,” in this book for information on how to
use these and other special assembly instructions in GNU/Linux programs.
4. Note that under DOS and Windows, serial ports are numbered from 1, so
COM1 corresponds
to serial port number 0 under Linux.
09 0430 CH07 5/22/01 10:30 AM Page 159
160
Chapter 7 The /proc File System
For example, this line from /proc/tty/driver/serial might describe serial port 1
(which would be COM2 under Windows):
1: uart:16550A port:2F8 irq:3 baud:9600 tx:11 rx:0
This indicates that the serial port is run by a 16550A-type UART, uses I/O port 0x2f8
and IRQ 3 for communication, and runs at 9,600 baud.The serial port has seen 11
transmit interrupts and 0 receive interrupts.
See Section 6.4,“Hardware Devices,” for information about serial devices.
7.4 Kernel Information
Many of the entries in /proc provide access to information about the running kernel’s
configuration and state. Some of these entries are at the top level of /proc; others are
under /proc/sys/kernel.
7.4.1 Version Information
The file /proc/version contains a long string describing the kernel’s release number
and build version. It also includes information about how the kernel was built: the
user who compiled it, the machine on which it was compiled, the date it was com-
piled, and the compiler release that was used—for example:
% cat /proc/version
Linux version 2.2.14-5.0 (root@porky.devel.redhat.com) (gcc version
egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)) #1 Tue Mar 7
21:07:39 EST 2000
This indicates that the system is running a 2.2.14 release of the Linux kernel, which
was compiled with EGCS release 1.1.2. (EGCS, the Experimental GNU Compiler
System, was a precursor to the current GCC project.)
The most important items in this output, the OS name and kernel version
and revision, are available in separate /proc entries as well.These are /proc/sys/
kernel/ostype
, /proc/sys/kernel/osrelease, and /proc/sys/kernel/version,
respectively.
% cat /proc/sys/kernel/ostype
Linux
% cat /proc/sys/kernel/osrelease
2.2.14-5.0
% cat /proc/sys/kernel/version
#1 Tue Mar 7 21:07:39 EST 2000
7.4.2 Hostname and Domain Name
The /proc/sys/kernel/hostname and /proc/sys/kernel/domainname entries contain
the computer’s hostname and domain name, respectively.This information is the same
as that returned by the uname system call, described in Section 8.15.
09 0430 CH07 5/22/01 10:30 AM Page 160

Không có nhận xét nào:

Đăng nhận xét