您的位置:首页 > 运维架构 > Linux

Linux系统管理知识点总结

2012-03-01 13:14 253 查看
一、硬盘及分区

1.分区

通常情况下主分区(安装操作系统)只有四个,扩展分区(存储文件数据,可建立逻辑分区)可以看成是一个特殊的主分区类型。

2.表述形式

硬盘:IDE接口(hdX),SCSI接口(sdX)

分区:以硬盘设备的文件名作为基础(主分区和扩展分区的序号在1-4之间,逻辑分区序号从5开始)

3.文件系统类型

EXT3:第3代扩展文件系统

是目前大多数linux系统中的默认文件系统类型,属于较典型的日志文件系统。特点:保存有磁盘存取记录的日志数据,便于恢复。

SWAP:交换文件系统

为linux系统建立交换分区,相当于虚拟内存,缓解物理内存不足的问题,分区大小为物理内存的1.5-2倍

其他文件系统:XFS/JFS/FAT16/FAT32/NTFS等

4.linux系统中的目录结构

/boot 系统必须的文件,包括内核文件,启动菜单配置文件等(通常被划分为独立分区)

/bin 最基本的用户命令,普通用户都有执行权限

/dev 硬盘、鼠标、键盘、光驱等各种各设备文件

/etc 系统及各种程序配置文件,通常有多个子文件以存放各个配置文件

/home 普通用户的宿主目录

/root root用户的宿主目录

/sbin 最基本的用户命令,管理员权限才可以执行

/usr 存放其他的用户应用程序

/var 存放系统化的一些文件

/tmp 存放系统运行过程中使用的一些临时文件

/lib 控件

二、安装系统

图形安装模式: 在"boot:"提示符后直接按回车

文本安装模式: 在"boot:"提示符后输入“linux text”并回车

三、基本操作

1.控制台快捷键

Ctrl+Alt+Fn 切换到第N个虚拟字符控制台

Alt+F7 从虚拟控制台返回图形桌面环境

Alt+Fn 字符终端间的切换

(虚拟机中有时候需要与Shift键组合使用)

2.重启和关机

shutdown -r now 重启

shutdown -h now 关机

halt -p 关闭系统,同时关闭主机电源

reboot 重启

(对于延时运行的关机重启操作,可以按"Ctrl+C"组合键取消,或者由其他管理员在另一个中断登陆后执行"shutdown -c" 命令进行取消)

eg: shutdown -r +15 'The system will be rebooted'

十五分钟以后重启系统,并通知已登录到主机中的各用户

四、linux起源和发展

1.linux内核版本

x.yy.zz

x主版本号:目前只使用1和2两个主版本号

yy此版本号:奇数(2.5)为开发版本;偶数(2.6)为稳定版

zz修订版本号:对同一个内核次版本的不断修订和升级

2.开放源代码软件(遵循GPL协议)

一、Linux命令概述

Linux命令格式

命令字 【选项】【参数】

反斜杠“\” 强制换行

Ctrl+U 快速删除光标处之前的所有字符内容

Ctrl+K 快速删除从当前光标处到行尾的所有字符内容

Ctrl+L 快速清空当前屏幕中的显示内容,只在左上角显示一行终端提示符

Ctrl+C 取消当前命令行的编辑,并切换为新的一行命令提示符

Ctrl+Z 中断,挂起到后台运行

help 命令

help pwd 使用help命令查看shell内部命令pwd的帮助信息

help help 使用help命令查看自身的帮助信息

--help 命令

ls --help 使用--help选项查看ls命令的帮助信息

使用man手册

man file 阅读file命令的帮助手册页信息

info命令

查看更加详细的帮助信息

二、文件和目录管理

1、pwd--查看当前的工作目录(Print Working Directory)

2、cd--切换工作目录(Change Directory)

3、IS--列表(list)显示目录内容

-l 以长格式(long)显示文件和目录的列表

-a 显示所有子目录和文件的信息,包括以“.”开头的隐藏目录和隐藏文件

-d 显示目录本身的属性,而并不是显示目录的内容

-A 与-a基本类似,但不会显示两个特殊的隐藏目录:表示当前目录的“.”、表示父目录的“..”

-h 以更人性化的方式显示出目录或文件的大小,默认单位为字节,将显示为K/M等单位

-R 以递归的方式显示指定目录及子目录中的所有内容

--color 通常使用“--color=tty”表示使用终端预定义的颜色

4、mkdir--创建新的目录(Make Directory)

-P 用于创建嵌套的多层目录结构

5、du--统计目录文件的占用情况

-a 统计磁盘空间占用时包括所有的文件,而不仅仅只是目录

-h 以人性化的方式显示出统计结果,单位为字节,显示为K、M等单位

-s 只统计每个参数的所占空间总的大小,而不是统计每一个子目录的大小

三、文件操作命令

1、touch--新建空文件

*当目标文件已经存在时,则更新文件的时间标记,否则将创建指定名称的文件

2、file--查看文件类型

*可以根据文件的内部储存结构来判别,而并不是文件扩展名。

在linux系统中,文件类型与文件扩展名没有绝对的关系

3、cp--复制文件或目录

cp 【选项】 ... 源文件或目录. 目标文件或目录

-f 覆盖时不再提醒

-i 覆盖时提醒用户确认

-p 复制时保留权限,属主及时间标记等属性不变

-r 复制目录时必须使用此选项,表示递归复制所有文件及目录

4、rm--删除文件或目录

-f 删除时不再提醒

-i 删除时提醒用户确认

-r 删除目录和文件时必须使用此选项,表示递归删除整个目录树

5、mv--移动文件或目录

mv 【选项】 ... 源文件或目录... 目标文件或目录

6、which --查找linux命令文件并显示所在的位置

*搜索范围主要是由用户的环境变量PATH决定(可以执行“echo SPATH”命令查看)

eg:显示当前的默认路径,并查LS命令文件所在的位置

echo $SPATH

which ls

7、find--查找文件或目录

find 【查找范围】 【查找条件表达式】

按名称查找 -name find /etc -name "resol*.conf"

按文件属主查找 -user find /var/log -user lp

按文件类型查找 -type find /boot -type d

按文件大小查找 -size find /boot -seize +1024k -a -name "vmlinuz"

{-a表示and -o表示or} find /boot -seize +1024k -o -name "vmlinuz"

8、ln--为文件或目录建立连接(link)

*为文件或目录建立快捷方式,提高用户定位文件或目录的效率

-s 符号链接

ln {-s} 源文件或目录... 链接文件或目标目录

四、文件内容操作命令

1、cat--显示并连接(Concatenate)文件的内容

2、more和less--分页查看文件内容

【按enter键向下逐行滚动翻页,按空格键可以向下翻一屏,按b向上翻一屏,按q键退出并返回原来的命令环境】

