System Information Made Easy : Contains of /proc directory in details
"Even LINUX Experts discovers new tricks!"
Dear Forum members , Have you ever wandered how the "KDE System Guard ", "top" etc. actually works ? How it gets all the details information ? Have you ever wanted to create a your own one ? Now you can do it. Because all the information resides in human readable format in "/proc" directory. Try doing a "ls /proc" in shell. You will get the following files describes below and some folders. The "PROC" folder is created and modified in runtime by kernel or some system processes. It contains all the information needed to do administrative job. In Windows environment it is very difficult to get all information, but in Linux it's a breeze . Below is the relavent information about it's files in short , informations regarding directories is given next to it :=> 1) Available files (may be changed ,depending upon Linux version and installed programs!) —-———————————————————————————————————————————————————- file:/proc/cmdline == Kernel Command line (eg . "/rhgb", "quite" etc. file:/proc/cpuinfo == used cpus and various info about them file:/proc/crypto == current password encription (such as MD5) file:/proc/devices == available character(eg terminal,sound etc.) and block device name and corresponding number file:/proc/diskstats == status about all diskdevice including ramdrive (such as free space,etc.) file:/proc/dma == dma status (such as cascade) file:/proc/execdomains == don't know, maybe about kernel domain ! file:/proc/fb == maybe about any pending mails file:/proc/filesystems == available filesystems (such as : ext3,vfat,etc.) file:/proc/interrupts == available and usable interrupts and their number file:/proc/iomem == kernel ram info (may be about available memory mapped io space) file:/proc/ioports == available system io ports (such as timer,pci,vga+ , etc) file:/proc/kcore == You can not access it as it is used by kernel itself file:/proc/kmsg == Kernel Messages file:/proc/loadavg == CPU Loads and uptime file:/proc/locks file:/proc/mdstat file:/proc/meminfo == details about memory , including swap,cache,physical memory size and available free space file:/proc/misc file:/proc/modules == loded kernel modules (such as snd,alsa,hw,gameport etc.) file:/proc/mounts ==mounted partitions file:/proc/mtrr file:/proc/partitions == Available Disk Partitions (eg. hda,hda1,...,hdb,.. etc.) file:/proc/pci == pci devices and their corresponding Bus no.,devive no.,function no. ,irq no. etc. file:/proc/slabinfo == file:/proc/stat == cpu usage info , Includes per cpu load (eg. cpu0,cpu1,...) , context switches , uptime etc. file:/proc/swaps == Swap partition drive name and size etc. file:/proc/sysrq-trigger file:/proc/uptime == Uptime (times elapsed since boot) for individule cpus file:/proc/version == Linux Kernel version and compiler used to build it file:/proc/vmstat == Details Virtual memory Info ,including page faults,range,etc. you can see individual files using command Code:
cat /proc/filename Code:
cat /proc/cpuinfo 2) Available directories (it will certainly be deferrent in your pc!) —-————————————————————————————————————————————————————-- The directories with all number such as 1, 4567,2385,112,40,41 etc. are actually PID of the currently Running processes. Start the default process viewer (in KDE you can try key combination of CTRL+ESC) , see the PID tag list and compare it with the directory listing of the "/proc" directory . You can certainly find similarity in between them. And YES those are the actually PID of those running processes! e.gThe folder having name 1 represents "init" process . in my pc it is like this :==> 1 2366 2621 3451 3691 3844 9 ide pci 1139 2397 2693 3456 3693 39 acpi interrupts scsi 114 2439 27 3553 3699 3955 asound iomem self 192 2450 2712 3581 37 3997 buddyinfo ioports slabinfo 193 2463 2731 3614 3701 3998 bus irq stat 195 2486 2744 3615 3702 4 cmdline kcore swaps 196 2508 2755 3658 3705 40 cpuinfo kmsg sys 2 2527 28 3661 3706 4084 crypto loadavg sysrq-trigger 209 2537 2893 3663 3712 4089 devices locks sysvipc 2128 2548 3 3666 3713 41 diskstats mdstat tty 2132 2578 3019 3668 38 4192 dma meminfo uptime 2143 2579 3020 3678 3809 4193 dri misc version 2154 2591 3021 3680 3810 4254 driver modules vmstat 2174 26 3022 3682 3811 5 execdomains mounts 2208 2603 3023 3686 3812 6 fb mtrr 2325 2617 3024 3688 3813 7 filesystems net 2355 2619 3025 3689 3814 8 fs partitions Enter a directory ,let it be "1" , so issue "cd 1", you will be now in folder 1. view it's contains "ls" :=> attr cmdline environ fd mem root statm task auxv cwd exe maps mounts stat status wchan Explanation of individuals ********************************* attr == its a folder containing attributes of all child and parent processes cmdline == it contains the COMMAND LINE used to create the process , so you can get NAME of the process from here environ == ENVIRONMENT variable passed to it fd == its a folder containing file descriptor (opened file handle ?) mem == memory info ? root == its a folder link to root directory statm == memory status ? task == its a folder containing task number ? (same as it's PID) auxv == ?? cwd == current working directory exe == MEMORY IMAGE of the Process . SO YOU CAN DUMP IT EASILY IN RUNTIME , use it for debugging purpose! maps == ?? mounts == currently mounted devices(mount it used to join different filesystem to root filesystem) stat == status about the process containg fields such as NICE value,PID,VMsize,Process name etc. (*** Good for making own process information program as it contains all necessary fields****) status == some of the info from "stat" file but in easily understandable format! wchan == currently running thread ? [ LEGENDS : "?" => doubtful ,check it in the internet, "??" => not known to me! ] Lengthy isn't it ? but it will be comfortable when you get used to it. Keep it's copy locally. Note to programmers +++++++++++++++++++++++++++++ Now you know the secret of those programs . Why don't you try it ? Let me know what you have discovered , email me at : thandermax@yahoo.com Read data over and over and you will get the recent status , Linux will update it regularly.(so you don't have to be bothered with updation of "/proc" data.) You just have to update the GUI or text interface of your program according to the data provided. ******* Don't keep the files opened for longer as Linux writes to it at regular interval , may cause hang. Close the file as soon as you read it's contains ******* +++++++++++++++++++++++++++++ DONT TRY TO CHANGE "/proc" s CONTAINS AS IT MAY CAUSE UNEXPECTED RESULT! Please pardon my mistake if it is done as I am not a "LINUX GURU" . (PLEASE DONT ASK FOR HELP OR SOURCE CODE OR ANY OTHER THINGs ) (THE AUTHOR ASSUMES NO RESPONSIBILITY ABOUT THE CONTAINS OF THE ABOVE WRITTEN INFORAMTION, NOT ACCEDENTAL OR RESPONSIVE OR ANY OTHER MEANS. USE IT AT YOUR OWN RISK) Keep Discovering |
well this is really nice
what wil be more helpful is ,what parameters generally can be changed to improve the performance in system ,network etc like we can edit the /proc/vm/swappiness file to make the system less dependent on swap regards |
Thandermax,
This is good stuff. Having an OS provide this much standard information to an applications developer is fantastic! Try doing this with Microsoft :rolleyes: Let me give a testimony if I may. About a year ago I began work on a network monitoring application that would work on both Windows and Linux/Unix. It took me about 3 months of the year (and solid work too) to complete this for the Windows part due to the fact that hardware resources are just not given so easily on a Windows server -- one really must extract it from the base. On the Linux/Unix side, it took me about 3 weeks because a lot of the work I found out had already been done for me. :D I do a lot of work in Python. Any of you that works with Python and has to deal with OS issues in programming know that there are way more features available for Unix-based systems just because the damn thing was designed so well from the bottom up unlike another OS that will remain nameless :o |
Thanks for review,
I can provide info on system information on windows platform , but it is not suitable for this forum . So no WIN here !!!!!! |
thanks
but I don't understand what each data in /proc/stat stand for? especially the datas in the cpu line? can you give me a detail explantation of these datas? thaks very much! |
All times are GMT -5. The time now is 09:01 AM. |