可以使用哪些命令对内核进行配置
A. 如何配置linux内核
在做Virtualization这段时间,编译过多次Linux kernel,编译Kernel过程中配置config这一步是相对来说比较复杂的。对编译内核过程中的配置这一步做详细的说明吧,总结一下,多数内容源于网上的多篇文章。
首发在我的博客:http://renyongjie668.blog.163.com/blog/static/1600531201143010295156/
首先,配置时可能出现的选项,对其选择先来个说明吧。
Typically, your choices for each option are shown in the format [Y/m/n/?] The capitalized letter is the default, and can be selected by just pressing the Enter key. The four choices are:
y Build directly into the kernel.
n Leave entirely out of the kernel.
m Build as a mole, to be loaded if needed.
? Print a brief descriptive message and repeat the prompt.
y表示是(相应功能将直接编译进内核),m表示模块(相应功能将编译为一个模块,在需要时加载),以及n表示否(相应功能不会包含进内核)。?则(对该配置项)打印出简要的描述信息并重复刚才的选择提示。
其次,我使用的最多的两个配置命令分别是:make muneconfig和make oldconfig
make oldconfig和make config类似,但是它的作用是在现有的内核设置文件基础上建立一个新的设置文件,只会向用户提供有关新内核特性的问题,在新内核升级的过程 中,make oldconfig非常有用,用户将现有的配置文件.config复制到新内核的源码中,执行make oldconfig,此时,用户只需要回答那些针对新增特性的问题。
make menuconfig基于终端的一种配置方式,提供了文本模式的图形用户界面,用户可以通过光标移动来浏览所支持的各种特性。使用这用配置方式时,系统中必须安装有ncurese库。
在内核树的根目录中,有一个.config文件,它记录了内核的配置选项,可直接对它进行修改,再运行。在.config文件中,每个配置和选项的值只能为”y”和”m”两者之一,如果不需要这个特性不再支持她,那么可以将对应的选项用”#”注释掉。实际上,如果你手头有合适的.config文件,可以运行make oldconfig 直接按.config的内容来配置$ sudo make oldconfig
对内核的配置都是围绕.config来展开的. 即便开始.config文件不存在,进行配置后会创造它.
一般来说,内核配置保存于/usr/src/linux-*/.config文件中。在/boot/config-<版本>有其备份。请保留它以备后用。
常见的几种配置方式:
为了完成内核的配置,必须切换到root用户,然后转入内核源码目录(就是你下载新内核的目录):
#cd /usr/src/linux/linux-2.6.38
然后执行下面命令之一:
#make config
#make oldconfig
#make menuconfig
#make gconfig
#make defconfig
#make allyesconfig
#make allmodconfig
1.make config
基于文本的最为传统的也是最为枯草的一种配置方式,但是它可以使用任何情况,这种方式会为每一个内核支持的特性向用户提问,如果用户回答“y”,则把特性编译进内核;回答“m”,则它特性作为模块进行编译;回答“n”,则表示不对该特性提供支持
如果回答每个问题前,必须考虑清楚,如果在配置过程中犯了错误给了错误的回答,就只能按“ctcl+c”强行退出了
2.make oldconfig
make oldconfig和make config类似,但是它的作用是在现有的内核设置文件基础上建立一个新的设置文件,只会向用户提供有关新内核特性的问题,在新内核升级的过程 中,make oldconfig非常有用,用户将现有的配置文件.config复制到新内核的源码中,执行make oldconfig,此时,用户只需要回答那些针对新增特性的问题
make silentoldconfig : Like above, but avoids cluttering the screen with questions already answered.和上面oldconfig一样,但在屏幕上不再出现已在.config中配置好的选项。
3.make menuconfig
基于终端的一种配置方式,提供了文本模式的图形用户界面,用户可以通过光标移动来浏览所支持的各种特性。使用这用配置方式时,系统中必须安装有ncurese库,否则会显示“Unable to find the Ncurses libraies”的错误提示
4.make xoncifg
基 于X Winodws的一种配置方式,提供了漂亮的配置窗口,不过只有能够在X Server上使用root用户欲行X应用程序时,才能够使用,它依赖于QT,如果系统中没有安装QT库,则会出现“Unable to find the QT installation”的错误提示
5.make gconfig
与make xocnifg类似,不同的是make gconfig依赖于GTK库
6.make defconfig
按照默认的配置文件arch/i386/defconfig对内核进行配置,生成.config可以用作初始化配置,然后再使用make menuconfig进行定制化配置
7.make allyesconfig
尽量多地使用“y”设置内核选项值,生成的配置中包含了全部的内核特性
make allnoconfig :除必须的选项外,其它选项一律不选. (常用于嵌入式系统).
8.make allmodconfig
尽可能多的使用“m”设置内核选项值来生成配置文件
下载好Linux内核源代码后,在源代码的根目录执行
make localyesconfig或者make localmodconfig
然后系统就会根据你的硬件自动生成一个适应你的硬件的.config (内核的配置文件)
make localmodconfig会执行lsmod命令查看当前系统中加载了哪些模块(Moles),并最后将原来的.config中不需要的模块去掉,仅保留前面lsmod出来的这些模块,从而简化了内核的配置过程。
这样做确实方便了很多,但是也有个缺点:该方法仅能使编译出的内核支持当前内核已经加载的模块。因为该方法使用的是lsmod的结果,如果有的模块当前没有加载,那么就不会编到新的内核中。
There’s an additional “make localyesconfig” target, in case you don’t want to use moles and/or initrds.
几条好的建议:
除非您使用初始化ramdisk (initrd),否则绝不要把挂载根文件系统必需的驱动程序(硬件驱动以及文件系统驱动)编译成模块!而如果您确实使用初始化ramdisk,请为ext2FS支持选项选择Y,因为ramdisk使用该文件系统。您还需要initrd支持。
如果您系统中有网卡,将它们的驱动编译成模块。这样,您就能够在/etc/moles.conf中用别名定义哪一块网卡第一,哪一块第二,等等。如果您将驱动程序编译进了内核,它们加载的顺序将取决于当初它们链接进内核的顺序,而这不一定是您想要的。
最后,如果您不清楚某个选项的含义,请阅读其帮助!而如果该帮助信息依然不能解决您的困惑,请保留该选项原来的样子。(在config和oldconfig中可以按?键访问帮助。)
配置最终结束后,请保存您的配置并退出。
参考资料:
http://www.cnmaizi.com/tech/elebuild/simplify-linux-kernel-config-rapid-compile-method-collect/
http://man.ddvip.com/linux/Mandrakelinuxref/compiling-conf.html
http://www.huomo.cn/os/article-5d18.html
编译 Linux2.6 内核总结: http://www.cublog.cn/u/13991/showart.php?id=79823
编译内核:http://my.chinaunix.net/space.php?uid=25806768&do=blog&id=302764
内核_.config 内核配置及Makefile:http://www.cnblogs.com/parrynee/archive/2010/05/13/1734689.html
B. 要查看linux内核版本可以使用以下哪个命令
1.1 命令lsb_release -a lsb_release提供特定的LSB (Linux Standard Base)和发布版本相关信息。 ubuntu中运行lsb_release -a的结果如下: 1.2 命令cat /etc/issue /etc目录下放的是系统的配置文件。 /etc/issue文件通常包括系统的一段短说明或欢...
C. 究竟有多少linux内核命令行参数
Linux设置内核参数的方法
1 内核参数的查看方法
使用“sysctl -a”命令可以查看所有正在使用的内核参数。内核参数比较多(一般多达500项),按照前缀主要分为以下几大类:net.ipv4、net.ipv6、net.core、vm、fs、dev.parport、dev.cdrom 、dev.raid、kernel等等。相同的linux,安装的组件和使用的方式不一样,正在使用的内核参数是不一样的。
所有的内核参数的说明文档是放到/usr/src/linux/Documentation/sysctl中的,如果想知道对内核参数的说明,可以到该目录下查看相应的说明文档。
2 内核参数的的设置方法
由于Linux的内核参数信息都存在内存中,因此可以通过命令直接修改,并且修改后直接生效。也可以通过文件的方式进行设置。下面就介绍这两种修改方法。
2.1 命令设置的方式
可以用两种方法实现。
1、使用“sysctl -w 参数名=值”的方式
假设我们把net.ipv4.ip_forward的值修改为1,使用命令“sysctl -w net.ipv4.ip_forward=1”。
2、修改内核参数对应的proc文件
内核参数位于/proc/sys/之下,参数名称是以文件所在的路径,并将“/”以“.”来取代。举例来说,/proc/sys/net/ip_forward的参数名称为net.ipv4.ip_forward。
同样把net.ipv4.ip_forward的值修改为1,使用命令“echo “1” > /proc/sys/net/ipv4/ip_forward”。
注意,这里proc文件跟普通的文件不一样。一般一个文件用echo写入内容之后,会变成一个文本文件,但echo修改proc文件之后还是个空文件。
D. 如何编译linux的x86内核
Gcc编译器, Linux-2.6.29内核
步骤:
(一):清除临时文件,中间文件和配置文件等(刚从网上下载下来的文件这步可省略)。
make clean
删除大多数的由编译生成的文件、但会保留内核的配置文件.config。
make mrproper
删除所有的编译生成的文件,还有内核配置文件,再加上各种备份文件。
make distclean
mrproper删除的文件,加上编辑备份文件和一些补丁文件。
(二)选择参考配置文件
使用正在运行的内核配置文件作为参考配制文件,该配置文件在/boot目录下,使用命令
cp /boot/config-2.6.18-53.el5 .config。
(三)配置内核
配置内核有如下命令:
make config:基于文件模式的交互式配置(也就是一问一答)。
make menuconfig:基于文本模式的菜单式配置(强烈推荐)。
make oldconfig:使用已有的配置文件(.config)但是会询问新增的配置选项。
make xconfig:图形化配置(需要安装图形化系统)。
make menuconfig是最为常用的内核配置方式,使用方法如下:
1、使用方向键在各选项间移动;
2、使用“Enter”键进入下一层选单;每个选项上的高亮字母是键盘快捷方式,使用它可以快速地到达想要设置的选单项。
3、在括号中按“y”将这个项目编译进内核中,按“m”编译为模块,按“n”为不选择(按空格键也可在编译进内核、编译为模块和不编译三者间进行切换),按“h”将显示这个选项的帮助信息,按“Esc”键将返回到上层选单。
内核配置通常在一个已有的配置文件基础上,通过修改得到新的配置文件Linux内核提供了一系列可供参考的内核配置文件,位于Arch/$cpu/configs
注意:要运行make menuconfig的界面需要调整终端的窗口大小,至少为80*19。
(四)编译内核
(1):make zImage
(2):make bzImage
区别:在X86平台,在zImage只能用于小于512Kd的内核(注意是X86平台)
如需获取详细编译信息,可使用:
make zImage V=1
make bzImage V=1
编译好的内核位于arch/<cpu>/boot目录下
(五)编译内核模块
使用命令make moles
内核模块编译的时间比较长,一般需要1~2小时的时间。这些模块源于使用命令make menuconfig启动的菜单型配置界面中选择<m>的项。
(六)安装内核模块
使用命令:make moles_install,完成安装后,编译好的内核模块会从内核源代码目录拷贝至/lib/moles/2.6.29目录下。
(七)制作init ramdisk
使用cd跳动linux-2.6.29/,目录的上层目录,使用命令:mkinitrdinitrd-$version $version(mkinitrd initrd-2.6.29 2.6.29)将上一步中产生的模块目录/lib/moles/2.6.29制作成initrd-2.6.29。
提示:initrd是“initial ramdisk”的缩写,initrd是在实际根文件系统可用之前挂载到系统中的一个初始根文件系统。在桌面或服务器Linux系统中,initrd是一个临时的文件系统。其生命周期很短,只会用作真实文件系统的一个桥梁。在没有存储设备的嵌入式系统中,initrd可以是永久的根文件系统。
Linux的众多发行版之所以使用initrd主要是为了在内核启动之后能够判断哪些硬件驱动需要加载,哪些不需要,文件系统有没有问题等,最终使得根分区能顺利加载。在scsi和sata设备上启动,usb启动盘,无盘服务器等都需要initrd来做判断,这样可以提高Linux内核的通用性。
(八)安装内核
由于Linux系统启动时,会从/boot目录下寻找内核文件与init ramdisk,所以需要将内核和initrd拷贝至/boot目录。使用命令:
cp initrd-2.6.29 /boot
cp linux-2.6.29/arch/x86/boot/bzImage /boot/vmlinuz-2.6.29
(九)修改/etc/grub.conf或者/etc/lilo.conf
为了让grub在启动时能提供一项我们自己制作的linux内核的选项,需要修改grub的配置文件/etc/grub.conf。(添加的代码为title My Linux(2.6.29)以下的)
注意:/etc/grub.conf实际上是/boot/grub/grub.conf的一个链接,因此真正的配置文件存在与/boot/grub目录下。
E. 一般优化linux的内核,需要优化什么参数
作为高性能WEB服务器,只调整Nginx本身的参数是不行的,因为Nginx服务依赖于高性能的操作系统。
以下为常见的几个Linux内核参数优化方法。
net.ipv4.tcp_max_tw_buckets
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog
net.ipv4.tcp_syn_retries
net.ipv4.tcp_synack_retries
net.ipv4.ip_local_port_range
net.ipv4.tcp_fin_timeout
net.ipv4.tcp_keepalive_time
net.ipv4.tcp_keepalive_intvl
net.ipv4.tcp_keepalive_probes
对于tcp连接,服务端和客户端通信完后状态变为timewait,假如某台服务器非常忙,连接数特别多的话,那么这个timewait数量就会越来越大。
毕竟它也是会占用一定的资源,所以应该有一个最大值,当超过这个值,系统就会删除最早的连接,这样始终保持在一个数量级。
这个数值就是由net.ipv4.tcp_max_tw_buckets这个参数来决定的。
CentOS7系统,你可以使用sysctl -a |grep tw_buckets来查看它的值,默认为32768,
你可以适当把它调低,比如调整到8000,毕竟这个状态的连接太多也是会消耗资源的。
但你不要把它调到几十、几百这样,因为这种状态的tcp连接也是有用的,
如果同样的客户端再次和服务端通信,就不用再次建立新的连接了,用这个旧的通道,省时省力。
该参数的作用是快速回收timewait状态的连接。上面虽然提到系统会自动删除掉timewait状态的连接,但如果把这样的连接重新利用起来岂不是更好。
所以该参数设置为1就可以让timewait状态的连接快速回收,它需要和下面的参数配合一起使用。
该参数设置为1,将timewait状态的连接重新用于新的TCP连接,要结合上面的参数一起使用。
tcp三次握手中,客户端向服务端发起syn请求,服务端收到后,也会向客户端发起syn请求同时连带ack确认,
假如客户端发送请求后直接断开和服务端的连接,不接收服务端发起的这个请求,服务端会重试多次,
这个重试的过程会持续一段时间(通常高于30s),当这种状态的连接数量非常大时,服务器会消耗很大的资源,从而造成瘫痪,
正常的连接进不来,这种恶意的半连接行为其实叫做syn flood攻击。
设置为1,是开启SYN Cookies,开启后可以避免发生上述的syn flood攻击。
开启该参数后,服务端接收客户端的ack后,再向客户端发送ack+syn之前会要求client在短时间内回应一个序号,
如果客户端不能提供序号或者提供的序号不对则认为该客户端不合法,于是不会发ack+syn给客户端,更涉及不到重试。
该参数定义系统能接受的最大半连接状态的tcp连接数。客户端向服务端发送了syn包,服务端收到后,会记录一下,
该参数决定最多能记录几个这样的连接。在CentOS7,默认是256,当有syn flood攻击时,这个数值太小则很容易导致服务器瘫痪,
实际上此时服务器并没有消耗太多资源(cpu、内存等),所以可以适当调大它,比如调整到30000。
该参数适用于客户端,它定义发起syn的最大重试次数,默认为6,建议改为2。
该参数适用于服务端,它定义发起syn+ack的最大重试次数,默认为5,建议改为2,可以适当预防syn flood攻击。
该参数定义端口范围,系统默认保留端口为1024及以下,以上部分为自定义端口。这个参数适用于客户端,
当客户端和服务端建立连接时,比如说访问服务端的80端口,客户端随机开启了一个端口和服务端发起连接,
这个参数定义随机端口的范围。默认为32768 61000,建议调整为1025 61000。
tcp连接的状态中,客户端上有一个是FIN-WAIT-2状态,它是状态变迁为timewait前一个状态。
该参数定义不属于任何进程的该连接状态的超时时间,默认值为60,建议调整为6。
tcp连接状态里,有一个是established状态,只有在这个状态下,客户端和服务端才能通信。正常情况下,当通信完毕,
客户端或服务端会告诉对方要关闭连接,此时状态就会变为timewait,如果客户端没有告诉服务端,
并且服务端也没有告诉客户端关闭的话(例如,客户端那边断网了),此时需要该参数来判定。
比如客户端已经断网了,但服务端上本次连接的状态依然是established,服务端为了确认客户端是否断网,
就需要每隔一段时间去发一个探测包去确认一下看看对方是否在线。这个时间就由该参数决定。它的默认值为7200秒,建议设置为30秒。
该参数和上面的参数是一起的,服务端在规定时间内发起了探测,查看客户端是否在线,如果客户端并没有确认,
此时服务端还不能认定为对方不在线,而是要尝试多次。该参数定义重新发送探测的时间,即第一次发现对方有问题后,过多久再次发起探测。
默认值为75秒,可以改为3秒。
第10和第11个参数规定了何时发起探测和探测失败后再过多久再发起探测,但并没有定义一共探测几次才算结束。
该参数定义发起探测的包的数量。默认为9,建议设置2。
设置和范例
在Linux下调整内核参数,可以直接编辑配置文件/etc/sysctl.conf,然后执行sysctl -p命令生效
F. linux内核操作的主要命令及作用
cp命令
该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的命令一样,功能十分强大
语法: cp [选项] 源文件或目录 目标文件或目录
说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中
-r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件
mv命令
用户可以使用mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中。该命令如同MSDOS下的ren和move的组合
语法:mv [选项] 源文件或目录 目标文件或目录
rm命令
该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除
rm命令的一般形式为:
rm [选项] 文件…
如果没有使用-r选项,则rm不会删除目录
该命令的各选项含义如下:
-f 忽略不存在的文件,从不给出提示
-r 指示rm将参数中列出的全部目录和子目录均递归地删除
Vi命令
插入模式
按“i”切换进入插入模式“insert mode”,按“i”进入插入模式后是从光标当前位置开始输入文件
按“a”进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字
按“o”进入插入模式后,是插入新的一行,从行首开始输入文字
从插入模式切换为命令行模式
按“ESC”键
查找字符
“/关键字”:先按“/”键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按“n”会往后寻找到您要的关键字为止
“?关键字”:先按“?”键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按“n”会往前寻找到您要的关键字为止
离开vi
“q”:按“q”就是退出,如果无法离开vi,可以在“q”后跟一个“!”强制离开vi
“qw”:一般建议离开时,搭配“w”一起使用,这样在退出的时候还可以保存文件
mkdir命令
功能:创建一个目录(类似MSDOS下的md命令)
语法:mkdir [选项] dir-name
说明:该命令创建由dir-name命名的目录。要求创建目录的用户在当前目录中(dir-name的父目录中)具有写权限,并且dirname不能是当前目录中已有的目录或 文件名称。
命令中各选项的含义为:
-p 可以是一个路径名称。此时若路径中的某些目录尚不存在, 加上此选项后, 系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
cd 命令
功能:改变工作目录
语法:cd [directory]
说明:该命令将当前目录改变至directory所指定的目录。若没有指定directory, 则回到用户的主目录。为了改变到指定目录,用户必须拥有对指定目录的执行和读权限
ls 命令
功能: 列出目录的内容,该命令类似于DOS下的dir命令
语法:ls [选项] [目录或是文件]
对于每个目录,该命令将列出其中的所有子目录与文件。对于每个文件,ls将输出 其文件名以及所要求的其他信息。默认情况下,输出条目按字母顺序排序。当未给出目录名或是文件名时,就显示当前目录的信息。
命令中各选项的含义如下:
-a 显示指定目录下所有子目录与文件,包括隐藏文件
-c 按文件的修改时间排序
-t 显示时按修改时间(最近优先)而不是按名字排序。若文件修改时间相同,则 按字典顺序。修改时间取决于是否使用了c或u选顶。缺省的时间标记是最后一次修改时间
tar命令
tar可以为文件和目录创建档案。利用tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案,如软盘。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。Linux上的tar是GNU版本的。
语法:tar [主选项+辅选项] 文件或者目录
使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。
主选项:
-c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。
-x 从档案文件中释放文件。
-f 使用档案文件或设备,这个选项通常是必选的。
-v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。
-z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩
文件或目录的访问权限
Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作
文件或目录的访问权限分为只读,只写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合
有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。所有者一般是文件的创建者。所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls -l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。
例如:
$ ls -l sobsrc. tgz
-rw-r–r– 1 root root 483997 Ju1 l5 17:3l sobsrc. tgz
横线代表空许可。r代表只读,w代表写,x代表可执行。注意这里共有10个位置。第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录
例如:
- rw- r– r–
普通文件 文件主 组用户 其他用户
是文件sobsrc.tgz 的访问权限,表示sobsrc.tgz是一个普通文件;sobsrc.tgz的属主有读写权限;与sobsrc.tgz属主同组的用户只有读权限;其他用户也只有读权限。
chmod 命令
chmod命令是非常重要的,用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。
该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
文字设定法
chmod [who] [+ | - | =] [mode] 文件名
命令中各选项的含义为:
操作对象who可是下述字母中的任一个或者它们的组合:
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”
a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
+ 添加某个权限。
- 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)
设置mode所表示的权限可用下述字母的任意组合:
r 可读
w 可写
x 可执行
X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
t 保存程序的文本到交换设备上。
u 与文件属主拥有一样的权限。
g 与和文件属主同组的用户拥有一样的权限。
o 与其他用户拥有一样的权限。
文件名:以空格分开的要改变权限的文件列表,支持通配符
在一个命令行中可给出多个权限方式,其间用逗号隔开。
例如:chmod g+r,o+r example
使同组和其他用户对文件example 有读权限
chgrp命令
功能:改变文件或目录所属的组。
语法:chgrp [选项] group filename
该命令改变指定指定文件所属的用户组。其中group可以是用户组ID,也可以是/etc/group文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组。
该命令的各选项含义为:
-R 递归式地改变指定目录及其下的所有子目录和文件的属组
chown 命令
功能:更改某个文件或目录的属主和属组。这个命令也很常用。例如root用户把自己的一个文件拷贝给用户xu,为了让用户xu能够存取这个文件,root用户应该把这个文件的属主设为xu,否则,用户xu无法存取这个文件。
语法:chown [选项] 用户或组 文件
说明:chown将指定文件的拥有者改为指定的用户或组。用户可以是用户名或用户ID。组可以是组名或组ID。文件是以空格分开的要改变权限的文件列表,支持通配符。
该命令的各选项含义如下:
-R 递归式地改变指定目录及其下的所有子目录和文件的拥有者
-v 显示chown命令所做的工作
passwd命令
出于系统安全考虑,Linux系统中的每一个用户除了有其用户名外,还有其对应的用户口令。因此使用useradd命令增加时,还需使用passwd命令为每一位新增加的用户设置口令;用户以后还可以随时用passwd命令改变自己的口令
该命令的一般格式为: passwd [用户名] 其中用户名为需要修改口令的用户名。只有超级用户可以使用“passwd 用户名”修改其他用户的口令,普通用户只能用不带参数的passwd命令修改自己的口令
该命令的使用方法如下:
输入passwd< Enter>;
在new password:提示下输入新的口令(在屏幕上看不到这个口令):
系统提示再次输入这个新口令
su命令
它可以让一个普通用户拥有超级用户或其他用户的权限,也可以让超级用户以普通用户的身份做一些事情。普通用户使用这个命令时必须有超级用户或其他用户的口令。如要离开当前用户的身份,可以打exit
该命令的一般形式为: su [选项] [使用者帐号]
说明:若没有指定使用者帐号,则系统预设值为超级用户root。 该命令中各选项的含义分别为:
-c 执行一个命令后就结束
- 加了这个减号的目的是使环境变量和欲转换的用户相同
-m 保留环境变量不变
shutdown命令
shutdown 命令可以安全地关闭或重启Linux系统,它在系统关闭之前给系统上的所有登录用户提示一条警告信息。该命令还允许用户指定一个时间参数,可以是一个精确的时间,也可以是从现在开始的一个时间段。精确时间的格式是hh:mm,表示小时和分钟;时间段由“+”和分钟数表示。系统执行该命令后,会自动进行数据同步的工作
该命令的一般格式为: shutdown [选项] [时间] [警告信息] 命令中各选项的含义为:
-k 并不真正关机,而只是发出警告信息给所有用户。
-r 关机后立即重新启动。
-h 关机后不重新启动。
-f 快速关机,重启动时跳过fsck。
-n 快速关机,不经过init程序。
-c 取消一个已经运行的shutdown
需要特别说明的是,该命令只能由超级用户使用
free命令
free命令的功能是查看当前系统内存的使用情况,它显示系统中剩余及已用的物理内存和交换内存,以及共享内存和被核心使用的缓冲区。
该命令的一般格式为: free [-b | -k | -m] 命令中各选项的含义如下:
-b 以字节为单位显示。
-k 以K字节为单位显示。
-m 以兆字节为单位显示
df命令
功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息
语法:df [选项]
说明:df命令可显示所有文件系统对i节点和磁盘块的使用情况。
该命令各个选项的含义如下:
-a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。
-k 以k字节为单位显示。
-i 显示i节点信息,而不是磁盘块。
-t 显示各指定类型的文件系统的磁盘空间使用情况。
命令
的英文原义为“disk usage”,含义为显示磁盘空间的使用情况。
功能:统计目录(或文件)所占磁盘空间的大小。
语法: [选项] [Names…]
说明:该命令逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024字节)的情况。若没有给出Names,则对当前目录进行统计。
该命令的各个选项含义如下:
-s 对每个Names参数只给出占用的数据块总数。
date命令
date命令的功能是显示和设置系统日期和时间。
该命令的一般格式为: date [选项] 显示时间格式(以+开头,后面接格式)
date 设置时间格式
命令中各选项的含义分别为:
-s datestr, –set datestr 设置datestr 描述的日期
注意:只有超级用户才有权限使用date命令设置时间,一般用户只能使用date命令显示时间。
ifconfig
作用
ifconfig用于查看和更改网络接口的地址和参数,包括IP地址、网络掩码、广播地址,使用权限是超级用户
格式
ifconfig -interface [options] address
主要参数
-interface:指定的网络接口名,如eth0和eth1
up:激活指定的网络接口卡
down:关闭指定的网络接口
address:设置指定接口设备的IP地址
netmask address:设置接口的子网掩码
应用说明
ifconfig是用来设置和配置网卡的命令行工具。为了手工配置网络,这是一个必须掌握的命令。使用该命令的好处是无须重新启动机器。
要赋给eth0接口IP地址207.164.186.2,并且马上激活它,使用下面命令:
#fconfig eth0 210.34.6.89 netmask 255.255.255.128
该命令的作用是设置网卡eth0的IP地址、网络掩码和网络的本地广播地址。若运行不带任何参数的ifconfig命令,这个命令将显示机器所有激活接口的信息。带有“-a”参数的命令则显示所有接口的信息,包括没有激活的接口。注意,用ifconfig命令配置的网络设备参数,机器重新启动以后将会丢失
如果要暂停某个网络接口的工作,可以使用down参数:
#ifconfig eth0 down
netstat
作用
检查整个Linux网络状态
格式
netstat [-acCeFghilMnNoprstuvVwx][-A][–ip]
主要参数
-a–all:显示所有连线中的Socket
-l–listening:显示监控中的服务器的Socket
-n–numeric:直接使用IP地址,而不通过域名服务器
-p–programs:显示正在使用Socket的程序识别码和程序名称
-t–tcp:显示TCP传输协议的连线状况
-u–udp:显示UDP传输协议的连线状况
-apn 查看开启的端口
应用实例
netstat主要用于Linux察看自身的网络状况,如开启的端口、在为哪些用户服务,以及服务的状态等。此外,它还显示系统路由表、网络接口状态等。可以说,它是一个综合性的网络状态的察看工具。在默认情况下,netstat只显示已建立连接的端口。如果要显示处于监听状态的所有端口,使用-a参数即可:
#netstat -a
lsof
作用
显示系统打开的文件
格式
lsof 〔options〕 filename
主要参数
lsof -a: 表示两个参数都必须满足时才显示结果
lsof -c string: 显示COMMAND列中包含指定字符的进程所有打开的文件
lsof -u username: 显示所属user进程打开的文件
lsof -g gid: 显示归属gid的进程情况
lsof +d /DIR/: 显示目录下被进程打开的文件
lsof +D /DIR/: 同上,但是会搜索目录下的所有目录,时间相对较长
lsof -d FD: 显示指定文件描述符的进程
lsof -n: 不将IP转换为hostname,缺省是不加上-n参数
lsof -i: 用以显示符合条件的进程情况
lsof -i:port: 查看端口运行的程序。
例如:查看22端口所运行的程序 #lsof -i:22
telnet
作用
telnet表示开启终端机阶段作业,并登入远端主机。telnet是一个Linux命令,同时也是一个协议(远程登陆协议)
格式
telnet [-8acdEfFKLrx][-b][-e][-k][-l][-n][-S][-X][主机名称IP地址<通信端口>]
ftp
作用
ftp命令进行远程文件传输。FTP是ARPANet的标准文件传输协议,该网络就是现今Internet的前身,所以ftp既是协议又是一个命令。
格式
ftp [-dignv][主机名称IP地址]
应用说明
ftp命令是标准的文件传输协议的用户接口,是在TCP/IP网络计算机之间传输文件简单有效的方法,它允许用户传输ASCⅡ文件和二进制文件。为了使用ftp 来传输文件,用户必须知道远程计算机上的合法用户名和口令。这个用户名/口令的组合用来确认ftp会话,并用来确定用户对要传输的文件进行什么样的访问。另外,用户需要知道对其进行ftp会话的计算机名字的IP地址
用户可以通过使用ftp客户程序,连接到另一台计算机上;可以在目录中上下移动、列出目录内容;可以把文件从远程计算机机拷贝到本地机上;还可以把文件从本地机传输到远程系统中。ftp内部命令有72个,下面列出主要几个内部命令:
ls:列出远程机的当前目录
cd:在远程机上改变工作目录
lcd:在本地机上改变工作目录
close:终止当前的ftp会话
get(mget):从远程机传送指定文件到本地机
put(mput):从本地机传送指定文件到远程机
quit:断开与远程机的连接,并退出ftp
route
作用
route表示手工产生、修改和查看路由表
格式
#route [-add][-net|-host] targetaddress [-netmask Nm][dev]If]
#route [-delete][-net|-host] targetaddress [gw Gw] [-netmask Nm] [dev]If]
主要参数
-add:增加路由
-delete:删除路由
-net:路由到达的是一个网络,而不是一台主机
-host:路由到达的是一台主机
-netmask Nm:指定路由的子网掩码
gw:指定路由的网关
[dev]If:强迫路由链指定接口。
应用实例
route命令是用来查看和设置Linux系统的路由信息,以实现与其它网络的通信。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现
在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为Linux机器的默认路由。使用下面命令可以增加一个默认路由:
route add 0.0.0.0 192.168.1.1
top
作用
top命令用来显示执行中的程序进程,使用权限是所有用户。
格式
top [-] [d delay] [q] [c] [S] [s] [i] [n]
主要参数
d:指定更新的间隔,以秒计算
q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行
c:显示进程完整的路径与名称
i:不显示任何闲置(Idle)或无用(Zombie)的行程
n:显示更新的次数,完成后将会退出top。
说明
top命令是Linux系统管理的一个主要命令,通过它可以获得许多信息。这里我们结合图1来说明它给出的信息
下面列出了详细解释
PID(Process ID):进程标示号
USER:进程所有者的用户名
PR:进程的优先级别
NI:进程的优先级别数值
VIRT:进程占用的虚拟内存值
RES:进程占用的物理内存值
SHR:进程使用的共享内存值
S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数
%CPU:该进程占用的CPU使用率
%MEM:该进程占用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间
Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。
G. Linux内核配置与编译相关流程
linux内核配置与编译相关流程1、清除临时文件、中间文件和配置文件
make
clean
不删除配置文件。
make
mrproper
make
distclean
删除编辑的backup文件、补丁文件等2、确定目标系统的软硬件配置情况,比如CPU的类型,网卡的型号,所需要支持的网络协议。3、使用命令配置内核
make
config
基于文本模式的交互配置。
make
menuconfig
基于文本模式的菜单配置。
make
oldconfig
使用已有的配置文件(.config),但是会询问新增的配置选项。
make
xconfig
图形化的配置(需要安装图形化系统)。4、编译内核
make
zImage
make
bzImage
区别:在X86平台上,zImage只能用于小雨512k内核。如果需要获取详细编译信息,则在后面加上V=1.
编译好的内核位于arch/<cpu>/boot/目录下。
5、编译内核模块
make
moes
6、安装内核模块
make
moes_install
将编译好的内核模块从内核源代码目录到/lib/moes下。7、制作
init
ramdisk
mkinitrd
$initrd-$version
-$version内核安装(X86)1、cp
arch/X86/boot/bzImage
/boot/vmliuz
-$version2、cp
$initrd
/boot/3、修改etc/grub.conf
或
/etc/lilo.conf$version为所编译的内核版本号。