3、head和tail--查看文件开头或末尾的部分内容

【默认为十行,可使用-n选项指定需要显示多少行的内容】

4、wc--统计文件内容中的单词数量(word count)等信息

-l 统计文件内容中的行数

-w 统计文件内容中的单词个数

-c 统计文件内容中的字节数

5、grep--检索,过滤文件内容

grep 【选项】 ... 查找条件 目标文件

-i 查找文件内容时忽略大小写

-v 反转查找(in Vert),即输出与查找条件不相符的行

五、归档及压缩命令

1、gzip和bzip--制作压缩文件或解开已压缩的文件

gzip 扩展名为.gz .9选项可以提高压缩的比率

bzip2 扩展名为.bz2 -d选项用于解压文件

2、tar--制作归档文件或释放已归档的文件

-c 创建(creat).tar格式的包文件

-C 解包时指定释放的目标文件夹

-f 表示使用归档文件

-j 表示使用bzip2程序进行压缩和解压

-z 调用gzip程序进行压缩和解压

-p 打包时保留文件及目录的权限

-t 列表查看包内的文件

-v 输出详细信息(Verbose)

-x 解开.tar格式的包文件

tar 【选项】 归档及压缩文件名 需要归档的源文件或目录...

tar 压缩 jcvf .tar.bz2 解压 jxf

zcf .tar.gz zxf

六、使用vi文本编辑器

1、三种模式

命令模式(默认) 、 输入模式 、 末行模式

2、模式切换

命令模式 到 输入模式 :使用a、i、o

末行模式 :使用:

输入模式、末行模式 到 命令模式:使用esc键

a 在光标后插入内容

A 在光标所在行的末行(尾行)插入内容

i 在光标前插入内容

I 在光标所在行的开头(行首)插入内容

o 在光标所在行的后面插入一个新行

O 在光标所在行的前面插入一个新行

3、光标移动

Page Down 或 Ctrl+F 向下翻动一整页内容

Page Up 或 Ctrl+B 向上翻动一整页内容

4、行内快速跳转

Home键或"^"、数字0 将光标快速跳转到本行的行首

End键或"$"键 将光标快速跳至本行的行尾

5、行间快速跳转

使用1G或者gg 跳转到文件内容的第一行

使用按键命令G 跳转到文件的最后一行

使用按键命令#G 跳转到文件中的第#行

【在将命令模式转换为末行模式时,

输入:set nu 命令即可显示行号 。输入:set nonu 取消显示行号】

6、复制、粘贴、删除

删除 x或Del键删除光标处的单个字符

dd 删除当前广百所在行,#dd 从光标处开始的#行内容

d^ 删除当前光标之前到行首的所有字符

d$ 删除当前光标处到行尾的所有字符

复制 yy 复制当前行整行内容到剪贴板

#yy 从光标处开始的#行内容到剪贴板

粘贴 p 将剪贴板的内容粘贴到光标之后

P 将剪贴板额内容粘贴到光标之前

7、文件内容查找

查找 / 表示向后查找

? 表示向前查找

选择 n 从上向下选择

N 从下向上选择

8、撤销编辑及保存和退出

u 撤销最近一次的操作

U 撤销当前所做的所有编辑

ZZ 保存当前内容并退出

七、末行模式中的基本操作

1、保存文件及退出VI编辑器

保存 :w

退出 :q

强制退出 :q!

保存并退出 :wq

2、打开文件或读入其他文件内容

打开新文件进行编辑 “:e 新文件”

eg:打开当前用户的宿主目录中的install.log文件进行编辑

:e ~/install.log

在当前文件中输入其他内容 “:r 其他文件”

eg:将/ect/filesystems文件中的内容复制到当前文件夹中

:r /etc/filesystems

3、文件内容替换

: 【替换范围】 sub /旧的内容/新的内容【/g】

% 在整个文件内容中进行查找并替换

n,m 在制定行范围内的文件内容进行替换并查找

/g 可选参数 添加, 对每一行所有的匹配结果都进行替换

不添加,只替换每行中的第一个匹配结果

eg:将当前行中的第一个i替换为I

:sub /i/I

eg: 将10-20行中的initdefault字串符替换为DEFAULT

:10,20 sub/initdefault/DEFAULT/g

eg: 将整个文档中的initdefault字串符替换为bootdefault

:% sub initdefault/bootdefault/g

一、linux应用程序基础

1.命令及程序

命令 通常放置在/bin、/sbin目录中

随操作系统一同安装,命令只在字符界面中运行,多适用于“命令字 选项 参数”的一般格式

应用程序 通常放在/usr/sbin /usr/bin /usr/local/bin /usr/local/sbin等目录中

可能会使用到图形界面,没有固定的执行格式,要另行安装

2.应用程序的组成

/usr/sbin 服务器程序、管理程序文件(管理员才有权限执行)

/usr/bin 普通的可执行程序文件

/etc 配置文件

/var/log 日志文件

/usr/share/doc 关于应用程序的参考文档

/usr/share/man 执行文件及配置文件的man手册页

3.软件包的封装类型

RPM软件包 扩展名为".rpm",使用rpm命令安装

DEB软件包 扩展名为".deb",使用dkpg命令安装

源代码软件包 一般被制作成".tar.gz",".tar.bz2"等格式的压缩包文件,需要使用编译工具

提供安装程序的软件包 直接运行安装文件(install.sh / setup / ./bin )

绿色免安装的软件包 只要将下载回来的文件直接解压或者复制到某个目录中即可使用

二、RPM包管理工具

1.查询【已安装】的RPM软件包信息

-qa 显示当前系统中所有以RPM方式安装的软件列表

-qi 查看软件包的名称、版本、许可协议等详细信息(info)

-ql 显示指定的软件在当前系统中安装的所有目录、文件列表(list)

-qf 查看指定的文件或目录是由哪一个软件包所安装的(file)

-qc 显示指定的软件包在当前系统中安装的配置文件列表(configfiles)

-qd 显示指定的软件包在当前系统中安装的文档文件列表(docfiles)

eg: rpm -qa | wc -l 显示当前系统中所有以RPM方式安装的软件包,并统计软件包的个数

rpm -q dhcp lynx 查看当前系统中是否已安装有dhcp lynx软件包

rpm -qf usr/bin/vim 查看系统中德 vim程序文件是由哪一个软件包安装,并显示该软件包的详细信息

2.查询RPM包文件中的相关信息

-qpi 查看指定软件包的名称、版本、许可协议等详细信息

-qpl 查看该软件包准备要安装的所有目录、文件列表

-qpc 查看该软件包准备要安装的配置文件列表

-qpd 查看该软件包准备要安装的文档文件列表

3.安装、升级、卸载RPM软件包

