Linux内核标志
X 主版本号
yy 次版本号 次版本号偶数代表是稳定版本如:2.6.26 奇数代表是开放版本如:2.5.26
zz 修订版本号
硬盘描述
Ide接口硬盘:hd
SCSI接口硬盘:sd
例如:IDE硬盘为hda表示系统第一块硬盘,sdb表示系统第二块硬盘。
分区描述
一个硬盘只有四个主分区,因此主分区和扩展分区序号是1-4,而逻辑分区号有5开始排。
例如:hda1 表示系统第一块硬盘第一个主分区。1-4
sdb5 表示系统第二块硬盘第一个逻辑分区。5-n
ext3 表示第3代扩展文件系统。
swap 表示交换文件系统。 大小一般是物理内存的1.5-2倍。
/ 表示系统根目录。
/boot 存放启动系统文件,包含内核,启动菜单配置文件,一般划分独立/boot分区。
/bin 存放系统最基本的用户命令,普通用户都有权限执行。
/dev 存放系统的硬盘,键盘鼠标光驱和各种设备文件。
/etc 存放系统及各种程序的配置文件,配置文件较多的程序会在etc下建立独立的子目录。
/home 存放所有普通系统用户的默认工作文件夹。 (可划分独立分区)
/root 改目录是系统管理员root的宿主目录,默认情况下不在/home目录下,而在根目录。
/sbin 存放系统中最基本的管理命令,一般管理员用户才有权限执行。
/usr 存放其他的用户应用程序,通常划分很多子目录,用于存放不同类型的应用程序。
/var 存放系统中经常需要变化的一些文件,如系统日志文件,用户邮箱目录。 (可划分独立分区)
/tmp 存放系统运行过程中使用的临时文件。
# 表示系统管理员root登录。
$ 表示普通用户登录。
查看内核版本
uname -r
查看Cpu信息
cat /proc/cpuinfo
查看内存信息
cat /proc/meminfo
查看主机名
hostname
查看Ip地址
ifconfig eth0
关机
shutdown -h now init 0 poweroff
重启
shutdown -r now init 6 reboot
延迟关机
shutdown -r +15 'the system will be rebooted !!'
获得命令帮助
使用help命令 使用--help选项 使用man手册页
help pwd ls --help man ls
管道符
| 用于前面命令输出的结果作为后面命令的操作对象。
例如:man ls | col -b > ls.txt 表示查看ls 手册,过滤文本中的一些特殊控制字符,输出保存到ls.txt文件中
重定向输出用大于号
〉 前面命令成功执行后将结果输出保存到〉后面指定的文件中。
查看当前工作目录
pwd
切换工作目录
cd / 切换到根目录
绝对路径:这种方式以根目录 / 作为起点。/root/
相对路径:这种方式一般以当前工作目录作为起点, ..表示上一级目录
列表显示目录内容
ls -l长格式显示文件目录 -a显示所有子目录和文件信息 .表示隐藏目录文件 -A和a一样只是不显示隐藏文件 -d显示目录本身的属性
-h以K M单位显示需要和-l结合使用 -R以递归的方式显示指定目录和子目录,--color以颜色区分不同的文件,蓝色表示目录,白色表示一
搬文件,绿色表示可执行文件, 黄色表示设备文件,红色表示压缩文件,青浅色表示链接文件。
统计目录及文件的空间占用情况
du -a统计磁盘空间占用时包括所有目录和文件 -h以人性化方式显示统计结果 -s只统计每个参数所占空间大小,不是统计每个子目录文
件大小。 du -sh /var/log/ 统计当前目录所占空间大小。 du -ha /boot/统计当前目录中所有文件,子目录各自占有空间大小。
创建新的目录
mkdir
-p 创建多个连续目录
创建空文件
touch
创建链接
ln -s 创建软链接 ln -s /etc/passwd 到/root/下 ln创建一个硬链接 ln /etc/passwd 到 /root/下。
复制文件或目录
cp -f强制复制, -i提醒复制, -p复制时保持源文件的权限, -r复制目录时表示复制所有子目录和文件。
删除文件或目录
rm -f直接删除, -i提醒删除,-r删除目录时表示所以子文件或目录。
移动文件和目录或重命名
mv
查找文件并显示所在的位置
which 例如:which ls
查找文件或目录
find [查找范围] [查找条件表达式] 按名称查找:-name 按文件大小查找 -size 按文件属主查找-user 按文件类型查找-type普通
文件f,目录d,块设备文件b,字符文件c。
显示并连接文件的内容
cat
cat /etc/passwd
分页查看文件内容
more和less
more /etc/passwd ls -lh /etc/*.conf | more
less /etc/passwd
查看文件开头或末尾的部分内容
head和tail head -4 /etc/passwd tail -4 /etc/passwd 显示后四行
tail -f /var/log/messages 跟踪文件尾部动态更新。
统计文件内容中的单词数量
wc -c 统计文件内容中的字节数,-l统计文件内容的行数,-w统计文件内容中的单词个数。
检索,过滤文件内容
grep -i查找时忽略大小写,-v反转查找,即输出与查找条件不相符的行。
grep ”root“ /etc/passwd 查找root关键字, grep -v "root" /etc/passwd 忽略root字符。
使用压缩和解压缩
gzip和gunzip 压缩gzip 或-9 解压缩 -d
bzip2和bunzip2 压缩gzip 或-9 解压缩 -d
使用tar归档和释放工具
-c 创建.tar格式的包文件,-C大写解包时指定释放的目标文件夹,-f表示使用归档文件,-j调用bzip2程序进行压缩或解压缩,-p打包时
保留文件及目录的权限,-P打包时文件及目录的绝对路径,-t列表查看包内的文件,-v输出详细信息,-x解开.tar格式的文件包,
-z调用gzip程序进行压缩或解压。
使用vi文本编辑器
命令模式:删除,复制,粘贴。 dd删除 yy复制 p粘贴 gg跳到第一行 G调到最后一行 6G调到6行
输入模式:可以对文本文件进行修改添加。
末行模式:vi编辑环境,保持文件,退出编辑器。:set nu显示行号,:w /root/file另存为 :q!不保存退出 :wq :x保存退出
打开新文件或读入其他文件内容
:e ~/etc/passwd
在当前文件中读入其他文件内容
:r /etc/passwd
替换文件内容
:% sub /benet/accp/g 将Benet替换成ACCP
RPM包管理工具
rpm -q 查看已知名称的软件包是否已经安装。
-qa显示当前系统中以rpm方式安装的所有软件。
-qi查看指定软件的详细信息。
-ql显示指定的软件包在当前系统中安装的所有目录,文件列表。
-qf查看指定的文件或目录是由哪个软件包所安装的。
-qd显示软件包安装的安装文档文件。
-qc显示软件包安装的配置文件。
查询rpm未安装包的文件信息
rpm -qpi 显示安装包的详细信息。
-qpl查看该安装包准备要安装的所有目标目录,文件列表。
安装,升级,卸载,rpm软件包。
rpm -i 在当前系统安装
-e 卸载当前软件
-U 检查升级安装
-F 更新没安装就放弃安装
-h 在安装时以#表示安装进度
-v 显示安装时的详细信息。
在软件包后面加 --force 强制安装 rpm -ivh linuxqq.rpm --force --nodeps
在软件后面加--nodeps 在安装升级卸载,不检查依赖关系
使用源码编译安装
1 tar 解包释放到指定目录 tar zfx qq.tar.gz -C /指定目录
2 ./configuer --prefix=/指定路径 配置安装 ./configuer --prefix=/配置安装路径
3 make 进行编译 make编译
4 make install 安装 或者make && make install编译安装一起进行。 make install 安装
patch -p1 〈 / .diff 打补丁patch是专用于应用.diff格式补丁文件的命令程序。
管理用户组账号
用户账号文件分别是/etc/passwd 和 /etc/shadow 前者用于保存用户名称,宿主目录,登录shell等基本信息,后者用于保存用户的密码,
账号有效期等信息。
useradd 添加用户
-u 指定用户的UID号,
-d 指定用户的宿主目录位置,默认在/home
-e 指定用户的账号失效时间,可有这样的yyyy-mm-dd日期格式
-g 指定用户的基本组名(或用Gid号)
-G 指定用户的附加组名(或用Gid号)
-M 不建立宿主目录,
-s 指定用户的登录shell
例如:useradd -d /ai -g benet -G root ai 创建一个ai用户基本组是Benet附加组是root宿主目录是/ai
为用户设置密码
passwd -l ai 锁定用户ai
passwd -S ai 查看锁定的账号状态
passwd -u ai 解锁账号
passwd -d ai 空密码登录
修改用户账号属性
usermod
-u 修改用户uid号
-d 修改用户宿主目录
-e 修改指定用户的账号失效时间,可有这样的yyyy-mm-dd日期格式
-g 修改指定用户的基本组名(或用Gid号)
-G 修改指定用户的附加组名(或用Gid号)
-M 不为用户建立并初始化宿主目录
-s 不指定用户登录shell
-l 更改用户账号的登录名
-L 锁定用户账号
-U 解锁用户账号
删除用户账号
userdel
-r 同时删除宿主目录 userdel -r ai
组账号的管理
组账号文件 /etc/group/和/etc/gshadow 前者用于保存组账号名称gid号,组成员等基本信息,后者保持组账号的加密字串等信息。
grep “^root” /etc/group 查root组包含哪些用户
grep “root” /etc/group 查哪些组包含root用户
创建,添加,修改组账号
groupadd ai 创建一个组
-g 可以指定gid号
添加组员,删除组员
gpasswd -a ai root 添加ai到root组
gpasswd -d ai root 在root组删除ai用户
gpasswd -M 可以指定所以组成员
删除组
groupdel ai 删除ai组
查询账号信息
groups 查询用户账号所属的组
groups ai 查看ai用户组账号信息
查询用户账号的身份标识
id root 可以看到root的UID和 Gid等信息
查看用户帐号的登录属性
finger root 看到详细信息6.4不支持此命令
查询当前主机的用户登录情况
w
查看目录和文件的属性
ls -l 长格式列出文件目录属性
如:- --- --- ---
如:drwxrwx--- 2 root tech 4096 06-22 14:47 .目录, 属主有读取,写入,执行权限,属组有读取,写入,执行权限,其他用户没有权
限。 root是属主用户,tech是属组成员。
第一格表示文件类型(d目录),(b块设备),(c字符设备),(-普通文件),(l链接文件),
第2-4格表示属主用户权限user rwx
第5-7格表示属组成员权限group rwx
第8-10格表示其他任何用户other rwx
权限字符
r:表示可读,w:表示可写,x:可执行文件 ./ 可以用421八进制表示
设置目录和文件的权限
chmod
-R 表示递归方式对目录下的子目录文件设置一样的权限。
chmod [ugoa] [+-=][rwx] 文件或目录
ugoa:表示权限用户类型,u:表示文件属主,g:表示文件属组,o:表示其他任何用户,a:表示所以用户
+-= :表示权限的动作,+:表示增加相应权限,-:表示减少权限,=:表示仅设置对应权限。
如:chomd u+x,o-r mk 表示对mk文件增加属主用户的执行权限,减去其它用户的读取权限。
可以用八进制数字表示:chmod 1-0 mk
设置目录和文件的归属
chown 属主:属组 文件或目录
同时设置属主用户和属组成员用分号隔离 ”:“设置属组加“:"组名
如:chown accp:root /cssl 设置用户accp,属组root组,文件cssl.
-R :表示递归方式对目录下的子目录文件设置属主用户和属组。
管理磁盘及分区
检测并确认新硬盘
fdisk -l
规划硬盘中的分区
fdisk /dev/sdb
p 指令列出硬盘中得分区情况
n 指令新建分区
里面有选项 e 表示扩展分区 ,p 1-4 表示一个硬盘可以分4个主分区,
d 指令删除分区 选择需要删除的分区序号。
t 指令变更分区的类型
w 指令保存退出
q 指令不保存退出
格式化分区
mkfs
mkfs -t 文件系统类型 分区设备 如:mkfs -t ext3 /dev/sdb1
mkfs -t vfat -F 32 /dev/sdb6 格式化fat32 16文件系统类型,或mkfs.vfat -F 32 /dev/sdb6
格式化交换分区就像Windows里面的虚拟内存
mkswap /dev/sdb5
cat /proc/meminfo | grep "SwapTotal:" 查看总交换空间的大小
swapon /dev/sdb5 启动交换分区/dev/sdb5
swapoff /dev/sdb5 停止交换分区/dev/sdb5
挂载,卸载文件系统
mount [-t 文件系统类型] 存储设备 挂载点
如:mount /dev/sdb1 /media/ 挂载sdb1到media目录下,挂载点一定要空目录。
挂载光盘
mount /dev/cdrom /media/cdrom
iso9660表示光盘文件系统类型
在实际工作可能会在互联网下载ISO文件需要加 -0 loop
如:mount -o loop benet-10-dvd-i386.iso /media/mnt 表示将这个ISO挂载到/media/mnt目录下
卸载文件系统
umount /media/Benet 通过挂载点目录对应的分区
umount /dev/cdrom 通过设备文件卸载光盘
设置文件系统的自动挂载
在/etc/fstab文件里用vi编辑器修改
vi /etc/fstab 进入以这样的格式写
/dev/sdb1需要挂载的分区 /media/挂载点 ext3文件系统类型 默认default 0备份 0表示启动时不进行检查 ,1优先检查,2其次检查
查看磁盘使用情况
df -hT 可以查看当前系统中挂载的各文件系统的磁盘使用情况。
LVM磁盘文件系统管理
pv物理卷,pvscan扫描,pvcreate创建,pvdisplay显示,pvremove移除。
vg卷组 ,vgscan ,vgcreate ,vgdisplay ,vgremove ,vgextend扩展,vgreduce减少。
lv逻辑卷,lvscan , lvcreate , lvdisplay , lvremove , lvextend lvreduce 。
pvcreate /dev/sdb1 /dev/sdc1 创建物理卷
vgcreate cssl_ftp /dev/sdb1 /dev/sdc1 创建一个卷组名为cssl_ftp
vgextend cssl_ftp /dev/sdd1 增加卷组容量
lvcreate -L 25G -n lvftp /dev/cssl_ftp 创建一个25G逻辑卷,卷名lvftp
lvextend -L +10G /dev/cssl_ftp/lvftp 增加10G容量到lvftp逻辑卷
resize2fs /dev/cssl_ftp/lvftp 增加后重新识别文件大小,刷新一样。
mkfs -t ext3 /dev/cssl_ftp/lvftp 格式化逻辑卷类型ext3.
mount /dev/cssl_ftp/lvftp /ftp 挂载到根目录下的ftp。
lvremove /dev/cssl_ftp/lvftp 删除逻辑卷。
vgremove cssl_ftp 删除卷组。
pvremove /dev/sdb1 /dev/sdc1 /dev/sdd1 删除物理卷。
设置磁盘配额
rpm -q quota 查看配额管理程序。
mount -o remount,usrquota,grpquota /dev/css_ftp/lvftp /ftp 重新挂载增加用户和组的配额功能支持。
vi /etc/fstab 在文本文件下修改文件实现自动挂载支持配额功能
/dev/cssl_ftp/lvftp /ftp ext3 defaults,usrqouta,grpquota 0 0
检测磁盘配额并生成配额文件
quotacheck -augvc
-a 扫描所以分区,-u和-g检测用户和组的配额信息,-v显示细节信息,-c创建新的配额文件。
此操作有可能出现权限不够,不能创建配额文件,被阻。
getenforce 查看是否阻止,阻止出现Enforcing,开启Permissive
setenforce 0 开启 setenforce 1 关闭
编辑用户和组账号的配额设置
edquota -u benet -u是用户 blocks当前使用容量单位kb ,inodes当前未经数量,soft软限制,hard硬限制。
edquota -g cssl -g是组 blocks当前使用容量单位kb ,inodes当前未经数量,soft软限制,hard硬限制。
edquota -t 修改宽限时间。
启动文件系统的磁盘配额功能
quotaon -ugv /ftp 启动ftp文件系统用户组的磁盘配额功能。
quotaoff -ugv /ftp 关闭ftp文件系统用户组的磁盘配额功能。
查看用户或分区的配额使用情况
quota -u Benet 用户
quota -g cssl 组
repquota /ftp 查看ftp文件系统的配额使用情况。
引导过程和服务控制
系统启动过程:开机自检,Mbr引导,grub菜单,加载内核,init进程初始化。
系统初始化进程及文件
每个进程的身份标记号称:Pid,init的PID总是1
inittab配置文件
/etc/inittab
id标记:runlevels运行级别0-6:action动作类型:process程序或脚本
rc.sysinit脚本文件
/etc/rc.d/rc.sysinit
此脚本程序主要完成设置网络,主机名,加载文件系统,时钟,检测文件系统一系列初始化工作。
rc脚本文件
grep “rc.d/rc”/etc/inittab
查看,Rc脚本通过使用不同的级别参数,分别加载及终止不同系统服务,进入到相应的系统级别。
/etc/rc.d/rcX.d/目录链接文件有规律:文件以K表示终止服务或S开头开启服务,中间是序号,后面系统服务脚本名链接文件原始文件
在/etc/rc.d/init.d目录中。
ls -l /etc/rc.d/*/* | gerp netwok
查看用于控制netwoek服务的链接文件和控制脚本文件,
rc.local脚本文件
是一个额外的启动文件位于/etc/rc.d/rc.local由脚本最后加载。
服务控制及优化启动过程
各种系统服务的控制脚本默认在/etc/rc.d/init.d目录下。
两种控***务工具
service和/etc/rc.d/init.d 服务名称 控制类型有:star启动,stop停止,restart重启,reload重载,status查看状态。
切换运行级别
runlevel查看 init 3 init 5 0-6级别
优化开机自动加载的服务
两种工具ntsysv或chkconfig
ntsysv工具[*]启动[]关闭
chkconfig --list 查看所有服务的默认启动状态 0-6级别
chkconfig --list network 查看network默认服务状态
chkconfig --level 345 network off 关闭运行级别3 4 5
chkconfig --level 325 network on 开启运行级别3 2 5
进程和计划任务管理
ps查看静态的进程统计信息
a 显示所有进程,u用户为主格式输出,x显示当前用户所有进程
-e显示系统内的所有进程,-l使用长格式显示,-f使用完整的格式显示进程
ps aux 或 ps -elf
top 查看进程动态信息
top命令界面可以按p根据Cpu占用进行排列,M内存,N启动时间,h在线帮助,q退出,如果要终止某进程按k出现"PID" to kill回车杀
pgrep 查询进程信息
如:pgrep -l "log" 查看进程里有log的进程和PID
如:pgrep -l -U benet -t tty1 查看用户在tty1上运行的进程及PID
pstree 查看进程树
如:pstree -aup 查看对应的PID,和用户,列出完整信息
如:patree -ap benet 列出由Benet打开的进程及子进程树
控制进程
如制作一个镜像文件时间太长可放在后台cp /dev/cdrom mycd.iso & &表示后台进程
改变进程的运行方式
如下载东西要很久按CTRL+Z挂起当前进程调入后台停止执行,
使用bg可以恢复后台停止的任务,fg可以把后台任务恢复到前台运行。
jobs -l 查看后台的进程
kill杀死进程killall杀死多进程pkill -9 -U "benet" 杀手用户进程
如:kill 3455, kill -9 3455 强制杀死,killall -9 vim 强杀死名为vim的进程。
计划任务
at一次性任务设置atd服务要开启
如:at 12:00 2013-7-7 at〉pgrep -U root | wc -l > /tmp/ps.root 统计root用户运行的进程数量输出保存在/tmp/pa.root下
如:at 23:00 at> shutdown -h now 晚上23点关机 按CTRL+d提交
atq查询计划任务,执行过的不会显示。
atrm 2 删除2条计划任务,执行过的无法删除
周期性任务设置cron服务要开启
crontab
/etc/crontab 系统任务配置文件
-e 编辑计划任务列表,-u 指定管理用户的计划任务,-l列表显示计划任务,-r删除计划任务列表。
每一行任务配置记录都包含六个数据段,分钟,小时,日期,月份,星期,执行命令
”*“表示取值范围中的任意时间,”-“减号表示一个连续的时间范围 1-4 1 2 3 4,“,”逗号表示间隔不连续时间如3,5,7
“/”表示指定间隔时间如:日期段中*/3表示每隔3天
crontab -e
50 7 * * * service sshd start 7点50开启sshd服务
50 22 * * * service sshd stop 22点50关闭sshd服务
0 0 */5 * * rm -fr /var/ftp/pub/* 每隔5天清空一次ftp公共目录
30 7 * * 6 service httpd restart 每周六7点30重启httpd服务
30 17 * * 1,3,5 tar jcf httpd.tar.bz2 /etc/httpd 每周135备份/etc/httpd目录
crontab -e -u benet编辑用户 ,crontab -l ,crontab -l -u benet查看用户计划任务,crontab -r 删除任务计划。
分析和排查系统故障
内核及系统日志,用户日志,程序日志
ls /var/log 查看默认的日志目录文件
/var/log/messages 记录内核消息各种应用程序的公共日志,
/var/log/lastlog 记录用户登录事件 用命令看:lastlog
/var/log/wtmp 记录每个用户,注销及系统启动和停机事件。 last
/var/log/btmp 记录失败的,错误的登录尝试及验证事件。 lastb
/var/log/cron计划任务,/demesg引导过程,/maillog邮件事件,/rpmpkgs系统安装的各rpm包信息,/secure用户认证安全事件。
grep -v "^$" /etc/syslog.conf 过滤空行,看内核系统日志。
排除系统启动故障
备份MBR扇区数据
mkdir /backup
mount /dev/sdb1 /backup
dd if=/dev/sda of=/backup/sda.mbr.bak bs=512 count=1
模拟MBR扇区故障
dd if=/dev/zero of=/dev/sda bs=512 count=1 重启出现operating system not found消息
擦入光盘进入急救模式Linux rescue
看提示操作配置网卡选№ 尝试挂载到/mnt/sysimage目录
进入sh-3.2#fdisk -l /dev/sda 查看因MBR损害,已经无法看到分区表
sh-3.2#mkdir /tmpdir
sh-3.2#mount /dev/sdb1 /tmpdir 挂载有备份文件的分区
sh-3.2#dd if=/tmpdir/sda.mbr.bak of=/dev/sda 恢复备份数据重启
GRUB引导故障
/boot/grub/grub.conf文件丢失破坏
需要编写具体看相同版本
grub〉root (hd0,0)
grub〉kerenl /vmlinuz-2.6.18-194.e15 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
grub〉initrd /initrd-2.6.18-194.e15.img
grub〉boot
也可以擦光盘进入急救模式重写
sh-3.2#chroot /mnt/sysimage
sh-3.2#vi /boot/grub/grub.conf 进入编写
sh-3.2#exit退出重启
sh-3.2#有可能MBR也出现损坏
sh-3.2#chroot /mnt/sysimage
sh-3.2#grub-install /dev/sda 重新grub引导程序安装到第一块硬盘的MBR扇区。
sh-3.2#exit 重启
/etc/inittab文件丢失
进入急救模式
sh-3.2#chroot /mnt/sysimage
sh-3.2#rpm -qf /etc/inittab
sh-3.2#mount /dev/hdc /media/cdrom 挂载
sh-3.2#rpm -ivh --replacepkgs /media/cdrom/server/initscripts-8.45.30-2.e15.i386.rpm --replacepkgs覆盖安装
sh-3.2#exit 重启
遗忘root用户密码
急救模式
sh-3.2#chroot /mnt/sysimage
sh-3.2#passwd root
重启在grub菜单选择版本按e
定位到kernel按e 在行尾加single或s 或1 进入单用户模式
回车确认按b进入,在单用户可以执行passwd root 重新设置密码。
修复文件系统
模拟破坏文件系统
dd if=/dev/zero of=dev/sdb1 bs=512 count=4
mount /dev/sdb1 /mnt/ 挂载出错you must specify the filesystem type
修复命令fsck -y -t ext3 /dev/sdb1
模拟i节点耗尽故障
mkdir /data
mount /dev/sdb7 /data
df -i /data
新建一个测试程序
vi killinode.sh 进入编辑
#!/bin/bash
i=1
while [$i -le 8021]
do
touch /data/file$i
let i++
done
:wq
#sh killinode.sh &
#df -i /data
#touch /data/cssl 无法创建
#df -hT /data
修复i节点问题
找到占用i节点文件删除即可
rm -rf /data/file/*
检测硬盘坏道
badblocks -sv /dev/sdb