第一章 什么是linux:主要介绍linux及其发展史,GNU与linux的关系,自由软件与开源代码,GPL协议,linux的版本、核心、特性、优缺点等。
第二章 如何学习linux:linux应用(网络服务器、工作站计算机、台式计算机、嵌入式系统);从头学习(基础知识)->选择工具书->实践;学习方法(x-window、命令行模式、网络/主机数据查询、向别人提问)
第三章 linux主机的规划:根据需求选择硬件,对硬件进行了介绍(速度,稳定性);每个硬件被当成文件对待;安装前的规划、主机服务器与硬件的关系,学完这章可以根据主机的服务来选择相应的硬件设施,合理的对系统进行规划,解决常见的系统问题。
第四章 安装FC4与多重启动技巧:通过实例讲解,如何规划和安装linux系统;识别硬盘分区:由于MBR块容量有限,linux设计成4个分区记录,分区号dev/hda1-4是预留的,所以逻辑分区的代码号由5开始。如何安装多系统,以及多重启动的一些技巧。
第五章 启动关机、在线求助与执行命令的方式:x window及命令行模式下正确登录与离开系统(不正常关机可能导致系统扇区错乱,数据坏损);X window(重启crtl+alt+backspace)与命令行模式切换(crtl+alt+f1--f6)按下crtl+alt+f7回到x window下;命令行模式执行命令,英文区分大小写,一些简单命令的使用(日期date、日历cal、计算机bc[默认只输出整数,要输出小数,需要指明小数点位数,执行scale=number即可]);重点热键,在线帮助man/info;正确关机的方法及命令(shutdown、reboot、init、halt)shutdown参数介绍:
-t sec : -t后面加秒数,即“过几秒后关机”的意思
-k : 不要真的关机,只是发送警告信息
-r : 在将系统的服务停掉之后就重新启动
-h : 将系统的服务停掉后,立即关机
-n : 不经过init程序,直接以shutdown关机
-f : 关机并启动之后,强制略过fsck的磁盘检查
-F : 系统重新启动之后,强制进行fsck的磁盘检查
-c : 取消已经在进行的shutdown命令内容
使用时注意加上时间参数;忘记root密码不必重装,单用户维护模式登入可修改root密码。
第六章 linux的文件属性与目录配置:用户与用户组的介绍,文件属性设置(只有某个目录的可读权限是不能进入该目录的,因为没有对该目录进行操作的权限)chgrp:修改文件所属用户组;chown:修改文件拥有者;chmod:修改文件属性(r:4,w:2,x:1);文件类型与扩展名:类型:普通文件(纯文本文件、二进制文件、数据格式文件)、目录、连接文件、设备与设备文件(字符设备文件、块设备文件)、套接字、管道;扩展名没有什么实际意义,只是帮助我们了解文件内容,文件或目录名最长可达255个字符,加上完整路径可达4096个字符,设置文件名时最好避免使用特殊字符;目录配置(FHS):在linux中所有文件与目录都由根目录(/)开始,形成目录树,/etc、/sbin、/bin、/dev、及/lib要跟/绑在一起,不能放在不同的分区;主机分区与目录配置:根据主机用途进行分区和配置。
第七章 linux文件和目录管理:
绝对路径:路径的写法一定由根目录/写起;相对路径:路径的写法不是由/写起。
特殊的目录: . 表示此层目录 . .表示上一层目录 - 表示前一个工作目录 ~ 表示当前用户身份所在的家目录 ~account 表示account用户的家目录。
常用操作:cd 切换目录;pwd [-p] 显示当前所在目录(-p选项可以获取正确的目录名,而不是以连接文件的路径来显示);mkdir [-mp] ,目录名 建立新目录(-m:设置文件的权限,直接设置,不用管默认权限;-p:直接建立所学要的目录递归);rmdir 删除空目录(-p:与上层空目录也一起删除;删除非空目录要使用rm -r 目录名 或者rm -rf 目录名)。
增加PATH搜索目录:在命令行模式下输入PATH=”$PATH”:/root(/root目录根据需要而定)。
查看文件和目录 ls 、复制文件或目录 cp、删除文件或目录 rm、移动文件与目录或重命名 mv,这些命令的选项很多,用的时候man一下就可以了。
查看文件内容各命令用途:
cat: 由第一行开始显示文件内容
tac: 从最后一行开始显示文件内容
nl: 显示的时候输出行号
more: 一页一页的显示文件内容
less: 与more类似,但是它不能向前翻页
head: 只显示前几行(默认10行)
tail: 只显示最后几行(默认10行)
od: 以二进制方式读取文件内容
各命令的选项也不少,需要的话同样man以下就可以了。
修改文件时间与创建新文件:touch [-acdmt] 文件,各选项功能man下就知道了。
文件默认权限:umask(查看后的值是要去掉的权限的值),默认权限的设置很简单,直接在umask后输入要去掉的权限的值即可,如umask 002目录权限即为:rwxrwxr-x;设置文件隐藏属性:chattr [+-=] [Asacdistu] 文件或目录名,其选项的意义通过man可知,其隐藏属性通过lsattr可以查看。文件的特殊权限SUID是程序在执行过程中拥有文件拥有者的权限,所以仅可用于二进制文件,不能用在批处理文件(shell脚本)上,对目录是无效的。
SUID/SGID/SBIT权限设置:4为SUID;2为SGID;1为SBIT,在设置属性时在3个数字前再加上一个数字,最前面的数字就表示这几个属性,如chmod 4755 file则file属性为-rwsr-xr-x。
文件类型:file 通过这个命令,可以简单的判断文件的格式。
搜索文件:whereis与locate是使用数据库来搜索数据,没有实际搜索硬盘,所以速度很快,当找不到时才用find;which:寻找执行文件,whereis寻找特定文件,locate可以根据文件的部分名称搜索文件,find可以根据不同的参数提供搜索功能。
第八章 linux磁盘与文件系统管理:硬盘的物理组成:注意磁头、磁道、柱面、扇区等概念,磁盘存储量简单公式是:柱面x磁头x扇区x512字节,一定要正常关机,让硬盘机械手臂回归原位,保证硬盘安全。分区的要点:就是记录每一个分区的起始与结束柱面。逻辑块实在分区进行文件系统的格式化时所指定的“最小存储单位”是以扇区大小为基础的,快的大小为扇区的2^n倍数,且一个块仅能容纳一个文件。ext2规划出inode与块来分别存储文件的属性与内容,要将磁盘格式化为ext2,就必须指定inode与块的大小才行。目录的最大功能就是提供文件的关联性,注意了解ext2的特性(查看文件系统信息命令:dumpe2fs 文件设备号),分区要根据主机的用途来规划。日志文件系统很好的解决了数据不一致的问题,可以快速修复文件系统。载入点就是进入该文件系统的入口。查看磁盘与目录的容量df、du具体用法通过man可知。连接文件类似于windows中的快捷方式,硬链接只是在某个目录下的块多写入一个关联数据,不会用掉inode与磁盘空间,且不能跨文件系统,不能连接目录;符号链接(即快捷方式)所建立的文件为一个独立的新文件,会占用inode与块,建立连接命令ln,详细使用man知道。硬盘分区fdisk,格式化mke2f(格式化为ext2/ext3)或mkfs(格式化为其他文件系统),设置磁盘代码mknod;制作可启动进入linux的软盘:mkbootdisk --device /dev/fd0 'uname -r',软盘低级格式化fdformat,在低级格式化之后,使用mke2fs命令将软盘的文件格式化为linux的ext2类型。磁盘检验:fsck(磁盘未挂载情况检查)、badblocks,sync命令可以直接将系统暂存在内存中的数据写入磁盘。使用mount命令,可以将文件系统载入到linux系统,使用umount命令卸载。修改磁盘参数:mknod、e2label、tune2fs、hdparm,这些命令都有很多参数,使用时要用man手册,搞清楚每个参数的功能。使用mke2fs /dev/fd0可以制作ext2软盘,使用如下命令可以挂载软盘:mount -t 文件类型(ext2/vfat等) /dev/fd0 /media/floppy #挂载
umount /media/floppy #卸载掉/media/floppy后才能取出软盘
载入windows磁盘:首先建立一个目录,然后将将windows所在分区(fdisk -l可查看)载入linux目录,如将windows所在分区/dev/hda1载入到/mnt/win98过程如下:
mkdir /mnt/win98 #建立linux目录
mount -t /dev/ vfat /dev/hda1 /mnt/win98 #挂载分区
mount -t vfat -o iocharset=cp950 /dev/hda1 /mnt/win98 #显示正确的中文
载入u盘:将u盘/dev/sda载入到/mnt/usb过程为:
mkdir /mnt/usb #建立linux目录
mount -t vfat /dev/sda /mnt/usb #载入u盘
启动时载入/dev/fstab和/dev/mtab:文件系统有很多参数,这些可以查资料知道,可以使用dump备份命令进行系统备份,要在启动时载入自己建立的磁盘文件系统时,就在/etc/fstab文件中加入,例如启动时要载入/dev/hdb5到/mnt/hdb5,并在启动时自动载入,就在/etc/fstab中加入/dev/hdb5 /mnt/hdb5 ext3 defaults 2 2即可,如果在/etc/fstab中输入的数据错误导致无法顺利启动,可以使用mount -n -o remount,rw /命令读写根目录,并更新文件内容。
建立虚拟内存:先建立swap设备或文件,将它格式化为swap格式,最后将它载入到系统上;建立虚拟内存设备:
1、利用“fdisk /dev/hd[a-]”先建立一个分区,然后将该分区的ID改为82;
2、使用“mkswap /dev/hd[a-d][1-16]”将刚建立的分区格式化为swap文件格式;
3、启动swap,命令为"swapon /dev/hd[a-d][1-16]",(关掉虚拟内存的命令为swapoff)。
建立虚拟内存文件:
1、使用dd命令建立swap文件;
2、使用mkswap将swap文件格式化为虚拟内存的文件格式;
3、使用swapon来启动该文件,使其成为虚拟内存;
4、使用swapoff来关闭该文件。
第九章 文件的压缩与打包:目前一些常见的压缩文件的扩展名
*.Z: compress程序压缩的文件
*.bz2: bzip2程序压缩的文件
*.gz: gzip程序压缩的文件
*tar: tar程序打包的数据,并没有压缩过
*.tar.gz: tar程序打包的文件,并且经过gzip的压缩
linux常见的压缩与解压缩命令:compress(uncompress解压缩)(扩展名为.Z);gzip(扩招名为.gz),zcat(用来读取扩展名为.Z和.gz的压缩文件数据内容的命令);bzip2(bunzip2 解压缩)(扩展名为.bz2),bzcat(用来读取扩展名为.bz2的压缩文件的数据内容);tar(扩展名为.tar/.tar.gz)多用途的压缩命令,可以将整个目录或者指定的文件都整合成一个文件,要以绝对路径建立打包文件时要加上-P参数(注意大写);除了tar以外,其他命令在没有加入特殊的参数时,原来的文件就会被取代,但是,使用tar,原来的与后来的文件都会存在。dd的备份功能很好用,参数用man可知,cpio是备份的利器,但是不怎么好用,必须配合其他程序,与管道命令及数据流重导向的相关性很重要。
第十章 vi文字处理:命令行的命令很多,常用的要知道;使用临时文件,可以恢复文件;vim中块选择、多文件编辑、多窗口功能(:sp)的使用;vim环境设置,可以根据习惯设置,这样很多操作就会变得很方便;dos与linux的换行符不同,可以用命令将文件格式进行转换:dos2unix [-kn] fiel [newfile]和unix2dos [-kn] file [newfile]使用时不清楚可以man一下。
第十一章 认识Bash Shell:bash的主要优点:命令记忆功能,命令与文件补全功能,命令别名(alias)设置功能,作业控制(jobs)、前台、后台控制,shell scripts的强大功能,通配符;bash shell的内置命令(man bash):type [-tpa] name;shell的变量功能可以使操作方便很多;变量的获取与设置:echo、变量设置规则、unset:变量设置时变量与内容用"="连接,且要符合某些规定,否则设置会失败,变量设置中,双引号仍然可以保持变量的内容,单引号内只能是一般字符,在一串命令中`符号之内的命令先执行,查看环境变量命令env、set和export,自定义变量不能被子程序引用,但是可以通过export转换成环境变量;支持语系查询命令locale;读取键盘输入的变量用read命令read [-pt] variable;声明变量属性用declare或typeset命令declare [-aixr] variable,与文件系统及程序的限制关系ulinit [-SHacdflmnpstuv] [配额];命令别名设置:alias、unalias;历史命令:history [n/-craw] histfiles;登录消息显示数据:/etc/issue、/etc/motd(man issue和man mingetty查看各代码);环境设置文件:默认的设置文件/etc/sysconfig/i18n、/etc/profile、etc/bashrc、/etc/profile.d/*.sh、
/etc/man.config,个人设置文件~/.bash_profile、~/.bash_login、~/.profile、~/.bashrc、~/.bash_history、~/.bash_logout;终端环境设置命令stty和set;数据流重导向:标准输入:代码0,使用<或<<;标准输出:代码1,使用>或>>;标准错误输出:代码2,使用2>或2>>;命令执行的判断依据:;(依次执行多个命令用;隔开)、&&(前面的命令执行正确才执行后面的)、||(前面的命令执行错误才执行后面的);管道命令“|”仅能处理通过前面一个命令传来的正确信息,常用的选取命令cut、grep,排序命令sort [-fbMnrtuk] [file or stdin]、wc [-lwm]、uniq [-ic],双向导向tee [-a] file,字符转换命令tr、col、join、paste、expand,拆分命令split [-bl] file prefix,参数代换xargs [-0epn] command,stdin和stdout可以用“-”来代替。
第十二章 正则表达式:搜索字符grep、[],行首行尾字符^$,正则表达式中“.”代表绝对只有一个任意字符,限定连续重复字符范围{};sed可以分析标准输入的数据然后将数据经过处理后,再将它输出到标准输出,它有替换、删除、新增、选取特定行等处理功能,用法:sed [-nefr] '[动作]';awk与sed相比适合处理小型的数据,运行模式为:awk '条件类型1{动作1} 条件类型2{动作2} ...' filename;文件比较:diff [-bBi] from-file to-file(以行为单位),cmp [-s] file1 file2(以位为单位);文件打印准备pr。
第十三章 学习shell脚本:什么是shell脚本及其特点;如何编写好的shell脚本;条件判断,循环,追踪调试sh [-nvx] filename。
第十四章 linux账号与身份管理:linux账号与用户组,用户识别UID与GID,用户账号/etc/passwd,/etc/shadow可以用man 5 passwd和man 5 shadow获得详细信息,用户组/etc/group和/etc/gshadow,更改有效用户组newgrp groupname,离开exit;账号管理:新增用户useradd [-u UID] [-g initial_group] [-G other_group] -[Mm] [-c 说明栏] [-d home] [-s shell] username,设置密码passwd username,账号相关数据调整usermod [-cdegGlsuLU] username,删除用户userdel [-r] username,用户功能chfn [-ls],chsh [-foph],查询finger [-s] username或id [username];添加用户组groupadd [-g gid] [-r] groupname,group相关参数修改groupmod [-g gid] [-n group_name],删除用户组groupdel gruopname,gpasswd [-AMrRad] username,passwd [-lunxwS] username,切换用户身份su [-lcm] [username]、sudo [-u [username|#uid]]command,用户特殊shell、/sbin/nologin与PAM模块/etc/nologin、/etc/securetty验证;linux系统的用户对话与邮件的使用,查询用户w、who、last、lastlog,用户对话talk、mesg、wall、write,用户邮件信箱mail,使用方法mail username[@localhost] -s "邮件标题"[<filename利用数据重导向可以发送文件内容];要了解整个系统最好手动增加用户,但是要真的了解自己在做什么,检查工具pwck、pwconv、pwunconv、chpasswd。
第十五章 linux磁盘配额:磁盘配额即硬盘空间管理的使用限制,基本磁盘配额命令/etc/mtab、quota、quotacheck、edquota、quotaon、quotaoff。
第十六章 例行性命令的建立:linux工作任务分配的种类at [-m] TIME(仅进行一次的工作任务分配)atq和atrm可以删除at任务、crontab [-u username] [-l|-e|-r](循环执行的工作)。
第十七章 程序与资源管理:进程(PID)与程序(pstree查看程序的关联性),常驻内存程序;linux多用户多任务环境;作业管理:直接将命令放到后台执行的&、将当前作业放到后台暂停ctrl+z、观察当前后台作业状态jobs、将后台作业拿到前台处理fg、让作业在后台运行bg、管理后台作业kill/killall;进程的观察ps、top、pstree;系统资源的观察free、uname、uptime、netstat、dmesg、sar;进程执行顺序PRI(new)=PRI(old)+nice,nice、renice;特殊文件与进程:使用find查询系统的SUID/SGID、查询已打开或已执行进程打开的文件fuser、lsof、pidof。
第十八章 启动关机的流程与加载程序:启动过程:1、加载BIOS的硬件信息,并获取第一个启动设备的代号;2、读取第一个启动设备的MBR的引导加载程序(即lilo、grub、spfdisk)的启动信息;3、加载核心操作系统的核心信息,核心开始解压缩,并且尝试驱动所有硬件设备;4、核心执行init程序并获取运行信息;5、init执行/etc/rc.d/rc.sysinit文件;6、启动核心的外挂模块(/etc/modprobe.conf);7、init执行运行的各个批处理文件(scripts);8、init执行/etc/rc.d/rc.local文件;9、执行/bin/login程序,等待用户登录;10、登录之后开始以shell控制主机。核心与核心模块,建立依赖文件depmod [-Ane],核心模块的观察lsmod、modinfo;核心模块的加载与删除insmod、modprobe、rmmod;grub与lilo引导加
载程序的功能与意义,设置文件,测试与安装(grub install);一些启动过程问题的解决办法。
第十九章 源码与Tarball套件管理程序:Tarball的安装、升级及管理,函数库、make、makefile、config;使用patch -pxx(xx表示数字,表示路径去掉几个‘/’)<patch_file;函数库的管理,动态库(如何加载到内存ldconfig与/etc/ld.so.conf)与静态库的区别,查询程序含有的动态库命令ldd [-vdr] filename;检验软件正确性md5sum [-bct] filename。
第二十章 RPM与SRPM套件管理程序:SRPM包含源码,比RPM多了一个重新编译的操作;RPM安装rpm -ivh packagename,升级与更新rpm -Uvh/-Fvh packagename,查询rpm -q[ailcdrf...] name,验证与数字签名rpm [-Vapf] name,解除安装rpm -e name,重建数据库rpm --rebuilddb;SRPM编译rpmbuild -bb name(编译成RPM文件),打包rpmbuild -ba name(打包成SRPM文件)。
第二十一章 系统服务守护程序:守护程序就是一个在后台执行的程序,独立启动的守护程序启动方式/etc/init.d/syslog start,启动超级守护程序/etc/init.d/xinetd restart,或者是service [service name] (start|stop|restart|...),TCP_Wrappers 中的两个文件/etc/hosts.allow与/etc/hosts.deny以/etc/hosts.allow优先判断,且第三栏可以扩展(spawan、twist),观察系统启动的服务netstat,设置开机后立即启动服务(或者建立自己的服务)chkconfig、ntsysv。
第二十二章 认识与分析登录文件(配置文件/etc/syslog.conf):登录文件的记录syslogd,轮替logrotate,安全性设置课增加+a参数的隐藏属性chattr +a name;系统查看命令dmesg、last、lastlog。
第二十三章 linux备份策略:需要备份那些文件,选择备份设备,备份种类(全部/部分备份),完全备份工具:1、使用cpio:find / -print | cpio -covB > /dev/st0 备份到磁带机,cpio -iduv < /dev/st0 还原;2、使用tar:tar --exclude /proc --exclude /mnt --exclude /tmp >-zcvpf host.tgz /备份,tar -zxvf host.tgz还原;3、使用dd:dd if=/dev/hda cf=/dev/hdb。
第二十四张 X Window简单设置:什么是x window,是否需要启动及发张历史,启用流程(man xinit、man x):检测startx [x client options] -- [x server options],启动xinit [client options] -- [server or display option],手动修改xorg.conf或XF86Config,获取x版本命令:x -version,x服务器的字体服务器设置文件/etc/X11/xorg.conf(chkfontpath、xmodmap),设置默认的x设置文件Xorg -configure或XFree86 -configure,更新显卡驱动:下载驱动、安装模块、修改主要设置文件;一些常见问题的解决方法。
第二十五章 linux硬件检测与维护:硬件信息收集lspci [-vvn]、iostat [-cdkt]、查看USB设备fdisk -l,载入mount,创建设备代号mknod,取得温度、电压等信息使用lm_sensors/sensors-detect,setup设置功能,打印机守护程序CUPS与LPRng,CUPS支持的联机模式socket、LPD、IPP、SMB、parallel、Network Printer、USB,启动打印机:下载合适的ppd定义文件、确定CUPS及打印机已启动、开始在CUPS中加入打印机(setup/lpadmin)、开始打印测试(lp/lpr/lpstat/lpq/lprm/cancel)、权限控制(disable/enable/accept/reject)、利用web接口管理CUPS打印机;特殊的文件系统LVM:物理卷(PV)、卷组(VG)、物理扩展(PE)、逻辑卷(LV);制作LVM磁盘的流程:建立PV与PV的查询,相关命令(pvcreate/pvscan/pvdisplay/pvremove/partprobe)、建立VG,相关命令(vgcreate/vgscan/vgdisplay/vgextend/vgreduce/vgchange/vgremove)、建立LV,相关命令(lvcreate/lvscan/lvdisplay/lvextend/lvreduce/lvresize/lvremove)、分区的格式化与载入;加大原有的LVM磁盘resize2fs;额外的存储设备iSCSI协议的磁盘阵列(好处:增加数据访问性能、具有类似备份效果)的架设与使用。
第二十六章 Linux核心编译与管理:编译核心的原因:新功能需求、原核心太庞大、与硬件搭配稳定性、其他;查看核心版本uname -r;获取最新的核心,利用补丁升级核心源码,核心目录下的子目录信息,编辑核心的生成文件(删除留下的.o文件make mrproper、建立生成文件make menuconfig,make xconfig,make gconfig);设置核心内容与模块(根据主机用途选择);核心的编译与安装,编译流程:make clean、make bzImage、make modules、make modules_install(如果同一个版本的核心被编译两次以上的话,再次编译前先将/lib/modules里的该版核心先移开);设置多重启动系统:移动新核心到/boot中、修改grub设置文件;单一模块编译流程:模块说明与下载、将文件解压缩(tar)、编译与安装(make)、将模块移到核心目录,并更新模块依赖属性;核心模块管理:lsmod、modinfo、modprobe、insmod、rmmod...