-i 安装一个新的RPM软件包

-e 卸载指定的软件包

-U 检查并【升级】系统中的某个软件包【若该软件包未安装,则等同于"-i"选项】

-F 检查并【更新】系统中的某个软件包【若未安装,则放弃安装】

--force 强制【安装】某个软件包

--nodeps 在【安装、更新、卸载】某个软件包时,【不检查与其他软件包的依赖关系】

-h 以"#"号显示安装进度

-v 显示软件安装过程的详细信息

4.RPM数据库维护

rpm --rebuilddb/initdb

三、源代码编译安装的基本过程

1.解包

tar zxvf axel-1.0a.tar.gz -C /usr/src

jxvf XXX.tar.bz2

2.配置

cd /usr/src/axel-1.0a

./configure --prefix=/usr/src/zxel

(--prefix 该配置参数用于指定软件包安装的目标文件夹)

3.编译

make

4.安装

make install

【通常情况下可使用make&&make install,&&表示前一个操作执行完后才执行第二个动作】

一、管理用户和组账号

1.概述

用户账号主要包括(超级用户、普通用户、程序用户)

组账号包括基本组(私有组)和附加组(公共组)

UID(用户标识号),root用户固定为0,程序用户默认在1-499之间,普通用户账号默认在500-60000

GID(组标识号),root组账号为固定值0,程序账号默认在1-499之间,普通组账号默认在500-60000

2.用户账号管理

a.相关配置文件:/etc/passwd 保存用户名称、宿主目录、登录shell等基本信息

/etc/shadow 保存用户的账号密码、登录有效期等信息

eg:head -2 /etc/passwd

root:x:0:0:root:/root:/bin/bash

用户账号名称|用户密码字串(x为占位符)|UID|GID|用户全名|宿主目录|登陆shell

head -2 /etc/shadow

bin:*:14374:0:99999:7:::

用户账号名称|MD5加密的字串信息(*或!!表示此用户不能登陆到系统,字段为空表示不需密码即可登陆)|上次修改密码时间(1970年01月01日起到最近一次修改密码的时间)|密码最短有效天数(默认为0,表示不进行限制)|密码最长有效天数(默认为99999,表示不进行限制)| 提前多少天提醒用户密码即将过期|密码过期后多少天内禁用此账号|账号过期时间|保留段

b.useradd--添加用户账号

useradd (选项) 用户名

-u 指定用户的UID号

-g 指定用户的基本组名(GID)

-G 指定用户的附加组名

-d 指定用户的宿主目录

-e 指定用户账户失效时间(YYYY-MM-DD)

-M 不建立使用者目录

-s 指定用户的登陆shell

c.passwd--为用户账号设置密码

-d 清空指定用户的密码,仅使用用户名即可登陆系统

-l 锁定用户账户

-S 查看用户状态

-u 解锁用户账户

d.usermod--修改用户账户属性

-u 修改用户的UID号

-d 修改用户宿主目录

-e 修改用户账户失效时间

-g 修改用户基本组名

-G 修改用户附加组名

-M 不为用户建立并初始化宿主目录

-s 修改指定用户的登陆shell

-l 更改用户账号的登录名

-L 锁定用户账户

-U 解锁用户账户

e.userdel--删除用户账号

userdel 用户名

f.【用户账号的初始配置文件】

较常用的初始配置文件包括:

.bash_logout 文件中的命令将在用户每次退出登陆时执行

.bash_profile 文件做的命令将在用户每次登陆时执行

.bashrc 文件中的命令会在每次加载"/bin/bash"时执行

3.组账号管理

a.组账号文件:/etc/group /etc/gshadow

grep "^root" /etc/group 查看组账号root中包含有哪些用户账号成员

grep "root" /etc/group 查看组账号的用户成员中包含有root

b.groupadd--添加组账号

c.gpasswd--添加删除组成员

gpasswd -a Mike root 将mike用户添加到root组中

gpasswd -d webmaster root 将webmaster用户从root组中删除

gpasswd -M mike,teacher adm 同时将Mike,teacher用户加入到adm组

d.groupdel--删除组账号

4.用户和组账号查询

a.groups--查看某个用户账号所属的组

groups 用户名

b.finger--查询用户账号的详细信息

c.users/w/who--查询当前登陆到主机的用户信息

finger 列出用户登录名、终端、登陆时间及个人信息等

w 列出用户登录名、终端、执行的命令等各种统计信息

who 列出用户登录名、终端、登录时间、来源地点等信息

users 仅列出用户名信息

二、管理文件、目录的权限和归属

1.查看文件的权限及归属

ls -ld /etc/passwd

-rw-r--r-- 1 root root 2035 05-12 02:19 /etc/passwd

访问权限 属主 属组

【-rw-r--r--】 第1个字符表示文件类型(d-目录、b-块设备文件、c-字符设备文件、--普通文件、i-链接文件)

第2-4个字符表示(属主用户)对该文件的访问权限

第5-7个字符表示(属组中的用户)对该文件的访问权限

2.设置文件、目录的权限

【字符形式】 chmod {ugoa}{+—=}{rwx} 文件或目录

【数字形式】 chmod {nnn} 文件或目录

eg: chmod u+x,o-r mkdir

chmod 755 mkdir

3.设置文件、目录的归属

chgrp 只用于修改【属组】信息

chown 属主{:属组} 文件或目录

eg: chown mike mydir

chown :wheel mydir

chown -R /var/ftp/pub 【递归修改】

4.其他附加权限

a.SET位权限

chmod u+s/g+s

SUID 对应的八进制数字是4,SGID对应的八进制数字是2

eg: 4755表示设置SUID权限,6755表示同时设置了SUID和SGID位权限

【添加该权限以后,用户可享有跟该目录或文件属主一样的权限】

【添加SET位权限以后,对应位置的x将变为s】

b.粘滞位权限

chmod -t,+t

数字模式,将"nnnn"中第一个数字改为1或0

【1表示添加粘滞,0表示移除粘滞】

【当设置了粘滞位权限以后,即便对该目录具有写入权限,也不能删除该目录中其它用户创建的文件数据】

【当设置了粘滞位权限以后,其它用户权限处得x将变为t】

权限 文件 目录

r 查看文件内容 查看目录内容(显示子目录、文件列表)

w 修改文件内容 修改目录内容(在目录中新建、移动、删除文件或子目录)

x 执行该文件(程序或脚本) 执行CD命令进入或退出该目录

一、管理磁盘及分区

1、添加磁盘并确认新硬盘

fdisk -l 查看分区情况

2、规划硬盘分区

3、新建主分区和逻辑分区

n为新建分区

p 新建主分区

e 新建逻辑分区

建立完扩展分区以后,使用剩下的所有空间(全部空间分配完毕后,将无法再建立新的主分区)

