1.内核模块的功能:
1)提供计算机外围设备的驱动程序。
2)提供一些其他的文件系统的支持。
所有的内核模块都在/lib/modules目录中。
使用lsmod命令列出目前已经载入的模块。
modprobe命令来临时载入某个模块。(可以同时载入相依赖的模块)
mod命令的语法格式如下:
modprobe 模块名
insmod 模块名 也可以载入一个模块
使用/sbin/modinfo这个命令来浏览某个模块的信息:
modinfo 模块名
2./proc虚拟文件系统:、
为了是内核的管理和维护与文件系统的管理和维护能够使用完全相同的方法,UNIX操作系统使用引入了一个虚拟文件系统/pro。
/proc并不存在于硬盘上,而是一个存在在内存中的虚拟目录,可以借助修改这个目录中的文件来及时变更内核的参数。/proc这个目录中包含了存放在目前操作系统内核信息的文件。通过这些文件可以列出内核的状态。
1)可以使用/proc来获取内核的配置信息,或对内核进行配置。
2)/proc是一个虚拟的文件系统,所有的文件只存储在内存中,并不存放到硬盘上,这样访问/pro文件系统相当快。
3)由于/proc文件系统只存在于内存中,所以系统重启后所有的更改过的内容自动消失。又回到初始的设置。
4)利用/proc可以显示进程的信息,内存的资源,硬件设备,内核所占用的内存等。
5)在/proc中有一些子目录,如/proc/PID/子目录中包含了所有进程的信息,/proc/scsi/子目录中包含了scsi设备的信息,/proc/sys/子目录中包含了内核参数信息。
6)可以利用/proc/sys/子目录下的文件来修改网络设置,内存设置,或内核的一些参数
7)所有对/proc的修改立即生效
3.通过sysctl命令永久保存/pro/sys下的配置
使用sysctl这个命令所做的变更会保存到/etc/sysctl.conf这个系统设置的文件中。
使用sysctl命令可以进行系统的配置和维护,也可以监督系统的配置变化,
1)列出所有当前的系统设置:sysctl -a
2)从/etc/sysctl.conf文件中重新载入系统设置:sysctl - p
3)动态设置一个在/proc目录中文件的值,sysctl -w 值=?
4.从Linux-2.6内核开始使用udev这个工具来检测所有硬件设备,而kudzu这个工具有逐渐被取代的趋势,udev是一个工具,它能够根据系统中的硬件设备的状态动态更新设备文件,包括设备文件的创建,删除等,设备文件通常放在/dev目录下,使用udev后,在/dev目录中就只剩下包含系统中真正存在的设备。
udev是一个用户程序,配置文件是/etc/udev/udev.conf
[root@localhost etc]# more /etc/udev/udev.conf
# udev.conf
# The main config file for udev
#
# This file can be used to override some of udev's default values
# for where it looks for files, and where it places device nodes.
#
# WARNING: changing any value, can cause serious system breakage!
#
# udev_root - where in the filesystem to place the device nodes
udev_root="/dev/" #产生的设备文件的根目录是/dev
# udev_db - The name and location of the udev database.
udev_db="/dev/.udev.tdb" #通过udev产生的设备文件形成的数据库
# udev_rules - The name and location of the udev rules file
udev_rules="/etc/udev/rules.d/"#用于指导udev工作的规则所在目录
# udev_permissions - The name and location of the udev permission file
udev_permissions="/etc/udev/permissions.d/"
# default_mode - set the default mode for all nodes that have no
# explicit match in the permissions file
default_mode="0600"
# default_owner - set the default owner for all nodes that have no
# explicit match in the permissions file
default_owner="root"
# default_group - set the default group for all nodes that have no
# explicit match in the permissions file
default_group="root"
# udev_log - set to "yes" if you want logging, else "no"
udev_log="no"//当出现错误时,记录日志
[root@localhost etc]# ls -l /etc/udev/rules.d/
total 48
-rw-r--r-- 1 root root 152 Oct 7 2006 10-wacom.rules
-rwxr-xr-x 1 root root 310 Oct 7 2006 40-multipath.rules
-rw-r--r-- 1 root root 3567 Oct 8 2006 50-udev.rules
-rw-r--r-- 1 root root 507 Oct 8 2006 51-by-id.rules
-rw-r--r-- 1 root root 132 Oct 17 12:44 60-vboxadd.rules
-rw-r--r-- 1 root root 324 Oct 7 2006 90-ib.rules
[root@localhost etc]# more -l /etc/udev/rules.d/50-udev.rules
# There are a number of modifiers that are allowed to be used in some of the
# fields. See the udev man page for a full description of them.
#
# See the udev.rules.examples file for more examples of how to create rules
#
# create a symlink named after the device map name
# note devmap_name comes with extras/multipath
#KERNEL="dm-[0-9]*", PROGRAM="/sbin/devmap_name %M %m", NAME="%k", SYMLINK="%c"
# DRI devices always go into a subdirectory (as per the LSB spec)
KERNEL="card*", NAME="dri/card%n"
# alsa devices
KERNEL="controlC[0-9]*", NAME="snd/%k"
KERNEL="hw[CD0-9]*", NAME="snd/%k"
KERNEL="pcm[CD0-9cp]*", NAME="snd/%k"
KERNEL="midi[CD0-9]*", NAME="snd/%k"
KERNEL="timer", NAME="snd/%k"
KERNEL="seq", NAME="snd/%k"
5.系统总线支持和可热插拔总线支持。
在Linux操作系统中,可以使用/sbin/lspci命令来查看目前有那个设备插在PCI插槽中,而这些PCI的信息会存放在/proc/bus/pci/这个子目录中。
[root@localhost ~]# lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:02.0 VGA compatible controller: Unknown device 80ee:beef
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controll er (rev 02)
00:04.0 System peripheral: Unknown device 80ee:cafe
00:05.0 Multimedia audio controller: Intel Corporation 82801AA AC'97 Audio (rev 01)
00:06.0 USB Controller: Apple Computer Inc. KeyLargo/Intrepid USB
00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:0d.0 SATA controller: Intel Corporation Mobile SATA AHCI Controller (rev 02)
当Linux操作系统检测到被查到USB或IEEE1349插槽中时,系统就会自动进行如下操作:
1)执行/sbin目录中的hotplug这个程序,并从/etc/hotplug/子目录中载入这个设备所用的驱动程序。
2)之后,将这个设备的相关信息写入/pro/bus/usb子目录中。
可以使用/sbin/lsusb命令来列出哪些设备插在USB插槽中。
[root@localhost ~]# lsusb
Bus 001 Device 001: ID 0000:0000
[root@localhost ~]# ls -l /etc/hotplug
total 292
-rw-r--r-- 1 root root 668 Oct 25 2006 blacklist
-rwxr-xr-x 1 root root 6369 Oct 23 2006 dasd.agent
-rwxr-xr-x 1 root root 1117 Oct 23 2006 firmware.agent
-rwxr-xr-x 1 root root 5223 Oct 23 2006 hotplug.functions
-rwxr-xr-x 1 root root 2873 Oct 23 2006 ieee1394.agent
-rwxr-xr-x 1 root root 6597 Oct 23 2006 input.agent
-rwxr-xr-x 1 root root 3227 Oct 23 2006 input.rc
-rwxr-xr-x 1 root root 3370 Oct 23 2006 net.agent
drwxr-xr-x 2 root root 4096 Oct 23 2006 pci
-rwxr-xr-x 1 root root 3746 Oct 23 2006 pci.agent
-rwxr-xr-x 1 root root 2256 Oct 23 2006 pci.rc
-rwxr-xr-x 1 root root 1527 Oct 23 2006 scsi.agent
-rwxr-xr-x 1 root root 6967 Oct 23 2006 tape.agent
drwxr-xr-x 2 root root 4096 Oct 16 07:47 usb
-rwxr-xr-x 1 root root 13464 Oct 23 2006 usb.agent
-rw-r--r-- 1 root root 39306 Oct 23 2006 usb.distmap
-rw-r--r-- 1 root root 4364 Oct 23 2006 usb.handmap
-rwxr-xr-x 1 root root 12963 Oct 23 2006 usb.rc
-rw-r--r-- 1 root root 57453 Oct 16 07:47 usb.usermap
还有一种PCMCIA设备。
当Linux检测到有PCMCIA设备时,会执行以下程序:
1)执行/sbin目录中的cardmgr这个程序,并从/etc/pcmcia子目录中载入适当的模块。
2)之后将这个设备的相关信息写入/etc/bus/pccard
[root@localhost ~]# ls -l /etc/pcmcia
total 212
-rw-r--r-- 1 root root 961 Oct 7 2006 bluetooth
-rw-r--r-- 1 root root 2088 Oct 7 2006 bluetooth.conf
drwxr-xr-x 2 root root 4096 Oct 16 07:40 cis
-rw-r--r-- 1 root root 43910 Oct 25 2006 config
-rw-r--r-- 1 root root 2312 Oct 7 2006 config.opts
-rwxr-xr-x 1 root root 1782 Oct 7 2006 ide
-rw-r--r-- 1 root root 486 Oct 7 2006 ide.opts
-rwxr-xr-x 1 root root 853 Oct 7 2006 ieee1394
-rw-r--r-- 1 root root 232 Oct 7 2006 ieee1394.opts
-rwxr-xr-x 1 root root 190 Oct 7 2006 isdn
-rwxr-xr-x 1 root root 731 Oct 7 2006 network
-rw-r--r-- 1 root root 2116 Oct 7 2006 network.opts
-rwxr-xr-x 1 root root 1622 Oct 7 2006 parport
-rw-r--r-- 1 root root 308 Oct 7 2006 parport.opts
-rwxr-xr-x 1 root root 1842 Oct 7 2006 scsi
-rw-r--r-- 1 root root 573 Oct 7 2006 scsi.opts
-rwxr-xr-x 1 root root 2678 Oct 7 2006 serial
-rw-r--r-- 1 root root 570 Oct 7 2006 serial.opts
-rw-r--r-- 1 root root 3786 Oct 7 2006 shared
-rwxr-xr-x 1 root root 2673 Oct 7 2006 wireless
-rw-r--r-- 1 root root 5810 Oct 7 2006 wireless.opts
看到IDE和SCSI也在内
如果想要控制PCMCIA设备可以使用/sbin/cardctl这个命令,用来监督和控制PCMCIA插槽的状态。
6.系统监视和进程控制工具---top和free
top - 17:49:04 up 9 min, 1 user, load average: 0.01, 0.16, 0.16(当前,5分钟,10分钟 平均负载)
Tasks: 63 total, 2 running, 61 sleeping, 0 stopped, 0 zombie(僵尸进程)
Cpu(s): 0.0% us, 0.0% sy, 0.0% ni, 100.0% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 774520k total, 240924k used, 533596k free, 34048k buffers(内存)
Swap: 2096472k total, 0k used, 2096472k free, 137032k cached(交换区)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 16 0 1644 552 472 S 0.0 0.1 0:00.20 init
2 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0
4 root 5 -10 0 0 0 S 0.0 0.0 0:00.02 events/0
5 root 6 -10 0 0 0 S 0.0 0.0 0:00.09 khelper
6 root 15 -10 0 0 0 S 0.0 0.0 0:00.00 kacpid
18 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 kblockd/0
36 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pdflush
37 root 15 0 0 0 0 S 0.0 0.0 0:00.02 pdflush
39 root 13 -10 0 0 0 S 0.0 0.0 0:00.00 aio/0
19 root 15 0 0 0 0 S 0.0 0.0 0:00.00 khubd
38 root 25 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0
183 root 25 0 0 0 0 S 0.0 0.0 0:00.00 kseriod
297 root 9 -10 0 0 0 S 0.0 0.0 0:00.00 ata/0
load average 不应该大于你的系统处理器数目 的2倍
[root@localhost ~]# free
total used free shared buffers cached
Mem: 774520 241372 533148 0 34592 137008
-/+ buffers/cache: 69772 704748
Swap: 2096472 0 2096472
vmstat [ 时间间隔 ][ 显示的记录行数 ]
[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 532956 34696 137164 0 0 124 18 1024 54 1 1 95 4
[root@localhost ~]# vmstat 3 5 (显示3次,每5秒一次)
[root@localhost ~]# iostat
Linux 2.6.9-42.0.0.0.1.ELsmp (localhost.localdomain) 11/12/2012
avg-cpu: %user %nice %sys %iowait %idle
0.43 0.00 0.43 2.43 96.70
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 4.12 157.86 25.58 337944 54765
sda1 0.42 0.82 0.03 1760 54
sda2 8.42 154.87 25.48 331538 54536
sda3 0.39 0.50 0.00 1073 0
sda4 0.00 0.00 0.00 2 0
sda5 1.09 1.18 0.08 2523 175
[root@localhost ~]# ps -ef | more
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 17:39 ? 00:00:00 init [5]
root 2 1 0 17:39 ? 00:00:00 [migration/0]
root 3 1 0 17:39 ? 00:00:00 [ksoftirqd/0]
root 4 1 0 17:39 ? 00:00:00 [events/0]
root 5 4 0 17:39 ? 00:00:00 [khelper]
root 6 4 0 17:39 ? 00:00:00 [kacpid]
root 18 4 0 17:39 ? 00:00:00 [kblockd/0]
root 36 4 0 17:39 ? 00:00:00 [pdflush]
root 37 4 0 17:39 ? 00:00:00 [pdflush]
root 39 4 0 17:39 ? 00:00:00 [aio/0]
root 19 1 0 17:39 ? 00:00:00 [khubd]
root 38 1 0 17:39 ? 00:00:00 [kswapd0]
root 183 1 0 17:39 ? 00:00:00 [kseriod]
10.软件包的管理:
1)rpm软件包的具体命名方式:name-version-release.architectures.rpm
RPM安装及移除软件:
1)rpm -i ,--install :安装软件
2)rpm -U ,--upgrade:升级旧版的软件
3)rmp -F,--fresh:刷新更新旧版的软件
4)rpm -e,--erase:移除/删除软件
查询RPM软件包中的信息:
1)rpm -qa:可以显示当前操作系统上安装的全部软件包
2)rpm -qf 文件名:可以显示这个文件由哪个软件包安装的
3)rpm -qi 软件包名:可以显示这个软件包的信息。
4)rpm -ql 软件包名:列出这个软件包中所包含的全部文件。
验证RPM包是否被修改过
S file Size differs 文件大写被更改
M Mode differs (includes permissions and file type) 文件的权限或类型被修改过
5 MD5 sum differs 表示MD5值与当初安装时不同。
D Device major/minor number mismatch 表示设备的主设备号或从设备号被修改过
L readLink(2) path mismatch 文件的连接路径被修改过
U User ownership differs 文件的拥有者被修改过
G Group ownership differs 文件拥有的群组被修改过
T mTime differs文件的mTime,文件的修改时间
C selinux Context differs selinux(Linux系统安全环境)被修改过
[zhao@localhost ~]$ rpm -Va
........? /proc
........? /selinux
........? /sys
S.?....T. c /etc/selinux/targeted/booleans
..5....TC c /etc/selinux/targeted/contexts/files/file_contexts
..5....T. c /etc/selinux/targeted/policy/policy.18
.......T. c /etc/libuser.conf
2)rpm -V 软件包名:将显示这有由软件包名所指定的已经安装的rpm软件包与RPM数据库来进行比较来验证文件是否被修改过。
3)rpm -Vp 软件包名 :将已经安装的rpm软件包与软件包名所指定的软件包名进行比较来验证安装后文件哪些被修改过。
验证软件包的RedHat签名:
1)rpm -import RPM-GPG-KEY 命令将RPM-GPG=KEY导入系统。
2)RPM-GPG-KEY导入系统中后,使用rpm -qa gpg-pubkey命令来导入RPM-GPG-KEY的操作是否成功。
3)导入成功,使用rpm -K
rpm2cpio工具:
这个工具的用途:
因为rpm类型的文件只有root用户才可以安装,而.cpio类型的文件普通用户也可以安装。
[zhao@localhost ~]$ rpm2cpio xxx.rpm > /temp/xxx.cpio