linux文件配置解析和
GDB使用
演讲人:刘周平
http://sanweiying.cublog.cn
sanweidaying@gmail.com
第一部分
linux配置文件
一、理解Linux配置文件
• 内核本身可以看成是一个“程序”。为什么内核需要配置
文件?内核需要了解系统中用户和组的列表,进而管
理文件权限(即根据权限判定特定用户
(UNIX_USERS)是否可以打开某个文件)。注
意,这些文件不是明确地由程序读取的,而是由系统
库所提供的一个函数读取,并被内核使用。例如,程
序需要某个用户的(加密过的)密码时不应该打开
/etc/passwd 文件。相反,程序应该调用系统库的
getpw()函数。这种函数也被称为系统调用。打开
/etc/passwd 文件和之后查找那个被请求的用户的
密码都是由内核(通过系统库)决定的。
二、配置文件的简单分类:
启动引导程序配置文件
• GRUB /boot/grub/menu.lst系统启动文件内核脚
本
• 主启动控制文件 /etc/inittab
• SysV启动脚本的位置 /etc/init.d、/etc/rc.d/init.d
或/etc/rc.nd (n是0,1,2等等数字)
• SysV启动脚本链接的位置 /etc/init.d/rc?.d、
/etc/rc.d/rc?.d或/etc/rc?.d
• 本地启动脚本 /etc/rc.d/rc.local、
/etc/init.d/boot.local或/etc/rc.boot里的文件
网络配置文件
• 建立网络接口的脚本 /sbin/ifup
• 保存网络配置数据文件的目录
/etc/network、/etc/sysconfig/network
和/etc/sysconfig/network-scripts
• 保存解析DNS服务的文件 /etc/resolv.conf
• DHCP客户端的配置文件
/etc/dhclient.conf
超级服务程序配置文件和目录
• inetd配置文件 /etc/inetd.conf
• TCP Wrappers配置文件
/etc/hosts.allow和
/etc/hosts.deny
• xinetd配置文件 /etc/xinetd.conf和
/etc/xinetd.d目录里的文件
硬件访问文件
•内核模块配置文件
/etc/modules.conf
• Linux设备文件 /dev目录里
•保存硬件和驱动程序数据的文件 /proc
目录里
文件系统配置
•文件系统挂载表 /etc/fstab
•软驱装配点 /floppy、/mnt/floppy或
/media/floppy
•光驱装配点 /cdrom、/mnt/cdrom或
/media/cdrom
shell配置文件
• bash系统非登录配置文件
/etc/bashrc、/etc/bash.bashrc或
/etc/bash.bashrc.local
• bash系统登录文件 /etc/profile和
/etc/profile.d里的文件
• bash用户非登录配置文件 ~/.bashrc
• bash用户登录配置文件 ~/.profile
XFree86配置文件核目录
• XFree86主配置文件 /etc/XF86config、
/etc/X11/XF86Config或
/etc/X11/XF86Config-4
• 字体服务程序配置文件 /etc/X11/fs/config
• Xft 1.x配置文件 /etcX11/XftConfig
• Xft 2.0配置文件 /etc/fonts/fonts.conf
• 字体目录 /usr/X11R6/lib/X11/fonts和
/usr/share/fonts
Web服务程序配置文件
• Apache主配置文件 /etc/apache、
/etc/httpd或/httpd/conf里的
httpd.conf或httpd2.conf文件
•MIME类型文件与Apache主配置文件
在同一目录里的mime.types或
apache-mime.types
文件服务程序配置文件
• ProFTPd配置文件 /etc/proftpd.conf
• vsftpd配置文件 /etc/vsftpd.conf
• NFS服务程序的输出定义文件 /etc/exports
• NFS客户端装配的NFS输出 /etc/fstab
• Samba配置文件 /etc/samba/smb.conf
• Samba用户配置文件
/etc/samba/smbpasswd
邮件服务程序配置文件
• sendmail主配置文件 /etc/mail/sendmail.cf
• sendmail源配置文件 /etc/mail/sendmail.mc或
/usr/share/sendmail/cf/cf/linux.smtp.mc或其
他文件
• Postfix主配置文件 /etc/postfix/main.cf
• Exim主配置文件 /etc/exim/exim.cf
• Procmail配置文件 /etc/procmailrc或
~/.procmailrc
• Fetchmail配置文件 ~/.fetchmailrc
远程登录配置文件
• SSH服务程序配置文件
/etc/ssh/sshd_config
• SSH客户端配置文件 /etc/ssh/ssh_config
• XDM配置文件 /etc/X11/xdm目录下
• GDM配置文件 /etc/X11/gdm目录下
• VNC服务程序配置文件
/usr/X11R6/bin/vncserver启动脚本和
~/.vnc目录里的文件
用户配置文件:
•(点)文件和 rc 文件
•用ls –a命令可以看到好多.文件和*rc文
件
•如主目录下的.bashrc .vimrc .
viminfo等
其他服务程序配置文件
• DHCP服务程序配置文件
/etc/dhcpd.conf
• BIND服务程序配置文件
/etc/named.conf和/var/named/
• NTP服务程序配置文件 /etc/ntp.conf
三具体文件解析
•menu.lst有时候也叫grub.conf,但
是/boot/grub/下会有一个名叫
menu.lst的符号链接指向它。它是
grub引导系统的配置文件。
1 /boot/grub/menu.lst解析
基本选项
• default 0
• timeout 10
• Hidemenu
• color white/blue
• password --md5
$1$etSG6$LlxT8irAfAv5vYQn6tZUw1
• default:后跟一个数字,指grub的默认启动项。也可以跟
saved字样,这样的话,后面的savedefault就会起作用。
• timeout:指定一个超时值,单位为秒,若用户在grub等待的
超时时间范围内没有任何操作,则启动默认项。
• hidemenu:若被设置则启动的时候默认不显示选项菜单,否则
grub启动时自动显示选项菜单。
• color:指定grub菜单的默认颜色。
• password:指定一个密码,启用grub的密码保护。为安全起
见,一般使用md5值,这个值可以使用grub-md5-crypt或者
在grub shell中使用md5crypt生成。
一个启动Linux的菜单项
• title Ubuntu 8.10, kernel
2.6.27-7-generic
• root (hd0,7)
• kernel /boot/vmlinuz-2.6.27-7-generic
root=UUID=f7a7b5c0-61e7-4db2-850c-b9b7
0a93ed59 ro quiet splash locale=zh_CN
• initrd /boot/initrd.img-2.6.27-7-generic
• Quiet
• savedefault
略解:
• title:指定此菜单项的名称,既在grub列表里的名称
• root:指定启动分区,注意,编号从0开始:比如第一块硬盘的
第一个分区应该是(hd0,0)。启动分区的编号可以使用fdisk -l查
询,但是需要root权限。
• kernel:指定启动的内核的绝对路径和名称,后边跟参数,一般
来说root参数就是你的根文件系统,一定要有的,可以像范例中
使用 uuid表示,也可以直接使用/dev/sda2或者/dev/hda1这
样的表示。其实有root和kernel两行就可以启动linux了。
• initrd:指定系统启动访问真正的根文件系统前,访问的
ramdisk映象。具体可以参照Linux2.6内核的 Initrd机制解
析
• quiet:安静模式?不显示启动过程中具体的信息(此项与内核参
数中的quiet区别不明)
• savedefault:如果选择了这个启动项,那么下次启动时就用此
项作为默认项。在前面设置为default saved时有效。
启动Windows的菜单项
• # on /dev/hda1
• title Microsoft Windows XP
Professional
• root (hd0,0)
• savedefault
• makeactive
• chainloader +1
略解:
• title,root,savedefault同上。
•makeactive:使此分区成为活动分
区,Windows必须从活动分区启动,
而且NT内核的启动分区一般应该为第一
个主分区。
• chainloader +1:告诉grub不要自己
加载此操作系统,而使用这个分区上的
加载器,比如ntldr。
2 文件系统挂载文件/etc/fstab
• # /etc/fstab: static file system information.
• #
• #
• proc /proc proc defaults 0 0
• # /dev/sda8
• UUID=f7a7b5c0-61e7-4db2-850c-b9b70a93ed59 /
ext3 relatime,errors=remount-ro 0 1
• # /dev/sda9
• UUID=71df6bf4-66d4-4c7e-a29e-f0d9e2218b6a none
swap sw 0 0
• /dev/scd0 /media/cdrom0 udf,iso9660
user,noauto,exec,utf8 0 0
• /dev/sda1 /media/C ntfs default
• /dev/sda5 /media/D ntfs default
• /dev/sda6 /media/F ntfs default
• /dev/sda7 /media/E ntfs default
上面是一个完整的fstab文件 各
• 第一列代表被加载的文件系统、块设备或网络上的文
件系统的设备名;
• 第二列是文件系统的挂载点,交换分区不存在挂载点
(从上面的文件中我们可以看出);
• 第三列是文件系统类型,常见的有:minix、ext、
ext2、msdos、iso9660、ntfs、swap;
• 第四列是该文件系统的加载参数,各选项之间用逗号
隔开;
• 第五列指定文件系统是否需要备份。“1”表示文件系统
需要备份,“0”表示该文件系统不需要备份;
• 第六列指定文件系统启动时是否需要使用fsck进行检
查。“1”或“2”表示该文件系统不需要检查,“0”表示该
文件系统不需要检查。
一些常用的选项参数:
• async 异步方式执行该文件系统的输入输出操作
• user 普通用户允许执行加载操作
• atime 每次存取操作都自动更新inode的时间,取消该选
项应使用noatime
• sync 同步方式执行该文件系统的输入输出操作
• suid 启动set-UID和set-GID选项
• auto 自动加载
• noauto 不自动加载,启动系统后可使用mount命令手动加
载
• defaults 使用默认的选项
• rw 可读写模式加载
• ro 只读模式加载
• remount 进行重新加载
• nosuid 关闭set-UID和set-GID选项
• nouser 普通用户无法加载该文件系统
• exec 可执行二进制程序文件
• dev 可解读文件系统上的字符或区块设备
3 Vim配置文件.vimrc 或
/etc/vimrc
• 在终端下使用vim进
行编辑时,默认情况
下,编辑的界面上是
没有显示行号、语法
高亮度显示、智能缩
进等功能的。为了更
好的在vim下进行工
作,需要手动设置一
个配置文件:.
vimrc。
• 在启动vim时,当前
用户根目录下的.
vimrc文件会被自动
读取,该文件可以包
含一些设置甚至脚
本,所以,一般情况
下把.vimrc文件创
建在当前用户的根目
录下比较方便,即创
建的命令为:
• “双引号开始的行为注释行,下同
• set
fileencodings=utf-8,gbk,ucs-bom,
cp936
• set encoding=utf-8
• “去掉讨厌的有关vi一致性模式,避免以
前版本的一些bug和局限
• set nocompatible "compatible,
兼容,一致性
• “显示行号
• set number
• “检测文件的类型
• filetype on
•
• “
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
历史的行数
• set history=1000 “记录的历史好像在
~/.viminfo文件中
•
• “背景使用黑色
• set background=dark
• “语法高亮度显示
• syntax on
• “第一行设置tab键为4个空格,第二行设置当行之间交错时使用4
个空格
• set tabstop=4
• set shiftwidth=4
• “设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括
号
• set showmatch
• “去除vim的GUI版本中的toolbar
• set guioptions-=T
• “当vim进行编辑时,如果命令错误,会发出一个响声,该设置去
掉响声
• set vb t_vb=
• “在编辑过程中,在右下角显示光标位置的状态行
• set ruler
• “默认情况下,寻找匹配是高亮度显示的,该设置关闭高亮显示
• set nohls
• "启动自动缩进
• :set cindent
•下面两行在进行编写代码时,在格式对
齐缩进上很有用;
•第一行,vim使用自动对齐,也就是把
当前行的对其格式应用到下一行;
• “第二行,依据上面的对起格式,智能的
选择对起方式,对于类似C语言编
• “写上很有用
• set autoindent
• set smartindent
• set incsearch
• source
$VIMRUNTIME/ftplugin/man.vim
• "光标所在行具有醒目标志
• set cursorline
•去掉注释行后就是一个完整的vimrc文
件
• set fileencodings=utf-8,gbk,ucs-bom,cp936
• set encoding=utf-8
• set nocompatible
• set number
• filetype on
• set history=1000
• set background=dark
• syntax on
• set autoindent
• set smartindent
• set showmatch
• set guioptions-=T
• set vb t_vb=
• set ruler
• set nohls
• :set cindent
• set tabstop=4
• set shiftwidth=4
• set incsearch
• set cursorline
• source $VIMRUNTIME/ftplugin/man.vim
gdb使用
第二部分
1.启动GDB
•你可以输入GDB来启动GDB程序。
GDB 程序有许多参数,在此没有必要详
细介绍
•如果你已经编译好一个程序,我们假设
文件名为hello,可以输入gdb hello来
启动GDB并载入你的程序。如果你仅仅
启动了GDB,你必须在启动后,在GDB
中再载入你的程序。
•注意:你所载入的程序在编译的时后必
须加-g参数,如gcc -g -o hello
hello.c
2.载入程序 === file
•在GDB内,载入程序很简单,使用file
命令。如file hello。当然,程序的路径
名要正确。
•退出GDB === quit
•在GDB的命令方式下,输入quit,你就
可以退出GDB。你也可以输入'Ctrl-d'
来退出GDB。
3.运行程序 === run
• 当你在GDB中已将要调试的程序载入后,你可
以用run命令来执行。
• 如果你的程序需要参数你有两种选择:,
• 1,run 参数列表:就象你在SHELL下执行一
个需要参数的命令一样。
• 2,set args 参数列表:设置程序运行时的
参数
• show args:查看程序运行时的参数
4、单步执行
• 4.1next或者n
• 单步执行所加载的程序
• 4.2 step或者s
• 可以进入所调用的函数内部,查看执行情况
• 4.3 kill终止正在调试的程序
• 4.4 watch在程序中设置观测点(如果数据改
变,将给出变化前后的情况)
• 4.5 continue:告诉GDB继续执行,不进
行单步执行
5.查看程序信息 === info
• info指令用来查看程序的信息,当你用
help info查看帮助的话,info指令的参
数足足占了两个屏幕,它的参数非常
多,但大部分不常用。我用info指令最
多的是用它来查看断点信息。
• 5.1查看断点信息
• info br
• br是断点break的缩写,记得GDB的补齐功能吧。用
这条指令,你可以得到你所设置的所有断点的详细信
息。包括断点号,类型,状态,内存地址,断点在源
程序中的位置等。
• 5.2查看当前源程序
• info source
• 5.3查看堆栈信息
• info stack
• 用这条指令你可以看清楚程序的调用层次关系。
• 5.4查看当前的参数
• info args
• 6. 给变量赋值 === set
• 6.1 set variable 变量=值
• 7. 使中断失效或有效 === disable /
enable
• 7.1 disable 断点编号 可以使某个断点失效
如diable main 可使break main 命令失效
• 7.2 enable 断点编号 可以使某个断点恢复
有效
• 8. 删除断点 ===clean / delete
• disable只是让某个断点暂时失效,断点依然存在于程
序中.如果要彻底删除某个断点,可以使用clear
• 或delete命令.
• 8.1 clear:删除程序中所有的断点.
• 8.2 clear 行号: 删除此行的断点.
• 8.3 clear 函数名: 删除该函数的断点.
• 8.4 delete 断点编号:删除指定编号的断点.如果一次
要删除多个断点,各个断点编号以空格隔开.
参考
资料
新概念英语资料下载李居明饿命改运学pdf成本会计期末资料社会工作导论资料工程结算所需资料清单
:
1理解linux配置文件:
http://www.ibm.com/developerworks/cn/linux/man
agement/configuration/index.htmlhttp://www.nipe
i.com/article/2106/boot2 /grub/menu.lst:
http://blog.chinaunix.net/u2/76292/showart.ph
p?id=1405066
3 /etc/fstab:
http://blog.chinaunix.net/u2/73525/showart.ph
p?id=1901880
4 ~/.vimrc:
http://afreez.blog.51cto.com/59057/7335
5 gdb
http://blog.chinaunix.net/u2/73525/showart.ph
p?id=1108109
结束语
通过本次讲座希望大家对linux下
的一些配置文件再不生畏,在
linux下编程时更得心入手!
THANK YOU!