d 删除分区

t 变更分区类型

【【默认的文件系统类型为EXT3

EXT3的id号为83,SWAP的id号为82,LVM的id号为8e】】

使用w和q指令退出fdisk分区工具

执行partprobe命令重新探测/dev/sdb的磁盘分区变化情况

二、管理文件系统

1、mkfs (创建文件系统) mkfs -t ext3 /dev/sdb1 等同于 mkfs.ext3 /dev/sdb1

mkfs -t 文件系统类型 分区设备

【可以格式化EXT3、FAT32等不同类型的分区】

mkswap 分区设备

【格式化SWAP类型的分区】

2、free 可以查看内存和交换空间的使用情况

swapon 启用新添加的交换分区

swapoff 停用指定的交换分区

3、挂载卸载文件系统

mount {-t 文件系统类型} 存储设备 挂载点

unmount 挂载点 【卸载已挂载到挂载点的文件系统】

4、设置文件自动挂载

修改/etc/fstab文件{vi编辑器打开,在文件末尾添加自动挂载配置}

5、查看磁盘使用情况

df -hT 【h显示更易懂的容量单位 、T显示对应文件系统类型】

三、设置磁盘配额

1、磁盘配额概述

(1)首先确认quota软件包已安装

(2)磁盘配额限制类型:磁盘容量(用户能够使用的数据块{Block}的大小,默认单位为KB)

文件数量(用户能够拥有的文件个数,即i节点{inode})

(3)磁盘配额的限制方法:软限制(默认在7天内允许暂时超过这个限制,但系统会给出警告)

硬限制(达到硬限制值时,系统会给出警告并禁止继续写入数据)

2、设置磁盘配额

使用到-o usrquota,grpquota 选项的mount命令重新挂载指定的分区,以便增加对用户、组配额功能的支持

mount -o usrquota,grpquota 磁盘设备 挂载点

eg: mount -o usrquota,grpquota /dev/sdb1 /mailbox

mount | grep “quota”

chmod 1777 挂载点

3、检测并生成配额文件

quotacheck -augcv

【a.扫描所有文件 u和g. 检测用户和组的配额信息

c.新建配额文件 v.显示命令执行过程中的细节信息 】

4、编译用户和组的配额设置

edquota -u 用户

edquota -g 组名

5、启用配额功能

quotaon -ugv 挂载点

6、验证配额功能

dd if=选定的输入设备文件 of=选定的输出设备文件 bs=读取数据块的大小 count=读取数据块的数量

eg: dd if=/dev/zero of=/mailbox/ddtest.data bs=1M count=4

7、查看磁盘配额使用情况

quota -u 用户名

quota -g 组名

repquota 挂载点 【查看文件系统点配额使用报告】

四、LVM逻辑卷管理

1、PV{物理卷}

pvscan 扫描当前物理卷,并显示相关信息

pvcreat 将分区或硬盘转换为物理卷

pvdisplay 显示物理卷的详细信息

pvmove 将物理卷还原成普通分区或硬盘

2、VG{卷组}

vgscan 扫描当前已建立的卷组

vgcreat 将物理卷组合为卷组

vgdisplay 显示卷组详细信息

vgremove 删除指定卷组

vgextend 扩展卷组磁盘空间

eg:vgcreat web_document /dev/sdb1

vgextend web_document /dev/sdb2

【重新创建卷组web_document,只包含物理卷sdb1,然后通过vgextend命令将sdb2添加到卷组web_document中】

3、LV{逻辑卷}

lvscan 扫描当前系统已建立的逻辑卷

lvcreat 创建新的逻辑卷

lvdisplay 显示逻辑卷的详细信息

lvextend 动态扩展逻辑卷的空间

lvmove 删除系统中的逻辑卷

eg:lvcreat -L 10G -n benet web_document

【在web_document中创建一个容量为10G的逻辑卷,名称设为benet】

lvextend -L +10G /dev/web_document/benet

resize2fs /dev/web_document/benet

【为逻辑卷扩展10G的磁盘空间大小,并使用resize2fs命令重设大小】

eject&&eject -t 弹出光盘驱动,取出光盘后再收回光盘托架

在LVM磁盘管理机制中,在【逻辑卷】中可以创建可动态扩展的文件系统

为linux分区设置磁盘配额的过程,【quota,requota】命令可以用来查看用户的配额使用情况

一、linux的引导流程

1、总流程

开机自检--MBR引导--GRUB菜单--架子啊linux内核--INIT进程初始化

【决定系统初始化过程的关键在于init进程及其配置文件/etc/inittab;

决定系统启动后自动运行哪些程序的关键在于/etc/rc.d/rc脚本】

2、初始化进程及文件

a.init进程

【在引导linux系统的过程中,/sbin/init是内核第一个加载的程序,因此init进程对应的PID号永远为1】

b.inittab配置文件

【inittab文件位于/etc目录中,是init程序的配置文件】

基本格式为: 标记:运行级别:动作类型:程序或脚本

(id:runlevels:action:process)

runlevels:0-关机 1-单用户模式 2-字符界面的多用户模式 3-字符界面的完整多用户模式

4-为分配使用 5-图形界面的多用户模式 6-重启

action:initdefault-系统初始化默认进入的运行级别

sysint-设置系统初始化的操作脚本

ctilaltdel-设置当用户按下Ctrl+Alt+Del组合键后的操作

process--此字段用于指定该行配置所对应的实际操作,可以是具体的命令、脚本程序等

eg:grep ":initdefault" /etc/inittab

id:5:initdefault:

vi /etc/inittab

id:3:initdefault:

eg: grep ":ctrlaltdel" /etc/inittab

ca:ctrlaltdel:/sbin/shutdown -t 3 -r now

查看inittab文件中Ctrl+Alt+Del热键所对应的操作【在该行记录前加#表示关闭该功能】

c. rc.sysinit脚本文件

【是init进程所调用的系统初始化脚本,位于/etc/rc.d/rc.sysinit

该脚本主要完成包括设置网络、主机名、加载文件系统、设置时钟等一系列初始化工作】

d. rc脚本文件

【由init进程进行调用,文件位于/etc/rc.d/rc

rc脚本通过指定不同的级别参数加载及终止不同的系统服务,进入到相应的系统运行级别】

【/etc/rc.d/rcX.d 所链接的原始服务脚本文件位于/etc/rc.d/init.d目录中

可以直接执行脚本文件或者通过service服务控制工具进行管理(start.stop.status.restart.reload)】

e. rc.local脚本

【rc.local是一个额外的启动控制脚本,位于/etc/rc.d/local

通常由rc脚本在最后加载,主要是为管理员自行设置启动命令提供一种途径】

3、运行级别控制

a. 查看及切换运行级别

