📄 procref1.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><HTML><HEAD><TITLE>/proc</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+"><LINKREL="HOME"TITLE="Advanced Bash-Scripting Guide"HREF="index.html"><LINKREL="UP"TITLE="/dev and /proc"HREF="devproc.html"><LINKREL="PREVIOUS"TITLE="/dev and /proc"HREF="devproc.html"><LINKREL="NEXT"TITLE="Of Zeros and Nulls"HREF="zeros.html"><METAHTTP-EQUIV="Content-Style-Type"CONTENT="text/css"><LINKREL="stylesheet"HREF="common/kde-common.css"TYPE="text/css"><METAHTTP-EQUIV="Content-Type"CONTENT="text/html; charset=iso-8859-1"><METAHTTP-EQUIV="Content-Language"CONTENT="en"><LINKREL="stylesheet"HREF="common/kde-localised.css"TYPE="text/css"TITLE="KDE-English"><LINKREL="stylesheet"HREF="common/kde-default.css"TYPE="text/css"TITLE="KDE-Default"></HEAD><BODYCLASS="SECT1"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#AA0000"VLINK="#AA0055"ALINK="#AA0000"STYLE="font-family: sans-serif;"><DIVCLASS="NAVHEADER"><TABLESUMMARY="Header navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><THCOLSPAN="3"ALIGN="center">Advanced Bash-Scripting Guide: An in-depth exploration of the art of shell scripting</TH></TR><TR><TDWIDTH="10%"ALIGN="left"VALIGN="bottom"><AHREF="devproc.html"ACCESSKEY="P">Prev</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom">Chapter 27. <TTCLASS="FILENAME">/dev</TT> and <TTCLASS="FILENAME">/proc</TT></TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><AHREF="zeros.html"ACCESSKEY="N">Next</A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><DIVCLASS="SECT1"><H1CLASS="SECT1"><ANAME="PROCREF1"></A>27.2. <TTCLASS="FILENAME">/proc</TT></H1><P><ANAME="PROCREF2"></A></P><P>The <TTCLASS="FILENAME">/proc</TT> directory is actually a pseudo-filesystem. The files in <TTCLASS="FILENAME">/proc</TT> mirror currently running system and kernel <AHREF="special-chars.html#PROCESSREF">processes</A> and contain information and statistics about them.</P><P> <TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"> <TTCLASS="PROMPT">bash$ </TT><TTCLASS="USERINPUT"><B>cat /proc/devices</B></TT> <TTCLASS="COMPUTEROUTPUT">Character devices: 1 mem 2 pty 3 ttyp 4 ttyS 5 cua 7 vcs 10 misc 14 sound 29 fb 36 netlink 128 ptm 136 pts 162 raw 254 pcmcia Block devices: 1 ramdisk 2 fd 3 ide0 9 md</TT> <TTCLASS="PROMPT">bash$ </TT><TTCLASS="USERINPUT"><B>cat /proc/interrupts</B></TT> <TTCLASS="COMPUTEROUTPUT"> CPU0 0: 84505 XT-PIC timer 1: 3375 XT-PIC keyboard 2: 0 XT-PIC cascade 5: 1 XT-PIC soundblaster 8: 1 XT-PIC rtc 12: 4231 XT-PIC PS/2 Mouse 14: 109373 XT-PIC ide0 NMI: 0 ERR: 0</TT> <TTCLASS="PROMPT">bash$ </TT><TTCLASS="USERINPUT"><B>cat /proc/partitions</B></TT> <TTCLASS="COMPUTEROUTPUT">major minor #blocks name rio rmerge rsect ruse wio wmerge wsect wuse running use aveq 3 0 3007872 hda 4472 22260 114520 94240 3551 18703 50384 549710 0 111550 644030 3 1 52416 hda1 27 395 844 960 4 2 14 180 0 800 1140 3 2 1 hda2 0 0 0 0 0 0 0 0 0 0 0 3 4 165280 hda4 10 0 20 210 0 0 0 0 0 210 210 ...</TT> <TTCLASS="PROMPT">bash$ </TT><TTCLASS="USERINPUT"><B>cat /proc/loadavg</B></TT> <TTCLASS="COMPUTEROUTPUT">0.13 0.42 0.27 2/44 1119</TT> <TTCLASS="PROMPT">bash$ </TT><TTCLASS="USERINPUT"><B>cat /proc/apm</B></TT> <TTCLASS="COMPUTEROUTPUT">1.16 1.2 0x03 0x01 0xff 0x80 -1% -1 ?</TT> <TTCLASS="PROMPT">bash$ </TT><TTCLASS="USERINPUT"><B>cat /proc/acpi/battery/BAT0/info</B></TT> <TTCLASS="COMPUTEROUTPUT">present: yes design capacity: 43200 mWh last full capacity: 36640 mWh battery technology: rechargeable design voltage: 10800 mV design capacity warning: 1832 mWh design capacity low: 200 mWh capacity granularity 1: 1 mWh capacity granularity 2: 1 mWh model number: IBM-02K6897 serial number: 1133 battery type: LION OEM info: Panasonic</TT> <TTCLASS="PROMPT">bash$ </TT><TTCLASS="USERINPUT"><B>fgrep Mem /proc/meminfo</B></TT> <TTCLASS="COMPUTEROUTPUT">MemTotal: 515216 kB MemFree: 266248 kB</TT> </PRE></TD></TR></TABLE> </P><P>Shell scripts may extract data from certain of the files in <TTCLASS="FILENAME">/proc</TT>. <ANAME="AEN17612"HREF="#FTN.AEN17612">[1]</A></P><P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING"> 1 FS=iso # ISO filesystem support in kernel? 2 3 grep $FS /proc/filesystems # iso9660</PRE></TD></TR></TABLE></P><P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING"> 1 kernel_version=$( awk '{ print $3 }' /proc/version )</PRE></TD></TR></TABLE></P><P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING"> 1 CPU=$( awk '/model name/ {print $5}' < /proc/cpuinfo ) 2 3 if [ "$CPU" = "Pentium(R)" ] 4 then 5 run_some_commands 6 ... 7 else 8 run_different_commands 9 ... 10 fi 11 12 13 14 cpu_speed=$( fgrep "cpu MHz" /proc/cpuinfo | awk '{print $4}' ) 15 # Current operating speed (in MHz) of the cpu on your machine. 16 # On a laptop this may vary, depending on use of battery 17 #+ or AC power.</PRE></TD></TR></TABLE></P><P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING"> 1 #!/bin/bash 2 # get-commandline.sh 3 # Get the command-line parameters of a process. 4 5 OPTION=cmdline 6 7 # Identify PID. 8 pid=$( echo $(pidof "$1") | awk '{ print $1 }' ) 9 # Get only first ^^^^^^^^^^^^^^^^^^ of multiple instances. 10 11 echo 12 echo "Process ID of (first instance of) "$1" = $pid" 13 echo -n "Command-line arguments: " 14 cat /proc/"$pid"/"$OPTION" | xargs -0 echo 15 # Formats output: ^^^^^^^^^^^^^^^ 16 # (Thanks, Han Holl, for the fixup!) 17 18 echo; echo 19 20 21 # For example: 22 # sh get-commandline.sh xterm</PRE></TD></TR></TABLE></P><P>+</P><P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING"> 1 devfile="/proc/bus/usb/devices" 2 text="Spd" 3 USB1="Spd=12" 4 USB2="Spd=480" 5 6 7 bus_speed=$(fgrep -m 1 "$text" $devfile | awk '{print $9}') 8 # ^^^^ Stop after first match. 9 10 if [ "$bus_speed" = "$USB1" ] 11 then 12 echo "USB 1.1 port found." 13 # Do something appropriate for USB 1.1. 14 fi</PRE></TD></TR></TABLE></P><DIVCLASS="NOTE"><TABLECLASS="NOTE"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -