- # 目录
1. 系统概述
1.1. 系统目录结构
- /bin:Binary的缩写,存放常用命令
- /dev:Device(设备)的缩写,存放外部设备
- /home:存放用户主目录,以用户账号命名
- /lost+found:非法关机后存放一些文件
- /mnt:软驱与光驱接入挂载的地方
- /proc:系统内存的映射,存放系统核心与执行程序的一些信息
- /sbin:s=super user,存放系统管理员使用的系统管理程序
- /srv:
- /tmp:存放临时文件
- /var:摆放系统日志文件
- /boot:开机设定目录
- /etc:存放所有的系统管理所需要的配置文件和子目录。如passwd、shadow文件
- /lib:Linux执行或编译程序函数库目录
- /media:设备挂载目录
- /opt:给主机额外按照软件所摆放位置,默认为空
- /root:超级权限者的用户主目录
- /selinux:
- /sys:
- /usr:存放应用程序和执行文件
- /usr/bin:系统用户使用的应用程序
- /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序
- 【重要文件】
- /etc/passwd:存放了用户的基本属性
- /etc/shadow:存放用户加密后的口令
- /etc/group:存放用户组信息
# cat /etc/passwd
[用户名]:[口令(加密)]:[用户标识号]:[组标识号]:[注释性描述]:[主目录]:[登录Shell]
root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:Printer administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/usr/sam:/bin/sh
# cat /etc/shadow
[登录名]:[加密口令]:[最后一次修改时间]:[最小时间间隔]:[最大时间间隔]:[警告时间]:[不活动时间]:[失效时间]:[标志]
root:Dnakfw28zf38w:8764:0:168:7:::
daemon:*::0:0::::
bin:*::0:0::::
sys:*::0:0::::
adm:*::0:0::::
uucp:*::0:0::::
nuucp:*::0:0::::
auth:*::0:0::::
cron:*::0:0::::
listen:*::0:0::::
lp:*::0:0::::
sam:EkdiSECLWPdSa:9740:0:0::::
cat /etc/group
[组名]:[口令]:[组标识号]:[组内用户列表]
root::0:root
bin::2:root,bin
sys::3:root,uucp
adm::4:root,adm
daemon::5:root,daemon
lp::7:root,lp
users::20:root,sam
2. 文件属性及操作
2.1. 文件基本属性
[root@izwz93lrf9fjd33ww9xusoz ~]# ls -l -i
total 16
263272 drwxr-xr-x 4 root root 4096 Jun 3 23:58 deploy
262271 drwxr-xr-x 2 root root 4096 May 19 16:39 downloads
395232 drwxr-xr-x 3 root root 4096 May 19 14:52 sdk
266007 drwxr-xr-x 4 root root 4096 May 19 16:39 software
[索引节点号] [文件类型][用户权限][组权限][其他用户权限] [硬链接数] [所属用户] [所属组] [文件大小] [修改时间] [文件名称]
文件的结构:索引节点+数据
索引节点,又称I节点,它是一个结构,包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素对应。系统给每个索引节点分配了一个号码,也就是该节点在数组中的索引号,称为索引节点号。
- 文件类型
- [d]:目录文件
- [-]:普通文件
- [l]:链接文件
- [b]:块设备文件
- [p]:管道文件
- [s]:Socket文件
- [c]:字符设备文件
- 用户权限
- [r]:读权限,对应数值4
- [w]:写权限,对应数值2
- [x]:执行权限,对应数值1
- [-]:无该权限,对应数值0
2.2. 文件操作
- 显示目录和文件
ls [op] 目录名
- [-a]:列出所有文件,包括隐藏文件(“.”开头)
- [-d]:显示目录
- [-i]:显示文件的索引节点
- [-k]:以k字节的形式表示文件大小
- [-l]:列出文件的详细信息
- [-R]:显示子目录下的内容
- [-t]:以时间排序
- [-S]:以大小排序
- 显示文件内容
- 显示文件内容
cat [op] 文件名
- [-n]:由1开始对所有输出的行数编号
- [-b]:对空白行不编号
- [-s]:将连续两行以上的空白行代换为一行空白行
- 分页显示指定文件内容,一次加载(适用于小文件)
more [op] [-num] [+/pattern] [+linenum] [文件名]
- [-num]:一次显示行数
- [+num]:从第num行开始显示
- [-s]:将连续两行以上的空白行代换为一行空白行
- 分页显示指定文件内容,按需加载(适用于大文件)
less [op] [文件名]
- [-n]:显示时去掉行号
- [-s]:压缩空白行
- 显示文件前N行内容
head [op] 文件名
- [-c]:显示文件的前多少字节
- [-n]:显示文件的前多少行
- [-q]:不显示文件名
- [-v]:在显示内容前先显示文件名
- 显示文件后N行内容
tail [op] 文件名
- [-c]:显示文件的后多少字节
- [-n]:显示文件的后多少行
- [-q]:不显示文件名
- [-v]:显示文件名
- [-f]:动态显示文件末尾N行内容,Ctrl+C终止显示
- 提取指定内容
cut [op] [文件名]
- [-c, –characters=LIST]:指定提取字符串个数
- [-d, –delimiter=DELIM]:指定分隔符
- [-f, –fields=LIST]:提取指定列
- 显示文件内容
- 创建目录
mkdir [op] 目录名
- [-p]:确保目录名称存在,如果不存在则创建一个
- [-m]:在创建目录的同时设置目录的权限
- 删除空目录
rmdir [op] 目录名
- [-p]:当子目录被删除后使它成为空目录,则一并删除
- 创建空文件或改变文件的时间记录
touch [op] 文件1 [文件2]
- [-a]:改变档案的读取时间记录
- [-m]:改变档案的修改时间记录
- [-c]:如果目的档案不存在,不会建立新的档案
- [-f]:/,为了相容性而保留
- [-r]:使用参考档(文件2)的时间记录
- [-d]:设定时间与日期
- [-t]:同-d
- [–no-create]:同-c
- 删除文件或目录
rm [op] [文件名或目录名]
- [-i]:删除前逐一询问
- [-f]:直接删除
- [-r]:recursion,递归删除子文件
- [-v]:显示指令执行过程
- 显示当前目录
pwd
- 切换工作目录
cd [目录名]
- [~]:用户主目录
- [.]:当前目录
- [..]:当前目录的父目录
- [-]:上一次的目录
- 复制文件
cp [op] [源文件或目录] [目标文件或目录]
- [-a]:-pdr
- [-d]:若源文件为链接文件,则复制链接文件属性而非文件本身
- [-f]:force,强制复制
- [-i]:若目的文件已存在,询问是否覆盖
- [-l]:进行硬链接的链接文件建立,而非复制文件本身
- [-p]:连同文件属性复制
- [-r]:递归复制子目录,用于目录复制
- [-s]:复制成为软链接文件,即创建快捷方式
- [-u]:若目的文件比源文件旧才更新目的文件
- 移动或更名文件
mv [op] [源文件或目录] [目标文件或目录]
- [-b]:若覆盖文件,则覆盖前先进行备份
- [-f]:直接覆盖
- [-i]:覆盖前询问
- 修改文件属性
chmod [op] [mode] 文件名或目录
- [-c]:完成更改后才显示更改动作
- [-f]:不显示错误信息
- [-v]:显示详细资料
- [-R]:对子文件进行相同权限更改
- [mode]=[ugoa][+-=] [rwxX][,…]
- [u]:文件拥有者
- [g]:所属组
- [o]:其他用户
- [a]:所有人
- [+]:增加权限
- [-]:取消权限
- [=]:唯一设定权限
- [r]:可读
- [w]:可写
- [x]:可执行
- [X]:
chmod g+w test.txt
chmod 755 test.txt
- 修改文件所属用户、组
chown [op] 用户名[:组名] 文件名或目录
- [-c]:完成更改后才显示更改动作
- [-f]:不显示错误信息
- [-h]:只对于链接进行修改,而不修改该链接指向的文件
- [-v]:显示详细资料
- [-R]:对子文件进行同等操作
- 修改文件所属组
chgrp [op] 组名 文件名或目录
- [-f]:不显示错误信息
- [-h]:只修改链接
- [-R]:对子文件进行同等操作
- 查找文件
find 起始目录 [option] [operate]
- [option]
- [-mount, -xdev]:只检查和指定目录在同一个文件系统下的文件
- [-amin n]:在过去n分钟内被读取过的文件
- [-anewer file]:比文件file更晚被读取过的文件
- [-atime n]:在过去n天被读取过的文件
- [-cmin n]:在过去n分钟内被修改过的文件
- [-cnewer file]:比档案file更新的文件
- [-ctime n]:在过去n天被修改过的文件
- [-empty]:空文件
- [-gid n, -group name]:gid是n或者group名是name的文件
- [-ipath p, -path p]:路径名称符合p的文件,ipath忽略大小写
- [-name name, -iname name]:文件名称符合name的文件,iname忽略大小写
- [-size n]:文件大小为n单位的文件
- [-type type]:文件类型为type的文件
- [-pid n]:文件进程号为n的文件
- [operate]
- [-exec]:
- [-ok]:
- [-ls]:详细列出找到的所有文件
- [-print]:在标准输出设备上显示找到的文件名
- 创建链接
ln [op] 源对象 目的对象
- [-f]:覆盖
- [-d]:链接目录
- [-i]:覆盖前询问
- [-n]:在进行软链接时,将目的对象视为一般文件
- [-s]:软链接
- [-v]:链接前显示文件名
- [-b]:覆盖或删除前备份
- 统计字数
wc [op] [文件名]
- [-c, –bytes]:显示文件大小
- [-m, –chars]:统计字串数量
- [-l, –lines]:统计行数
- [-w, –words]:统计字数
- 文字排序
sort [op] [文件名]
- [-u]:显示不重复的内容
- [-r]:反向排序
- [-n]:按数字方式排序
- [-f]:不区分大小写
- [-t fieldnumberN]:对指定的N字段排序
- [-k fieldnumberN]:对指定N个字符进行排序
- 字符转换
tr [op] [字符串1] [字符串2]
- [-c]:用字符串1中字符集的补集替换此 字符集,要求字符集为ASCII
- [-d]:删除字符串1中所有输入的字符
- [-s]:压缩重复出现的字符
- 打包/解包
tar [op] 文件或目录
- [-c]:创建一个打包文件
- [-r]:追加文件到打包文件尾
- [-t]:列出打包文件内容
- [-u]:更新打包文件,若打包文件中没有该文件则追加
- [-x]:解除打包文件内容
- [-f]:使用打包文件或设备,必选
- [-v]:详细报告tar指令处理的文件信息
- [-w]:每一步都要确认
- [-z]:用gzip来压缩/解压缩,若打包时有该项,解包时也需要有
// 压缩
# tar -zcvf test.tar.gz test.txt
// 解压
# tar -zxvf test.tar.gz
- 压缩/解压缩
gzip [op] 文件名
- [-c]:将输出写到标准输出上,并保留原有文件
- [-d]:将压缩文件解压
- [-r]:递归压缩或解压缩指定目录
- [-t]:测试,检查压缩文件是否完整
- [-v]:显示文件名和压缩比
- 解压缩winzip文件
unzip [op] 文件名
- [-x]:解压缩文件
- [-v]:显示信息
- [-t]:测试是否损坏
- [-d]:指定压缩目录
3. 用户和用户组管理
Linux系统中的用户分为超级用户、普通用户和特殊用户三种类型
Linux系统中的用户信息保存在/etc/passwd和/etc/shadow两个文件中。其中/etc/passwd文件保存所有用户的账号数据,/etc/shadow文件保存每个账号对应的口令信息。
- /etc/passwd
# vi /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...
kingsong:x:500:500:kingsong:/home/kingsong:/bin/bash
[用户名]:[加密密码]:[UID]:[GID]:[User Info]:[Home Directory]:[Login Shell]
- /etc/shadow
# vi /etc/shadow
[用户名]:[加密口令]:[上次更新时间]:[允许更改时间]:[要求更改时间]:[取消口令之前的警告时间]:[取消和停用之间的时间]:[账户口令的天数]:[账户终止时间]:[特殊标志]
- 添加用户
useradd [op] 用户名
- [-c comment]:指定注释性描述
- [-d 目录]:指定用户主目录,加[-m]当目录不存在时创建此目录
- [-g 用户组]:指定用户组
- [-G 用户组]:指定用户所属附加组
- [-s Shell文件]:指定用户登录的Shell
- [-u 用户名]:指定用户的用户号,加[-o]可以重复使用其他用户的标识号
- [-mk]:复制其他用户主目录下的文件和配置信息来创建用户
- 删除用户
userdel [op] 用户名
- [-r]:连用用户主目录一起删除
- 修改用户
usermod [op] 用户名
- [op]同useradd
- [-I 新用户名]:将原来的用户名改为新的用户名
- 管理用户口令
passwd [op] 用户名
- []:修改口令
- [-I]:锁定口令,即禁用账号
- [-u]:口令解锁
- [-d]:使账号无口令
- [-f]:强制用户下次登录时修改口令
- 显示登入用户
who [op]
- [-s]:简短格式
- [-a]:显示所有用户信息
- [-H]:加上头标志
- [-u]:显示当前系统的用户状态
w [op] [user]
- [-h]:不显示标题
- [-u]:列出当前进程和CPU时间时忽略用户名
- [-s]:短模式,不显示登录时间、JCPU和PCPU时间
- [user]:只显示指定用户情况
- 显示用户信息
id [op]
- [-g]:显示工作组信息
- [-u]:显示用户信息
- 切换用户
su [op] [-] [username]
- [-]:表示在切换用户的同时也改变环境变量
- [-c command]:表示执行完命令command后就结束切换用户
- [-m]:环境变量不变
- [-l]:同时切换用户主目录
每个用户组的相关信息都存放在/etc/group文件中。
- /etc/group
# vi /etc/group
root:x:0:root
...
kingsong:x:500:
[组名]:[密码字段]:[GID]:[用户列表]
- 添加用户组
groupadd [op] 用户组
- [-g GID]:指定新用户组的组标识号
- [-o]:一般与[-g]同时使用,表示可使用已有GID
- [-r]:添加系统工作组
- [-f]:强制添加工作组
- 删除用户组
groupdel 用户组
- 修改用户组
groupmod [op] 用户组
- [-g GID]:指定新GID
- [-o]:表示可使用已有GID
- [-n 新用户组名]:修改组名
4. 系统管理
4.1. 设备管理
- #### 磁盘设备概述
Linux系统中设备是由文件来表示的,每种设备都被抽象为设备文件的形式。设备文件集中在/dev目录下。
hd:Hard Disk 硬盘
sd:SCSI硬盘
/dev/hda:代表第一个硬盘
/dev/hda1:代表第一个硬盘的第一个分区
- 查看本机硬盘及分区情况
fdisk -l
- #### 文件系统
文件系统是操作系统最为重要的一部分,它定义了磁盘上存储文件的方法和数据结构
- 常用文件系统
- FAT
- NTFS
- Ext2(Extended File System)
- Ext3
- Ext4
- iso9660
- VFS(Vitrual File System)
Linux可以支持多种文件系统,为此,必须使用一种统一的接口——VFS。通过VFS将不同的文件系统的实现细节隐藏起来。
- 功能
- 记录可用文件系统的类型
- 将设备同对应的文件系统联系起来
- 处理面向文件的通用操作
- 涉及针对文件系统的操作时,把它们映射到相关的物理文件系统
- #### 挂载与卸载
如果要使用USB存储设备、光盘活软盘等存储设备,必须将这些设备中的小目录树像嫁接一样挂载(mount)到Linux系统的大目录树中。
- 挂载
mount [-t fstype] [-o options] [dev name] [mount point]
- [-t fstype]:表示文件系统类型,如ext3、vfat、iso9660等
- [-o options]:表示挂载时的选项,如ro、rw、auto、iocharset等
- [dev name]:表示设备名,如/dev/sda3、/test.iso等
- [mount point]:表示挂载点,即挂载目录
- 卸载
umount 挂载点/设备名
- #### 磁盘管理命令
硬盘通过fdisk命令分区后,用户还是不能直接对硬盘进行存取数据,而是需要对分区创建文件系统,再讲分区挂载到某一挂载点上。
- 创建分区
fdisk 设备名
- 创建文件系统
mkfs [-V] [-t fstyle] [fs -options] filesys [blocks]
- [-V]:mkfs命令版本
- [-t fstyle]:表示文件系统类型
- [fs -options]:表示创建文件系统的选项
- filesys:表示设备名
- [blocks]:表示每个分区的大小
- 查看文件系统整体磁盘使用情况
df [op]
- [-a]:显示所有文件系统的磁盘使用情况
- [-h]:以KB或MB为单位
- [-k]:以1024字节为单位
- [-i]:显示i节点信息
- [-t]:显示各指定类型的文件系统的磁盘空间使用情况
- [-x]:列出不是某一指定类型文件系统的磁盘空间使用情况
- [-T]:显示文件系统类型
- 查看磁盘空间使用情况
du [op | param] [目录名...]
- [-a]:显示子文件
- [-b]:以字节为单位
- [-k]:以1024字节为单位
- [-h]:以KB或MB为单位
- [-s]:对每个目录参数只给出占用的数据块总数
4.2. 进程管理
- #### 进程概念
程序只是一个静态的指令集合,不占系统的运行资源;而进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。
一个程序可以启动多个进程
一个正在执行的进程称为一个作业,作业可以可以包含一个或多个进程。
- 类型
- 交互进程:由Shell启动的进程
- 批处理进程:和终端没有关系,是一个进程序列
- 守护进程:在后台持续运行的进程
- 属性
- PID:进程ID
- PPID:父进程ID
- UID:启动进程的用户ID
- GID:所归属的组ID
- 进程状态
- 运行R
- 休眠S
- 僵尸Z
- 优先级
- 终端名
- 资源占用
进程管理
后台启动
... &
调度启动
- 执行一次
at [op] TIME
- [-q queue]:使用指定队列来存储,queue的编号为[a-zA-Z]
- [-m]:邮件告知执行完成
- [-f file]:读入命令脚本文件
- [-l]:列出所有作业
- [-d]:删除作业
- [-v]:列出所有已经完成但尚未删除的作业
- 周期性执行
crontab [-u user] filecrontab
||crontab [-u user] { -l | -r | -e }
- [-u user]:指定用户,若无此项,即表示指定自己
- [-e]:执行文件编辑器来设定时程表,默认vi
- [-r]:删除目前的时程表
- [-l]:列出目前的时程表
- 执行一次
当指定了时间并按下回车键之后,at会进入交互模式并要求输入指令或程式,当输入完成后按下Ctrl+D组合键即可完成所有动作,执行结果将会以邮件形式发送到用户账号中
- crontab文件格式
f1 f2 f3 f4 f5 program
- f1:分钟
- f2:小时
- f3:一个月中的第几天
- f4:月份
- f5:一个星期中的第几天
- 查看进程动态
ps [op]
- [-e]:显示所有进程
- [-f]:全格式显示
- [-h]:不显示标题
- [-l]:长格式显示
- [-w]:宽模式显示
- [-a]:显示所有进程,包括其他用户
- [-r]:显示正在运行的进程
- [-x]:显示没有控制终端的进程
- 树形结构查看进程
pstree [op] [Pid | User]
- [-a]:显示完整指令和参数
- [-p]:显示PID
- [Pid]:指定显示某进程信息
- [User]:指定显示某用户信息
- 关闭进程
kill [-s signal | -p] [-a] pid
||kill -l [signal]
- [-s]:指定要送出的信号,有重跑HUP(1)、杀掉KILL(9)、结束TERM(15)
- [-p]:只显示进程号
- [-l]:列出所有可用的信号名称
4.3. 系统监视与日志
Linux中大部分的日志位于/var/log目录下
- 动态显示进程信息
top [op]
- [-d delay]:改变显示的更新速度
- [-q]:没有任何延迟的显示速度,如果使用者具有超级管理员的权限,则top将会以最高的优先序执行
- [-c]:切换显示模式,[只显示执行档的名称 | 显示完整的路径与名称]
- [-S]:累积模式,会将已完成或消失的子进程(dead child process)的CPU time累积起来
- [-s]:安全模式
- [-i]:不显示任何闲置或无用的进程
- [-n]:更新的次数,完成后退出top
- [-b]:批次档模式,搭配\”n\”参数一起使用,将top的结果输出到文件中
- 查看内存使用情况
free [op]
- [-b]:以字节为单位显示
- [-k]:以KB为单位显示
- [-m]:以MB为单位显示
4.4. 系统初始化过程分析
- BIOS初始化
- Boot loader管理程序的加载
- Kernel initialization内核初始化
- 第一个初始进程init启动
- 确定系统运行的run level
- 运行初始化脚本/etc/init.d/rc.sysinit
- 确定系统要启动和关闭的服务
- 执行自定义脚本/etc/rc.d/rc.local
- 激活系统中常规使用的控制台
- 启动X Window和桌面环境
init进程扮演了终极父进程的角色,失去父进程的子进程会以init作为它们的父进程
5. 网络管理
5.1. 网络接口配置
- 显示正在活动的网卡信息
ifconfig
- 开关网卡
ifconfig <设备名> [down | up]
- 配置IP地址和子网掩码
ifconfig <设备名> <IP地址> netmask <掩码>
注意:ifconfig命令修改都是临时性的,在计算机重启后失效。如果需要永久生效,需要修改/etc/sysconfig/networking-scripts/ifcfg-ethN文件或者使用图形界面配置工具操作。
5.2. 常用指令
- 测试网络连通
ping [op] <目的主机或IP地址>
- [-c Count]:指定要被发送(或接收)的回送信号请求的数目
- [-s PacketSize]:指定要发送数据的字节数。默认56,当和8字节的ICMP头数据合并时被转换成64字节的ICMP数据
- 显示数据包到主机间的路径
traceroute [op] <目的主机或IP地址>
- [-g] <网关>:设置来源路由网关,最多可设置8个
- [-n]:直接使用IP地址而非主机名
- [-v]:详细显示指令的执行过程
- [-w] <超时秒数>:设置等待远端主机回报的时间
- 显示路由表
route
- 添加或删除路由记录
route [add | del]-net <网络号> netmask <网络掩码> dev <设备名>
- 添加或删除默认网关
route [add | del] default gw <网关名或网关IP>
- 显示网络状态
netstat [op]
- [-a]:显示所有会话数据
- [-i]:列出系统已经定义的每个网卡
- [-r]:显示出计算机当前的路由表
- [-s]:显示出当前网络协议统计信息
5.3. 相关文件
- #### /etc/hosts
/etc/hosts 是域名或主机名与IP地址的映射文件。
- #### /etc/sysconfig/network-scripts/ifcfg-ethN
在Linux中,系统网络设备的配置文件保存在/etc/sysconfig/network-scripts目录下,ifcfg-ethN表示第N+1个(从0开始)网卡的配置文件
DEVICE=eth0 //
BOOTPROTO=none
HWADDR=08:00:27:1F:BF:15
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.0.17
- #### /etc/sysconfig/network
该文件是最基本的网络配置信息,系统启动时读取该文件。文件中定义了计算机网络方面的全局配置,对所有网卡生效。
NETWORKING=yes // 是否支持网络功能
NETWORKING_IPV6=no // 是否对IPV6支持
HOSTNAME=localhost.localdomain // 表示主机名
- #### /etc/resolv.conf
/etc/resolv.conf是域名服务器设置文件
- #### /etc/host.conf
该文件指定如何解析计算机名
- #### /etc/services
该文件是网络服务名与端口号的映射文件
- #### /etc/protocols
该文件描述TCP/IP系统提供的各种网络互联协议以及对应的协议号
5.4. 网络服务管理
- 检查或设置系统服务
chkconfig [op] <服务名> [status]
- [–add]:添加指定服务
- [–del]:删除指定服务
- [–list]:显示所有或指定服务
- [–level RunLevel]:改变服务的运行级别
- []:检查服务状态
- [status]
- [on]:启动
- [off]:停止
- [reset]:重置
- 管理系统服务
service <服务名> [op]
- [start]:启动
- [stop]:停止
- [restart]:重启
- [status]:
5.5. 网络服务模型
Linux系统中网络服务模型有两种,一种是独立的守护进程工作模式,一种是基于xinetd的工作模式。
- #### 独立的守护进程工作模式
运行独立的守护进程工作方式称作stand-alone。它是UNIX传统的Client/Server模式的访问模式。服务器监听在一个特定的端口上等待客户端产生一个连接请求,守护进程就创建一个子服务器响应这个连接。而主服务器继续监听。以保持多个子服务器池等待下一个客户端请求。
- #### 基于xinetd的工作模式
RHEL5使用的网络守护进程是xinetd(eXtended InterNET daemon)。和stand-alone模式相对应xinetd模式。xinetd能够同时监听多个指定端口,在接受用户请求时,它能够根据用户请求的端口不同,启动不同的网络服务进程来处理这些用户请求。
xinetd有一下特点
- 支持对TCP、UCP、RPC服务
- 基于时间段的访问控制
- 能进行类似TCP Wrappers 的访问控制
- 功能完备的log功能,既可以记录连接成功也可以记录连接失败行为
- 能有效地防止部分DoS(Denial of Services)攻击
- 能限制同时运行的同一类型的服务器数目
- 能限制启动的所有服务器数目
- 能限制log文件大小
- 将某个服务绑定在特定的系统接口上,从而能实现只允许私有网络访问某项服务
- 能实现作为其他系统的代理
5.6. 常见网络服务
5.6.1. Telnet
Telnet是一种远程登录应用,起源于ARPANET,是电信网络协议(Telecommunication Network Protocol)的缩写。
配置流程
- 默认安装后,RHEL5使用的是krb5-telnet,不是使用普通的Telnet服务,而且未被打开
- 编辑/etc/xinetd.d/krb5-telnet
service telnet
{
flags=REUSE # 表示当中断或重启xinetd时,TCP/IP Socket可重用
socket_type=stream # 表示使用TCP的Socket类型
wait=no # 表示该服务提供多线程服务
user=root # 设置进程的UID,由root用户操作
server=/usr/kerberos/sbin/telnetd # 设置服务程序文件
log_on_failure += USERID # 表示当连接失败时,系统除记录/etc/xinetd.conf文件中设置的内容外,还需记录用户ID
disable = no # 表示允许xinetd启动本项服务(该项原来是yes)
}
- 编辑/etc/securetty,添加以下行
tty1
tty2
...
ttyN
pts/0
pts/1
...
pts/N
# 该文件允许我们规定用户可以从哪个终端设备登录
- 重新启动服务:
service xinetd restart
- 由于krb5-telnet不使用root用户登录,因此可先用普通用户登录,然后通过su切换为root用户。
5.6.2. FTP
FTP(File Transfer Protocol)是文件传输的通信协议,也是一般最常用来传送文件的方式。在Linux下实现FTP服务的软件有很多,最常见的有vsFTPd、wu-FTPd、ProFTP等。
- vsFTPd的安装
- vsFTPd的配置文件
- /etc/vsftpd/vsftpd.conf
- /etc/vsftpd.ftpusers
- /etc/vsftpd.user_list
- vsFTPd的启动和关闭
service vsftpd [start | stop | restart]
- 关闭防火墙和SELinux对FTP的禁用状态
- 关闭防火墙
service iptables stop
setsebool -P ftpd_disable_trans on
setsebool -P ftp_home_dir on
- 关闭防火墙
- 重启vsFTPd
5.6.3. WWW
WWW服务也称Web服务,流行的WWW服务器软件有APACHE和微软的IIS,IIS是由微软开发的,只能用在微软的操作系统上,而APACHE是一个自由软件。
- httpd的安装
- httpd的启动与关闭
service httpd [start | stop | restart]
httpd的配置(/etc/httpd/conf/httpd.conf)
ServerRoot "/etc/httpd"
Timeout 120
KeepAlive On
Listen 80
ServerName localhost
DocumentRoot "/var/www/html"
- 客户端连接
5.6.4. DHCP
DHCP(Dynamic Host Configuration Protool),其前身是BOOTP。它分为两个部分:服务器端和客户端。所有的IP网络设定信息都由DHCP服务器集中管理,并负责处理客户端的DHCP要求。而客户端则会使用从服务器分配下来的IP信息。
6. Shell程序
6.1. 概述
Shell程序也称为Shell脚本程序,Shell程序可以认为是将Shell命令按照控制结构组织到一个文本文件中,批量交给Shell去执行。
特点如下
- 不同的Shell解释器使用不同的Shell命令语法
- Shell使用解释型语言,不需要重新编译
运行方法
/bin/bash test.sh
chmod +x test.sh
./test.sh
6.2. bash程序设计
变量
自定义变量
变量=值(等号两边不能有空格)
调用变量时,需要使用$
a="Red Hat Enterprise Linux"
bc=5
echo $a
echo RHEL5 is ${a}${bc}
echo "$a" # 双引号输出Red Hat...
echo '$a' # 单引号输出字符串"$a"
echo \$a # 反斜杠输出字符串"$a"
a=`pwd` # 倒引号执行内部命令
echo $a # 输出"root"
- 位置变量和特殊变量
- $0:脚本名字
- $n:传进来的第n个参数
- $*:参数列表
- $@:参数列表
- $#:参数个数
- $$:Shell脚本的进程号
- $?:紧邻的前驱命令的返回值
shift命令可以将位置变量(参数)左移一位,即1 2 3 –> 2 3
环境变量
- $HOME:用户主目录
- $IFS:内部的域分隔符
- $PATH:寻找命令或可执行文件的搜索路径列表
- PS1:主命令提示符,默认为“ P S 1 : 主 命 令 提 示 符 , 默 认 为 “ ”
- $PS2:从命令提示符,默认为“>”
- $TERM:使用的终端类型
算术运算
expr [expression]
let [expression]
条件判断
bash程序的条件判断的结果为0表示真,为1表示假
条件判断的格式有两种
test condition
[condition]
字符串比较
- str1 = str2:相等则为真
- str1 != str2:不等则为真
- -n str:不为空则为真
- -z str:为空则为真
算术比较
- exp1 -eq exp2:相等则为真
- exp1 -ne exp2:不等则为真
- exp1 -gt exp2:大于则为真
- exp1 -ge exp2:大于或等于则为真
- exp1 -lt exp2:小于则为真
- exp1 -le exp2:小于或等于则为真
- !exp:exp为假则为真
逻辑运算
- -a:与
- -o:或
- !:非
文件属性比较
- -d file:是目录则为真
- -e file:存在则为真
- -f file:是普通文件则为真
- -g file:SGID位被设置则为真
- -r file:可读则为真
- -s file:长度不为0则为真
- -u file:SUID位被设置则为真
- -w file:可写则为真
- -x file:可执行则为真
控制结构
# if分支语句
if [exp1]
then
command1
elif [exp2]
then
command2
elif [expN]
commandN
else
command0
fi
# case分支语句
case 值 in
模式1)
command1
;;
模式2)
command2
;;
...
模式n)
commandN
;;
*)
# default情况
command
;;
esac
# for语句
for var in item1 item2 ... itemN
do
command
done
# while语句
while condition
do
command
done
# util语句
until condition
do
command
done
- #### 函数
[function] 函数名()
{
command;
[return var;]
}
7. GCC
- C语言的标准
- ANSI C
- POSIX
- SVID
- GNU C
GCC(GNU Complier Collection,GNU编译器套装),是一套由GNU开发的编程语言编译器。
一个C/C++程序从开始编码到生成二进制可执行文件至少要经过4个步骤
(1)预处理:对源文件的宏进行展开
(2)编译:将源程序编译成汇编文件
(3)汇编:将汇编文件编译成机器码
(4)链接:将目标文件和外部符号进行链接,生成可执行文件
扩展名规范
- .c:C语言源代码文件
- .h:头文件
- .C,.cc,.cpp,.cp,.cxx:C++源代码文件
- .i:预处理后的C源代码文件
- .ii:预处理后的C++源代码文件
- .m:Objective-C源代码文件
- .o:编译后的目标文件
- .s:汇编语言源代码文件
- .S:经过预编译的汇编语言源代码文件
GCC的使用
gcc [op] [filenames]
- [-c]:只编译,不连接成为可执行文件,.c–>.o
- [-o filename]:确定输出文件的名称
- [-g]:在可执行文件中加入调试信息,方便进行调试
- [-O [0 | 1 | 2 | 3]]:对生成的代码使用优化。默认2级优化,0为不进行优化
- [-Ldiranme]:在编译时增加搜索库文件的目录
- [-Iname]:在连接时,装载名字为libname.a的函数库
- [-Idir]:在编译时增加一个搜索头文件的目录dir
- [-E]:指定GCC在生成预处理文件后停止
- [-S]:指定GCC在生成汇编文件后停止
- [-w]:禁止所有警告
- [-Wwarning]:允许产生warning类型的警告,类型取值可以是main、unused、error和all等。
# gcc -E hello.c -o hello.i // 预处理后停止
# gcc -c hello.c -o hello.o // 只编译,不连接
# gcc hello.o -o hello // 生成可执行文件
- ### makefile
基本格式:
目标:依赖项列表
(Tab)命令
...
# 示例
hello:hello.o say_hello.o
gcc hello.o say_hello.o -o hello
say_hello.o:say_hello.c say_hello.h
gcc -c say_hello.c -o say_hello.o
hello.o:hello.c hello.h
gcc -c hello.c -o hello.o
# make // 执行makefile
...
# ./hello // 运行可执行文件
8. GTK+
- ### 概述
GTK+是一种图形用户界面(GUI)工具包,它是一个库(或者,实际上是若干个密切相关的库的集合),它支持创建基于GUI的应用程序。
优点
- 社区活跃
- 提供广泛的选项
- 简单易用
- 设计良好、灵活而可扩展
- 自由软件
- 可移植
组成
- GLib:一个底层库,封装了基本的数据结构操作、底层功能接口以及平台相关的代码。
- GDK(GIMP Drawing Kit):封装了底层访问窗口系统的函数
- gdk-pixbuf:一个客户端的图像处理库
- Pango:一个文本布局和渲染库,着重解决国际化功能
- Cairo:一个2D图形库,支持多种输出设备,支持硬件加速功能
- ATK:一组提供访问性的接口
运行环境
检查GTK+当前版本
pkg-config --modversion gtk+-2.0
检查GTK相关库
pkg-config gtk+-2.0 --cflags --libs
语法
GTK+的对象层次
GObject
- GtkObject
- GtkWidget
- GtkContainer
- GtkBin
- GtkWindow
控件
创建控件
gtk_控件名_new(参数...)
或gtk_控件名_new_with_参数名(参数...)
返回值为==GtkWidget==型的指针窗体控件 GtkWindow
GtkWindow是窗体控件,它是GTK+程序的基础元素。
- 创建窗口
GtkWidget * gtk_window_new(GtkWindowType type)
- 设置窗口标题
void gtk_window_set_title(GtkWindow *window, const gchar *title)
- 设置窗口位置
void gtk_window_set_position(GtkWindow *window, GtkWindowPosition position)
- 设置窗口大小
void gtk_window_set_default_size(GtkWindow *window, gint width, gint height)
- 调整窗口大小
void gtk_window_set_resize(GtkWindow *window, gint width, gboolean resizable)
设置窗口是否可调整大小
void gtk_window_set_resizable(GtkWindow *window, gboolean resizable)
- Position
- GTK_WIN_POS_NONE(位置由窗口管理器决定)
- GTK_WIN_POS_CENTER
- GTK_WIN_POS_MOUSE
- GTK_WIN_POS_CENTER_ALWAYS
- GTK_WIN_POS_CENTER_ON_PARENT(对话框有用)
按钮控件 GtkButton
GtkButton(普通按钮)
- GtkToggleButton(转换开关按钮)
GtkCheckButton(复选框按钮)
GtkRadioButton(单选按钮)
- 创建普通按钮
GtkWidget *gtk_button_new(void)
- 创建带标签的普通按钮
GtkWidget *gtk_button_new_with_label(const gchar *label)
- 创建转换开关按钮
GtkWidget* gtk_toggle_button_new(void)
- 读取转换开关按钮的状态
gboolean gtk_toggle_button_get_active(GtkToggleButton *toggle_button)
- 设置转换开关按钮的状态
void gtk_toggle_button_set_active(GtkToggleButton *toggle_button)
- 从现有单选按钮中获取组信息进而创建单选按钮
GtkWidget* gtk_radio_button_new_from_widget(GtkRadioButton *group)
- 设置单选按钮组信息
void gtk_radio_button_set_group(GtkRadioButton *radio_button, GSList *group)
- 获取单选按钮组信息
GSList* gtk_radio_button_get_group(GtkRadioButton *radio_button)
- 创建普通按钮
- #### 标签控件 GtkLabel
标签控件GtkLabel是GTK中最常见的控件,它是静态的不可编辑的字段。
- 创建标签
GtkWidget* gtk_label_new(const char *str)
- 设置标签的文本内容
void gtk_label_set_text(GtkLabel *label, const char *str)
- 获取标签的文本内容
const gchar* gtk_label_get_text(GtkLabel *label)
- #### 文本框控件 GtkEntry
GtkEntry是单行文本输入控件
- 创建文本框
GtkWidget* gtk_entry_new(void)
- 创建文本框并设置其最大输入长度
GtkWidget* gtk_entry_new_width_max_length(gint max)
- 设置文本框的最大输入长度
void gtk_entry_set_max_length(GtkWidget *entry, gint max)
- 获取文本框的内容
G_CONST_RETURN gchar* gtk_entry_get_text(GtkEntry *entry)
- 设置文本框内容
void gtk_entry_set_text(GtkEntry *entry, const gchar *text)
- 在文本框内容末尾插入内容
void gtk_entry_append_text(GtkEntry *entry, const gchar *text)
- 在文本框内容开头插入内容
void gtk_entry_prepend_text(GtkEntry *entry, const gchar *text)
- 设置文本框内容是否控件
void gtk_entry_set_visibility(GtkEntry *entry, gboolean visiable)
- #### 对话框控件 GtkDialog
对话框控件GtkDialog是GtkWindow的一个子类
对话框分为模态对话框和非模态对话框,两者主要区别在于前者只要对话框存在,对话框的父窗体就不能响应任何外在的动作。
- 创建对话框
GtkWidget * gtk_dialog_new(void)
- 创建对话框并指定设置
GtkWidget* gtk_dialog_new_with_buttons(const gchar *title, GtkWindow *parent, GtkDialogFlags flags, const gchar *first_button_text,...)
运行对话框
gint gtk_dialog_run(GtkDialog *dialog)
- GtkDialogFlags
- GTK_DIALOG_MODAL(强迫对话框为模态对话框)
- GTK_DIALOG_DESTROY_WITH_PARENT(对话框的父窗体消失时,它也跟着结束)
- GTK_DIALOG_NO_SEPARATOR(主窗口区域和按钮区域之间隐藏分割线)
- #### 消息对话框 GtkMessageDialog
消息对话框GtkMessageDialog继承于GtkDialog
- 创建函数
GtkWidget* gtk_message_dialog_new(GtkWidget *parent,
GtkDialogFlags flags,
GtkMessageType type,
GtkButtonsType buttons,
const gchar *message_format,
...)
- GtkMessageType
- GTK_MESSAGE_INFO(信息)
- GTK_MESSAGE_WARNING(警告)
- GTK_MESSAGE_QUESTION(询问)
- GTK_MESSAGE_ERROR(致命错误)
- GtkButtonsType
- GTK_BUTTONS_NONE(无按钮)
- GTK_BUTTONS_OK(确认按钮)
- GTK_BUTTONS_CLOSE(关闭按钮)
- GTK_BUTTONS_CANCEL(取消按钮)
- GTK_BUTTONS_YES_NO()
- GTK_BUTTONS_OK_CANCEL()
- #### 事件、信号和回调函数
GTK+用信号(signal)和回调函数(callback)的方式来处理来自外部的事件
- 回调函数原型
void callback_func(GtkWidget *widget,
... /* other signal arguments */
gpointer callback_data){}
- 信号与回调函数绑定
g_signal_connect(gpointer *object,
const gchar *name,
Gcallback func,
gpointer user_data);
- #### 页面布局
窗口类控件只能容纳一个子控件,如GtkWindow、GtkDialog…
盒状容器(GtkBox)能容纳一行或一列的子控件,它分成:横向盒状容器(GtkHBox)和纵向盒状容器(GtkVBox)。
- 创建横向盒
GtkWidget* gtk_hbox_new(gboolean homogeneous, gint spacing)
- 创建纵向盒
GtkWidget* gtk_vbox_new(gboolean homogeneous, gint spacing)
- 填充盒状容器
void gtk_box_pack_start(GtkWidget *box, GtkWidget *child, gboolean expand, gboolean fill, guint padding)
- 填充顶层容器
gtk_container_add(GtkWidget *window, GtkWidget *box)
- #### 示例
#include <gtk/gtk.h>
#include <stdio.h>
#include <string.h>
const char * psw="0000";
// 回调函数
void closeApp(GtkWidget *window, gpointer data) {
gtk_main_quit();
}
void button_clicked(GtkWidget *window, gpointer data) {
const char *psw_text = gtk_entry_get_text(GTK_ENTRY((GtkWidget *)data));
if(strcmp(psw,psw_text))
printf("Access");
else
printf("Faliure");
}
int main(int argc, char *argv[]) {
GtkWidget *window;
GtkWidget *psw_label;
GtkWidget *psw_entry;
GtkWidget *ok_button;
GtkWidget *hbox;
GtkWidget *vbox;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"GtkEntryBox");
gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(window),200,200);
// 连接回调函数
g_sinal_connect(GTK_OBJECT(window),"destroy",GTK_SIGNAL_FUNC(closeApp),NULL);
psw_label=gtk_label_new("Password:");
psw_entry=gtk_entry_new();
gtk_entry_set_visibility(GTK_ENTRY(psw_entry),FALSE);
ok_button=gtk_button_new_with_label("OK");
// 连接回调函数
g_signal_connect(GTK_OBJECT(ok_button),"clicked",GTK_SIGNAL_FUNC(button_clicked));
// 界面布局
hbox=gtk_hbox_new(TRUE,5);
vbox=gtk_vbox_new(FALSE,10);
gtk_box_pack_start(GTK_BOX(hbox),psw_label,TRUE,FALSE,5);
gtk_box_pack_start(GTK_BOX(hbox),psw_entry,TRUE,FALSE,5);
gtk_box_pack_start(GTK_BOX(vbox),hbox,FLASE,FALSE,5);
gtk_box_pack_start(GTK_BOX(vbox),ok_button,FALSE,FALSE,5);
gtk_containner_add(GTK_CONTAINER(window),vbox);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
- ### 执行
# "`"为倒引号,先执行倒引号里面的内容,获得GTK+的库文件和头文件
gcc filename.c -o filename `pkg-config gtk+-2.0 --cflags --libs`
9. 文本编辑器vi/vim
- ### 命令模式(Command mode)
用户刚进入vi/vim,就处于命令模式
输入
- i –> 输入模式,从当前位置输入
- I –> 输入模式,当前行第一个非空格符处开始输入
- a –> 输入模式,在下一个字符处开始输入
- A –> 输入模式,当前行最后一个字符处开始输入
- o –> 输入模式,下一行处开始输入
- O –> 输入模式,上一行处开始输入
- r –> 取代模式,取代一次光标所在的字符
- R –> 取代模式,一直取代光标所在字符
- x –> 删除当前光标所在处的字符
- : –> 底线命令模式,在最低行输入命令
- h –> 向左移动一个字符
- j –> 向下移动一个字符
- k –> 向上移动一个字符
- l –> 向右移动一个字符
- num+[hjkl] –> 向某个方向移动num个字符
- [Ctrl] + [f] –> 向下移动一页
- [Ctrl] + [b] –> 向上移动一页
- [Ctrl] + [d] –> 向下移动半页
- [Ctrl] + [u] –> 向上移动半页
- + –> 光标移动到非空格符的下一行
- - –> 光标移动到非空格符的上一行
- n –> 光标向后面移动n个字符
- 0 –> 移动到行首
- $ –> 移动到行尾
- H –> 移动到当前屏幕第一行第一个字符
- M –> 移动到当前屏幕中央一行的第一个字符
- L –> 移动到当前屏幕最后一行第一个字符
- G –> 移动到档案最后一行
- nG –> 移动到档案第n行
- gg/1G –> 移动到档案第一行
- n –> 光标向下移动n行
- /word –> 向下寻找找字符串
- ?word –> 向上寻找字符串
- n –> 继续搜寻动作
- N –> 反向搜寻
- :num1,num2s/word1/word2/g –> 在第num1行至num2行之间,将word1替换为word2
- :1,$s/word1/word2/g –> 在第一行到最后一行,将word1替换为word2
- :1,$s/word1/word2/gc –> 在第一行到最后一行,将word1替换为word2,需用户确认
- x –> 向后删除一个字符
- X –> 向前删除一个字符
- nx –> 向后删除n个字符
- dd –> 删除一行
- ndd –> 向下删除n行
- d1G –> 删除光标到第一行的数据
- dG –> 删除光标到最后一行的数据
- d$ –> 删除光标到行尾的数据
- d0 –> 删除光标到行首的数据
- yy –> 复制一行
- nyy –> 向下复制n行
- y1G –> 复制光标所在行到第一行的数据
- yG –> 复制光标所在行到最后一行的数据
- y0 –> 复制光标所在字符到行首的数据
- y$ –> 复制光标所在字符到行尾的数据
输入模式(Insert mode)
输入
- 字符按键以及Shift组合 –> 输入字符
- ENTER –> 回车换行
- BACK SPACE –> 删除光标前一个字符
- DELETE –> 删除光标后一个字符
- 方向键 –> 移动光标
- HOME/END –> 移动光标到行首/行尾
- Page Up/Page Down –> 上下翻页
- Insert –> 切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC –> 退出输出模式到命令模式
底线命令模式(Last line mode)
输入
- q –> 退出程序
- w –> 保存文件
- ! –> 强制动作
- ZZ –> 如果档案有改动,则储存后退出
- w [filename] –> 另存为
- r [filename] –> 将文件内容读入到光标后面
- n1,n2 w [filename] –> 将n1行到n2行的内容写入到文件中
- !command –> 执行linux指令
- set nu –> 显示行号
- set nonu –> 取消行号
文本格式转换
unix2dos filename
dos2unix filename
10. X Window
10.1. 组成和特点
- 组成
- X Server
- X Client
- X通信通道
- X Server
X Server是全部X Window的核心,是运行在系统后台的进程。
- X Client
X Client是X Window中的用户端程序,它负责提供用户执行程序,然后向X Server发出请求。
- X通信信道
X通信信道的主体是xlib(X函数库)。
- 特点
- 良好的网络支持
- 个性化的窗口界面
- 不内嵌于操作系统
10.2. 运行原理
- C/S模式应用程序
- 关于X Protocol
- 实现X Protocol的服务器软件
- X Server和WM(Window Manager 窗口管理器)
10.3. 启动和关闭
启动
init 5
startx
关闭
Alt+Ctrl+Backspace
11. 其他指令
- 显示文字
echo [op] [字符串]
- [-n]:输出文字后不换行
- [-e]:输出一空行
- 显示日历
cal [op] [月] [年]
- [-m]:以星期一为每周第一天方式显示
- [-j]:以1月1日起的天数显示
- [-y]:显示今年年历
- 显示/设定日期与时间
date [op] [+format] [MMDDhhmm][CC][YY][SS]
- [-d datestr]:显示datestr中所设定的时间
- [-s datestr]:设置系统时间
- [-u]:显示目前的格林威治时间
- 清除屏幕
clear
- 软件包管理
- 安装
rpm [-i | --install] [op] file1.rpm ... fileN.rpm
- [-h]
- [–test]
- [–percent]
- [–excludedocs]
- [–includedocs]
- [–replacepkgs]
- [–replacefiles]
- [–force]
- [–noscripts]
- [–prefix]
- [–ignorearch]
- [–ignoreos]
- [–nodeps]
- [–ftpproxy]
- [–ftpport]
- [-v]
- [-vv]
- [–root]
- [–rcfile]
- [–dbpath]
- 删除
rpm [-e | --erase] [op] pkg1 ... pkgN
- 升级
rpm [-U | --upgrade] [op] file1.rpm ... fileN.rpm
- 查询
rpm [-q | --query] [op] pkg1 ... pkgN
- [-p]
- [-f]
- [-a]
- [–whatrequires]
- 校验
rpm [-V | --verify | -y] [op] pkg1 ... pkgN
- 安装
- 联机帮助
man [op] 命令或配置文件
- [-d]
- [-h]
info <命令名>
help [命令名]