runlevel 查看

init 0-6

b.设置服务在不同运行级别的状态

【1】使用ntsysv配置工具

ntsysv --level 35

【2】使用chkconfig配置工具

chkconfig --list 服务名 查看服务启动状态

chkconfig --level 2345 服务名 off/on 设置服务在XX运行级别自启动/关闭

二、进程管理

1、查看进程

a. ps--查看静态的进程统计信息

ps aux 【a-显示当前终端下的所有进程;u-使用以用户为主的格式输出进程信息;x-显示当前用户在所有终端下的进程信息】

ps -elf 【e-显示系统内的所有进程;l-以长格式显示进程信息;f-使用完整的full格式显示进程信息】

eg:ps aux | grep bash 查看所有进程信息,过滤出包含"bash"的进程信息

b. top--查看进程状态信息

【按P可对cpu占用情况进行排序;M--内存;N--启动时间;h--获得top程序在线帮助;q--退出top程序】

c. pgrep--查询特定进程信息

eg:pgrep "init"

pgrep -l -U teacher -t tty1

d. pstree--查看进程树

【通常情况下只显示进程名称,结合-p选项同时显示PID号;结合-u可以列出用户名;结合-a可以列出完整的命令信息】

eg: pstree -ap teacher

2、控制进程

a.启动进程: 手动启动进程 【直接输入命令或者可执行程序的路径,在执行的命令后边添加&表示后台启动】

调度启动进程 【通过at、crontab命令制定任务计划】

b.改变进程运行方式: Ctrl+Z 将当前进程挂起

jobs -l 查看后台的进程

fg 进程号 将进程恢复到前台运行

