Linux环境下信息获取的方法•1.运行(正在运行或在运行队列中等待)•2.中断(休眠中,受阻,在等待某个条件的形成或接受到信号)•3.不可中断(收到信号不唤醒和不可运行,进程必须等待直到有中断发生)•4.僵死(进程已终止,但进程描述符存在,直到父进程调用wait4()系统调用后释放)•5.停止(进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号后停止运行运行)•D不可中断uninterruptiblesleep(usuallyIO)•R运行runnable(onrunqueue)•S中断sleeping•T停止tracedorstopped•Z僵死adefunct(zombie)process•注:其它状态还包括W(无驻留页),(高优先级进程),N(低优先级进程),L(内存锁页).•user用户名•uid用户号•pid进程号•ppid父进程号•trs程序执行代码驻留大小•time进程执行起到现在总的CPU暂用时间•stat进程状态•cmd(args)执行命令的简单格式/proc/pid/stat里面有进程的状态,进程可执行文件名等。如果该文件不存在了,那进程肯定退出了。如果存在,可以检查状态和文件名是否正确。效率可能比PS(另一种查询进程的指令)还是高一些,因为/proc是虚拟文件系统,存在于内存中。•指令:cat/proc/pid/status•这里pid是你的进程ID,看看输出结果,有一栏是State。•你要利用/proc文件系统时,intfd=open(/proc/pid/status,O_RDONLY);•这里pid是实际的进程的pid,如果open失败,刚进程显然不存在,然后读取该文件的内容,找出State。•cat/proc/bus/pci/device•例:•cat/proc/bus/input/devices查看键盘和鼠标•cat/proc/bus/usb/devices查看USB设备•Linux内核提供了一种通过/proc文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。•用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。•内核:用于管理软硬件资源,并提供运行环境•.ls或(cat)/proc/driver•NFS(NetworkFileSystem)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。•.ls或(cat)/proc/fs/proc/ide目录下包含了所有内核识别出的IDE设备的信息。在/proc/ide目录下包含drivers文件和若干个以IDE设备名或IDE控制器名为名的子目录。ls-alF/proc/ide/total3dr-xr-xr-x4rootroot010月923:36./dr-xr-xr-x54rootroot02004-10-10../-r--r--r--1rootroot010月923:36driverslrwxrwxrwx1rootroot810月923:36hda-ide0/hda/lrwxrwxrwx1rootroot810月923:36hdb-ide0/hdb/lrwxrwxrwx1rootroot810月923:36hdc-ide1/hdc/dr-xr-xr-x4rootroot010月923:36ide0/dr-xr-xr-x3rootroot010月923:36ide1/-r--r--r--1rootroot010月923:36piixdrivers文件包含了当前加载的IDE设备驱动:cat/proc/ide/driverside-floppyversion0.99.newideide-diskversion1.17ide-defaultversion0.9.newide在/proc/ide目录下还可以看到其他一些以设备命名的目录,在这些目录下我们可以看到更详细的信息。piix是IDE控制芯片组的名字,在你的系统中可能是其他名字。此外还包含若干个(一般的PC上是2个)IDE控制器为名的目录,以及以IDE终端设备名命名的快捷方式,它门将链接到控制器目录下对应的设备文件上。控制器信息/proc/ide/ide?..............................................................................文件名内容channelIDE通道(0or1)config配置(onlyforPCI/IDEbridge)mateMatenamemodelIDE控制器的类型/芯片组hd?IDE总线上连接的可用设备..............................................................................Table1-5:IDE设备信息..............................................................................文件名内容cache设备缓存大小capacity设备数据块数量(按512Byte块)driver驱动和版本geometry物理和逻辑的设备参数identify设备标示块media媒体类型model设备标识符(型号或名字)settings设备配置参数smart_thresholdsIDEdiskmanagementthresholdssmart_valuesIDEdiskmanagementvaluesIRQ全称为InterruptRequest,即是“中断请求”的意思,IRQ的作用就是在我们所用的电脑中,执行硬件中断请求的动作,比如我们需要读取硬盘中的一段数据时,当数据读取完毕,硬盘就通过IRQ来通知系统,相应的数据已经写到指定的内存中了。内核数据相似于进程入口,在/proc目录下的其他一些文件给出了内核信息数据,这些文件包含了系统当前运行内核相关信息。irq关联到cpu的irq使用状况(2.4)/proc/irq在2.4内核中irq相关的内核信息被放在/proc/irq目录下,在这个目录下包含一个文件prof_cpu_mask和每个IRQ独属的一个子目录。root@iZ28i72fw0jZ:~#ls/proc/irq0101214235646668771738default_smp_affinity111131523466567697072749root@iZ28i72fw0jZ:~#ls/proc/irq/0/affinity_hintnodesmp_affinitysmp_affinity_listspurious/proc/net子目录此目录下的文件描述或修改了联网代码的行为可以通过使用arp,netstat,route和ipfwadm命令设置或查询这些特殊文件中的许多文件•arp:转储每个网络接口的arp表中dev包的统计•dev:来自网络设备的统计•dev_mcast:列出二层(数据链路层)多播组•igmp:加入的IGMP多播组•netlink:netlink套接口的信息•netstat:网络流量的多种统计第一行是信息头,带有每个变量的名称。接下来的一行保存相应变量的值•raw:原始套接口的套接口表•route:静态路由表•rpc:包含RPC信息的目录•rt_cache:路由缓冲•snmp:snmpagent的ip/icmp/tcp/udp协议统计;各行交替给出字段名和值•sockstat:列出使用的tcp/udp/raw/pac/syc_cookies的数量•tcp:TCP连接的套接口•udp:UDP连接的套接口表•unix:UNIX域套接口的套接口表/proc/sys/net下文件一览/proc/sys/net/proc/sys/net/route/proc/sys/net/arp•/proc/sys/net/core/message_burst写新的警告消息所需的时间(以1/10秒为单位);在这个时间内所接收到的其它警告消息会被丢弃。这用于防止某些企图用消息“淹没”您系统的人所使用的拒绝服务(DenialofService)攻击缺省设置:50(5秒)•/proc/sys/net/core/message_cost该文件存有与每个警告消息相关的成本值。该值越大,越有可能忽略警告消息。缺省设置:5•/proc/sys/net/core/netdev_max_backlog该文件指定了,在接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目缺省设置:300•/proc/sys/net/core/optmem_max该文件指定了每个套接字所允许的最大缓冲区的大小•/proc/sys/net/core/rmem_default该文件指定了接收套接字缓冲区大小的缺省值(以字节为单位)•/proc/sys/net/core/rmem_max该文件指定了接收套接字缓冲区大小的最大值(以字节为单位)•/proc/sys/net/core/wmem_default该文件指定了发送套接字缓冲区大小的缺省值(以字节为单位)•/proc/sys/net/core/wmem_max该文件指定了发送套接字缓冲区大小的最大值(以字节为单位)•/proc/sys/net/ipv4所有IPv4和IPv6的参数都被记录在内核源代码文档中。请参阅文件/usr/src/linux/Documentation/networking/ip-sysctl.txt•/proc/sys/net/ipv6同IPv4/proc/sys/netIfconfigNetstatNetstat命令用于显示各种网络相关信息,如网络连接,路由表,接口状态(InterfaceStatistics),masquerade连接,多播成员(MulticastMemberships)等等#netstat-a|moreActiveInternetconnections(serversandestablished)ProtoRecv-QSend-QLocalAddressForeignAddressStatetcp00localhost:30037*:*LISTENudp00*:bootpc*:*ActiveUNIXdomainsockets(serversandestablished)ProtoRefCntFlagsTypeStateI-NodePathunix2[ACC]STREAMLISTENING6135/tmp/.X11-unix/X0unix2[ACC]STREAMLISTENING5140/var/run/acpid.socketothers•rtstat/lnstat-unifiedlinuxnetworkstatisticsreportsin/proc/net/stat/androutingcachestatistics•nstat/rtacct监视内核的SNMP计数器和网络接口状态•ping•tracerouteroutepackets•mtr-跟踪路由,测试丢包率、网络延迟•whois-Lookupadomainnameintheinternicwhoisdatabase•finger-Displayinformationonasystemuser•host-GiveahostnameandthecommandwillreturnIPaddress.•nslookup-Giveahostnameand