c.终止进程: (kill +进程号

killall +进程名

pkill -U 指定用户 -t 指定终端

三、计划任务管理

1、一次性任务计划

service atd status

service atd start

eg: at 14:15 2010-05-12

at> pgrep -U root | wc -l > /tmp/ps.root

at> <EOT>

设置完成后按C trl+D提交

查询当前系统中的at计划任务表 atq

删除指定编号的任务计划 atrm 2(任务计划编号)

2、周期性任务计划

service crond status

a. /etc/crontab 系统任务配置文件

/var/spool/cron 用户cron任务配置存放的目录

3、使用crotab命令管理用户的任务计划

-e 编辑任务计划列表

-u 指定任务计划属于哪一个用户

-l 列表显示任务计划

-r 删除任务计划

4、编辑任务计划

crontab -e 打开任务计划编辑界面

格式: 分钟 小时 日期 月份 星期 执行的命令

0-59 0-23 1-31 1-12 0-7 普通命令/自己编写的脚本

- 表示一个连续的时间范围

, 表示不连续的范围

/ 可以用来指定间隔频率(如*/3表示每隔三天)

crontab -l 查看任务计划列表

【任务计划列表】crontab -e

50 7 * * * /sbin/service sshd start 每天早上7:50自动开启sshd服务,22:30自动关闭该服务

50 22 * * * /sbin/service sshd stop

0 * */5 * * /bin/rm -rf /var5/ftp/pub/* 每隔五天清空一次FTP服务器公共目录/var/ftp/pub中的数据

30 7 * * 6 /sbin/service httpd restart 每周六的7:30自动重启系统中的httpd服务

30 17 * * 1,3,5 /bin/tar jcvf httpd.tar.bz2 /etc/httpd 每周一三五下午的17:30,使用tar命令自动备份/etc/httpd目录

一、shell环境概述

1、shell环境概述

a.常见的shell程序:Bsh Csh Ksh Bash Zsh

b.shell环境配置文件/etc/shalls

c.临时切换shell环境:【直接输入其他shell环境

执行"exit"或"Ctrl+D"组合键返回原来的环境】

d.更该用户自己的登陆shell:

【用户的登陆shell信息记录在/etc/passwd中,使用chsh命令进行修改,用户登陆以后直接输入新的shell环境,下次登录时生效】

e.root用户个更改其他用户的登陆shell

【使用usermod命令修改/etc/passwd文件的登陆shell】

2、bash的常用功能

a.命令历史

使用历史命令:【在命令行中输入"!",再输入已经执行过的命令的开头几个字母,

回车以后将执行最近一次与之匹配的命令,输出结果中的第一行表示执行的历史命令】

查看历史命令:【history查看,!加命令序号回车以后再次执行该命令】

设置记录历史命令的条数:【(修改所有用户的)编辑/etc/profile中的HISTSIZE选项

(修改特定用户的)编辑用户宿主目录中的".bash_profile",添加类似于"export HISTSIZE=50"形式的配置记录】

清除历史命令:history -c

b.命令别名

查看已设置的别名:【直接执行alias】

设置命令别名:【alias别名='实际命令', eg: alias dir='/bin/ls -ld --color=tty'】

取消已设置的别名:【使用unalias (-a) 命令别名】

{对于用户经常使用的命令别名,应将相应的别名设置命令添加到宿主目录中的".bashrc"文件中}

c.标准输入输出和重定向

标准输入:默认的设备是键盘,文件编号为0,命令从标准输入文件中读取在执行过程中须要的输入数据

标准输出:默认的设备是显示器,文件编号为1,命令将执行后的输出结果发送到标准输出文件

标准错误:默认的设备是显示器,文件编号为2,命令将执行后的输出结果发送到错误的信息发送到标准错误文件】

标准输出重定向:【指:将命令的输出结果保存到指定文件中,使用">"和">>",分别用于覆盖和追加文件】

标准输入重定向:【指:将命令中接收输入的途径由默认的键盘重定向为指定的文件,使用"<"重定向符号】

eg: vi pw.txt (设置初始密码串内容)

passwd --stdin jerry < pw.txt

【在文件“pw.txt”中保存初始密码“123456”,并使用该文件为jerry用户设置密码】

标准错误重定向:【指将执行命令过程中出现的错误重新定向保存到指定文件中,而不是直接显示到屏幕上,使用"2>"操作符】

eg: help ls 2> error.log

d.管道操作 【管道输出符号"|"】

eg: grep -v ^# /etc/inittab | grep -v ^$ > inittab.txt

free -m | head -2

free -m | grep "Mem" | awk '{print $2,$4}'

(查看当前系统的总内存空间、剩余可用内存空间,去除其他无效信息)

二、shell变量应用

1、用户自定义变量

a.定义新的变量

变量名=变量值 eg:DAY=Sunday

b.查看和引用变量的值

eg: echo $DAY 正确引用变量值

$DAY是的${DAY}缩写

echo ${DAY}MorningBus 当变量名称容易和紧跟其后的其他字符混淆时,需要使用{}将其包围起来,否则将无法确定正确的变量名称

c.为变量赋值的常用方法

双引号("): 允许在双引号范围内使用"$"符号来引用其他变量的值

单引号('):不允许在单引号范围内引用的其他变量的值,"$"符号或者其他任何符号将作为普通字符看待

反撇号(`):允许执行特定命令的输出结果赋给变量(命令替换),反撇号内包含的字串必须是能够执行的命令,执行后会输出结果替换该命令字串

read命令: 使用bash的内置命令read来给变量赋值

【read将从标准输入读入一行内容,并以空格为分隔符,将读入的字段分别赋值给指定列表中的变量】

【read命令可以结合-p选项来设置提示信息,用于告知用户应该输入的内容等相关信息】

eg: DAY=Sunday DAY=Sunday UserNum=`w | grep "tty" | wc -l` TODAY="Today is $DAY" TODAY='Today is $DAY' echo $UserNum echo $TODAY echo $TODAY

Today is Sunday Today is $DAY

read Helo read G1 G2

Good morning, teacher! Good morning, teacher

echo $Helo echo $G1 echo $G2

Good morning, teacher! Good morning, teacher

read -p "Please input a number:" YourNum

Please input a nmber: 234

d.设置变量得作用范围

【可以使用export命令将指定的变量设置为全局变量,export可以同时定义多个变量名,中间以空格分隔】

eg: export MONTH=May YEAR=2011

e.清除自定义变量

【unset DAY MONTH YEAR】

f.数值变量的运算

【expr 变量1 运算符 变量2 ...】

【+加 -减 \*乘 /除 %余】

{x=34 y=22 expr $x+$y}

2、环境变量

查看环境变量:【通过不带任何选项的set命令查看】

eg: echo $PATH

PATH="/opt/bin:$PATH"

(确认当前命令搜索路径,并将/opt/bin目录添加到现有的搜索路径中去)

环境变量配置文件: 全局配置文件 (/etc/profile文件)

用户配置文件 (用户宿主目录中的".bash_profile")

3、位置变量

【采用$n的格式,n是位置参数的序号(1-9),$0代表的所执行命令或脚本程序的名称】

eg: service network restart {service脚本程序对应的第一个位置参数$1为network,第二个位置参数$2为restart}

4、预定义变量

较常用的shell预定义变量包括:$# 命令行中位置参数的数量

$* 所有位置参数的内容

$? 命令执行后返回的状态(0表示执行正确,非0表示执行错误)

$$ 当前进程的进程号

$! 后台运行的最后一个进程的进程号

$0 当前执行的进程的进程名

三、编写并执行shell脚本

1、编写shell脚本

a.建立包含可执行语句的文本文件

【内容包括:运行环境变量(#!/bin/bash)、注释行(除环境变量以外以#开头的行)、可执行语句】

b.为脚本添加可执行权限

【chmod a+x 脚本名】

2、执行shell脚本

a.直接执行带x权限的脚本文件 eg: ./reboot.sh

b.使用shell解释器程序执行脚本 bash reboot.sh

c.使用"."命令执行脚本 . reboot.sh

使用ls查看并不存在的/etc/password文件和/etc/passwd文件的属性时,输出结果将同时包含标准输出和错误输出。{使用&>操作符将两种输出结果重定向到同一个文件夹中}

ls -l /etc/password /etc/passwd > std.txt 2> error.log

cat std.txt 【输出】 (/etc/passwd文件目录的属性)

cat error.log 【输出】 (ls: /etc/password:没有那个文件或目录)

ls -l /etc/password /etc/passwd &> out.log

cat out.log 【输出】 (/etc/passwd文件目录的属性;

ls: /etc/password:没有那个文件或目录)

eg: grep "bash" /etc/passwd | grep "^ha" | cut -d ":" -f 1,7

(找出系统中使用bash作为登陆shell,名称以ha开头的用户账户,只显示处用户名及登陆shell两个字段)

cut命令用于分割通过管道输入的每一行内容,结合-d选项使用":"作为分隔符,结合-f选项指定只显示处分割处得1,7字段区域

free -m | head -2

free -m | grep "Mem" | awk '{print $2,$4}'

(查看当前系统的总内存空间、剩余可用内存空间,去除其他无效信息)

free -m 用于以MB为单位显示信息,awk命令用于以空格或制表位作为分割,输出指定区域的字段数据

一、使用if条件语句

1、条件测试操作

“test 条件表达式” 或 【条件表达式】

a.测试文件状态

-d 测试文件是否为目录

-e 测试文件或目录是否存在

-f 测试是否为文件

-r 测试当前用户是否有权限读取

-w 测试当前用户是否有权限写入

-x 测试当前用户是否可执行该文件

-L 测试是否为符号链接文件

【通过$?可以获得命令状态返回值,为0则条件成立】

b.整数值比较

-eq 第一个数等于第二个数

-ne 不等于

-gt 大于

-lt 小于

-le 小于或等于

-ge 大于或等于

【通常用于测试磁盘使用率,用户登陆数量是否超标以及以及用于控制脚本语句的的循环次数等】

eg: 【 `who | wc -l` -le 10 】 && echo "YES"

测试当前登录到系统中的用户数量是否小于等于10,是则输出YES

c.字串符比较

【可以用于检查用户输入,判断用户输入的选项是否与指定的变量内容相匹配

=匹配 !=不匹配 -z用于检查字符串是否为空】

eg: read -p "Location: " FilePath

Location: /etc/inittab

【 $FilePath = "/etc/inittab" 】&& echo "YES"

提示用户输入一个文件路径,并判断是否为/etc/inittab,如果是则显示YES

d.逻辑测试

【指同时使用两种或多种条件表达式之间的关系】

&& 逻辑与 前后两种表达式都成立时才为真,否则为假。

使用test命令时可改为-a

|| 逻辑或 至少有一个条件成立时整个测试结果为真,否则为假。

使用test命令时可改为-o

! 逻辑否 当指定的条件表达式不成立时,整个命令测试结果为真。

eg: 【 -f /etc/rc.d/rc.local 】|| 【 -f /etc/init.d/rc.local 】 && echo "YES"

只要/etc/init.d/rc.local或/etc/rc.d/rc.local中有一个是文件,则显示YES,否则无输出

【 !-x "/etc/profile" 】&& echo "No x mode"

判断/etc/profile是否有可执行权限,若没有,则输出"No x mode"

2、if的语句结构

a.单分支的if语句

if 条件测试命令 首先判断if条件测试命令返回值是否为0(条件成立),

then 如果是,则执行then后边的语句序列,

命令序列 直到fi为止表示结束

fi 如果不是,则直接执行fi后面的语句

b.双分支的if语句

if 条件测试命令 首先判断if条件测试命令返回值是否为0(条件成立)

then 如果是,则执行then后边的语句序列1

命令序列1 然后跳转至fi结束判断

else 如果if条件测试命令返回值为0(条件不成立)

命令序列2 则执行else后边的命令序列2

fi 一直到fi表示结束

c.多分支的if语句

if 条件测试命令1

then

命令序列1

elif 条件测试命令2

then

命令序列2

else

命令序列3

fi

【会依次对多个条件测试,一旦条件不成立,则退出选择结构,否则执行相应的命令序列后再跳转至fi,结束判断】

二、使用for循环语句

1、for语句的结构

for 变量名 in 取值列表 in关键字定义了一个取值列表,

do for语句依次执行时首先将第1个值赋值给变量,然后执行do后边的命令序列

命令序列 然后将第二个值赋值给变量,再次执行do后边的命令序列

done 依次循环,直至取值列表里的所有值都用完,然后跳至done语句,表示循环结束

【可以用于对一些特殊列表值的处理(如过滤搜索到得文件)】

三、使用while语句循环

1、while语句的结构

while 条件测试命令 首先通过while判断条件测试命令返回的结果是否问为0(条件为真),

do 如果是,则执行do后边的命令序列;然后返回到while再次执行条件测试并返回状态值

命令序列 如果条件仍然成立,则继续执行do后边的命令序列;返回到while继续循环

done 直到所测试的条件不成立时,跳转到done语句,表示结束循环

【使用while语句循环时,有两个特殊的条件测试返回值true和false,使用true作为测试条件时,条件永远成立,循环体内的语句将无限次被执行下去,使用false时,则条件永远不成立,循环体内的的语句将被不会执行】

四、其他控制语句

1、case语句

case 变量值 in 【case行尾必须为单词in】

模式1) 【每一模式必须以右括号")"结束】

命令序列1 【;;表示命令序列结束】

;;

模式2) 【匹配模式中可以使用方括号表示一个连续的范围,如:[0-9],使用竖杠符号表示或,如:A|B】

命令序列2

;;

......

*) 【如果一直找不到与之相匹配的值,则执行最后一个模式"*")后的命令序列】

默认执行的命令序列

esac 【直到遇到esac后分支结束】

2、until循环

until 条件测试命令 【与while循环语句的机构非常类似,同样是根据特定的条件决定是否执行循环体内的命令序列】

do 【若测试条件不成立时则执行循环,一直到该测试条件成立时为止,即退出循环】

命令序列

done

3、shift语句

【实际上是bash中的一个特殊内部命令,更多地应用在shell脚本程序中】

【执行shift命令后,位置变量($1-$9)中的命令参数会依次向左传递】

eg:当前脚本程序的位置变量如下: $1=file1、$2=file2、$3=file3、$4=file4

执行一次shift操作命令以后: $1=file2、$2=file3、$3=file4

再次执行: $1=file3、$2=file4

4、循环控制语句

{在执行for/while/until循环语句以及case分支语句的过程中,当满足特定条件时可能需要中断循环体的执行,或者需要跳转到开头重新判断测试条件,此时,可使用break和continue语句对执行流程进行控制}

break命令

【中断,即跳出当前所在的循环体,但并不是退出程序】

continue命令

【继续,用于暂停本次循环,跳转至循环语句的顶部程序测试条件。(执行过程中,continue后的命令序列将被忽略)】

五、shell函数的应用

1、函数的定义和调用

function 函数名 { “或者” 函数名() {

命令序列 命令序列

} }

【调用函数时直接执行函数名即可,不需要加小括号】

eg: help() {

echo "Useage: "$0" start|stop"

}

case $1 in

*)

help

2、函数的参数传递

eg: adder() {

echo 'expr $1 + $2'

}

adder 12 22

adder 55 68

在linux很多脚本文件都使用了case分支语句,其中/etc/rc.c/init.d下的各种系统服务脚本最为典型。

eg:在执行crond服务脚本的case分支语句结构中,当用户执行/etc/rc.d/init.d/crond start时,$1的值就是start,因此脚本程序就会执行start)模式后边的命令序列,用于启动服务

一、日志分析及管理

1.主要日志文件

a.日志数据的类型:内核及系统日志(主配置文件/etc/syslog.conf,决定将内核消息及各种系统程序消息巨鹿到什么位置)

用户日志(用于记录linux用户登陆及退出的相关信息)

程序日志(有些程序会见了独立的日志文件,用于记录本程序运行过程中的各种事件信息)

b.在linux操作系统中,各种日志数据文件通常保存在/var/log目录中

c./var/log目录中的各种日志文件及子目录

/var/log/message 记录linux内核消息的各种应用程序的公共日志信息(包括启动、IO错误、网络错误、程序故障等)

/var/log/cron 记录crond计划任务所产生的事件信息

/var/log/dmesg 记录linux内核在引导过程中的各种事件信息

/var/log/maillog 记录进入和发出系统的电子邮件活动

/var/log/lastlog 最近几次成功登陆事件和最后一次不成功登录事件

/var/log/rpmpkgs 记录系统中安装的各rpm包列表信息

/var/log/secure 记录每个登录认证过程中的事件信息

/var/log/wtmp 记录每个用户登陆、注销及系统启动和停机事件

/var/log/utmp 记录当前登陆的每个用户的详细信息

2、日志文件分析

a.内核及系统日志

主要程序:klogd、syslogd

syslog服务所使用的配置文件为/etc/syslog.conf

通常情况下,内核及大多数系统消息都被记录到/var/log/messages中

日志警告级别

0 EMERG 紧急 4 WARNING 提醒

1 ALERT 警告 5 NOTICE 注意

2 CIRT 严重 6 INFO 一般信息

3 ERR 错误 7 DEBUG 调试

【数字等级越小,优先级越高,消息越重要】

公共日志文件的格式

四个字段: 时间标签(消息发出的日期和时间)

主机名(生成消息的计算机名称)

子系统名称(发出消息的应用程序名称)

消息(消息的具体内容)

b.用户日志

who命令

【用于查询utmp文件并报告当前登录的每个用户的信息】

【系统管理员可以查看当前系统存在哪些不合法用户,从而进行审计和出理】

【默认输出包括:用户名、终端类型、登录日期及远程主机】

w命令

【用于查询utmp文件并显示当前登陆的每个用户及其所运行的进程信息】

users命令

【用单独的一行打印出当前登陆的用户,每个显示的用户名对应一个登录会话】

last命令

【用于查询wtmp文件,显示出自从该文件被创建以来的所有用户记录,最近登陆的用户记录将显示在最前边】

ac命令

【查询wtmp文件中的用户登陆和退出情况,报告用户连接的总时间(小时),

使用用户名作为参数时,可结合-d,按每天进行统计;未使用用户名时,结合-p选项进行分别统计】

eg: ac -d root ac -p

c.程序日志

【经常检查信息日志、网络连接日志、文件传输日志以及用户登陆日志记录等

要注意是否有不合理的登录时间或操作记录】

3.日志管理策略

a.管理策略:日志备份和归档

延长日志保存期限

控制日志访问权限

集中管理日志(使用集中的日志服务器管理各服务器发送的日志记录)

eg:

设置日志服务器A

vi /etc/sysconfig/syslog

SYSLOG_OPTION="-r -x -m 0"

service syslog restart

【-r允许接收其他主机发送过来的日志记录;-x不进行DNS域名解析;-m记录日志时的时间标记间隔(设置为0表示禁用该功能)】

设置客户机B

vi /etc/syslog.conf

cron.* @服服务器地址

service syslog restart

二、系统启动类故障

1、MBR扇区故障

a.备份MBR扇区数据

mkdir /backup

mount /dev/sdb1 /backup

dd if=/dev/sda of=/backup/sda.mbr.bak bs=512 count=1

【使用dd命令将第一块硬盘的MBR扇区备份到第二块硬盘的sdb1分区中(挂载到/backup目录中)】

b.从备份文件中恢复MBR扇区

1)当出现安装向导的boot:提示符时,输入linux rescue ,进入急救模式;

2)【当出现是否初始化磁盘的警告窗口时选择NO,以免对硬盘数据造成进一步损坏】;

3)最后进入"sh-3.1#"提示符的Bash Shell环境

mkdir /aa

mount /dev/sdb1 /aa

dd if=/aa/sda.mbr.bak of=/dev/sda bs=512 count=1;

4)取出光盘,重启主机。

2、GRUB引导故障

【可以通过启动菜单的方式选择进入不同的操作系统

当/boot/grub/grub.conf配置文件丢失或关键配置出现错误,主机启动时可能只会出现grub>提示符】

a.在grub环境中手动输入引导命令启动linux系统;

grub> root (包含内核定的那个引导文件的/boot分区所在的位置)

grub> kernel (内核文件所在的位置)

grub> initrd (指定启动内核所使用的临时系统镜像文件所在的位置)

grub> boot

登陆进入系统后,找到配置文件/etc/grub/grub.conf,并进行修复

b.进入急救模式

chroot /mnt/sysimage 切换到待修复的linux系统根环境

mount

vi /boot/grub/grub.conf 重建grub.conf文件

exit 退出chroot模式

exit 退出sh-3.1环境,系统自动重启

3、/etc/inittab文件丢失

【文件丢失以后,启动时会出现:INIT: No inittab file found的错误提示信息】

a.从备份文件中恢复

b.急救模式修复

1)开机按F2进入BIOS界面进行光盘引导

2)chroot /mnt/sysimage

mount /dev/hdc /media/cdrom

rpm -ivh --replacepkgs /media/cdrom/Server/initscripts-8.45.14.EL.i386.rpm

【从光盘中重新安装initscripts软件包】

3)重启系统

4、/etc/fastable文件丢失

【文件决定了系统在启动后如何加载各分区,若这些分区无法挂载,系统也将无法成功启动】

1)在急救模式中扫描逻辑卷组 lvm vgscan

2)激活找到的卷组,以便找到根分区设备 lvm vgchange -ay 找到的逻辑卷

3)新建挂载点

4)挂载根分区(卷组中活跃的卷)

5)修复fastable文件

5、修改root以后密码

a.单用户模式

1)重启主机,在GRUB菜单按e进入编辑模式

2)定位到以kernel开头的行,按e在行尾添加single/s/1启动参数,表示进入单用户模式

3)回车确认后,按b引导进入单用户模式,

4)直接执行passwd root 更改root用户密码

b.通过急救模式重设root用户的密码

1)使用安装光盘进入急救模式的shell环境

2)chroot /mnt/sysimage

3)passwd root

三、软件包类故障排除

1、RPM数据库损坏

rm -rf /var/lib/rpm/_db.00* 清除损坏的rpm数据文件

rpm --rebuilddb 重建数据库信息

2、缺少*.so类文件

【在通过源码编译的方式安装软件包时,程序的可执行文件、函数库、配置文件等默认会安装到/usr/local目录下相应的位置】

【*.so 动态链接库文件】

【配置文件/etc/ld.so.conf记录了动态链接库的默认搜索路径

当需要添加新的库文件搜索路径时,则在配置文件中进行相应的修改,并执行ldconfig命令重新读取配置信息】

注:如果提示缺少*.so文件时,首先使用find命令查找系统中是否存在对应的文件,若不存在则表示提供该链接库的依赖软件并没有安装,需先获取相应的软件安装包才行。已存在.so文件的则可以通过添加库文件搜索路径的方式解决

四、文件系统、磁盘类故障

1、修复文件系统

【当/dev/sdb1分区的超级快出现错误时,输入root用户密码会进入一个历史的shell环境,

fdisk -yt ext3 /dev/sdb1 (-y对发现的问题字段回答yes)

exit (退出后自动重启)】

2、磁盘资源耗尽

【虽然有大量磁盘空间却无法创建新的文件】

【df -ht 磁盘分区 查看磁盘空间】

【df -i 磁盘分区 查看磁盘节点数】

【rm -rf `find /data -empty -a -type f` 查找目录中的空文件并将其移除】

3、无法卸载已挂载的设备

【fuser目录用于找出正在使用某个设备或文件目录的用户进程等相关信息

添加-m选项可以指定相应的文件或目录;

-v显示详细信息

-k强制关闭正在使用该文件或目录的进程】

eg:fuser -mv /media/cdrom

fuser -k /media/cdrom

4、检测硬盘坏道

【badblocks -sv 磁盘分区】

用于检查磁盘是否出现坏道,-s显示进度信息,-v显示详情

【mkfs -t ext3 -c 磁盘分区 | grep "bad"】

使用mkfs格式化磁盘分区,并结合-c选项进行坏块检测

五、查看系统性能状态

1、查看CPU负载

使用uptime命令

【查看最近1、5、15分钟内CPU负责处理的平均线程数】

查看/proc/loadavg文件

【查看从系统启动以后到当前时刻的累积CPU负载情况,还可显示最近运行的进程的PID号】

2、查看内存使用情况

使用vmstat命令 【虚拟内存】

使用free命令 【物理内存】

3、磁盘I/O性能监控

使用iostat命令查看

【rpm -ivh /media/cdrom/Server/sysstat-7.0.0-3.e15.i386.rpm 安装该命令工具

iostat -dkt 5 -d只输出磁盘数据;-k.-m以KB/MB为单位输出统计信息;-t可输出时间,加数字指定的刷新时间间隔(s)】

使用mpstat命令工具

【用于统计进程负载,可以辅助管理员对主机中的进程状况进行了解】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息