202208023

*配置文件一般存放在用户的家目录下

Which命令可以查到别名 which ls

last命令 #列出目前与过去登入系统的用户信息
lastlog #lastlog -u id 检查某特定用户上次登录时间

网络命令:
命令who=命令w #查看在线用户 bin路径下面,执行权限所有用户
ping -c ip地址 (c指定发送次数)
ifconfig命令 #查看和设置网卡信息
traceroute命令 #显示数据包到主机间的路径(跟踪路由,一个个的节点)
修改IP后需要重启网络服务:service network restart

netstat命令 #显示网络相关信息 netstat[选项]
-t:TCP协议 (三次握手 打电话)
-u:UDP协议 (发短信 速度快)
-l:监听
-r:路由
-n:显示IP地址和端口号
netstat -tlun 查看本机监听的端口
netstat -an 查看本机所有的网络连接
netstat -rn 查看本机路由表

setup配置网络后需service network restart重启网络服务

(Established 已确立的 连接成功)

mount命令 #挂载语法:mount[-t 文件系统]设备文件名 挂载点
范例:#mount -t iso9660 /dev/sr0 /mnt/cdrom

压缩命令:(压缩格式)
.gz 使用gzip 压缩;使用gunzip(gzip -d) 解压缩,不能解压目录,不保留原文件
.tar 生成打包文件,压缩目录 tar -cf 只打包不压缩 tar -xf解压 (不常用)
.tar.gz tar -zcf tar -zxf解包
.zip zip压缩文件 zip -k压缩目录 (保留原文件 ) unzip解压缩
.bz2 bzip2进行压缩 bunzip2(bzip -d)解压缩
对目录压缩.tar.bz2 tar -cjf 生成 tar -xjf解压缩

1.删除特殊的用户和用户组
root账户下删除系统不必要的用户 userdel [用户名]
root账户下删除系统不必要的用户组 groupdel [用户组名]
某些用户不需要登录功能,#禁止nagios用户登录 命令usermod -s /sbin/nologin nagios
2.关闭系统不需要的服务(关闭服务自动启动 ,命令chkconfig)
例如:关闭bluetooth服务 chkconfig --level 345 bluetooth off
最后重启服务器
3.密码安全策略
远程登录系统有两种认证方式:密码认证,密钥认证
密码设置:至少六个字符以上,密码要包含数字,字母,下划线,特殊符号等
Linux服务器一般通过SecureCRT,putty,Xshell之类的工具进行远程维护管理

shutdown -r 重启- h 关机
cat /etc/inittab 修改系统默认运行级别

vim使用
set nu 加行号

定义快捷键 Ctrlvp一起按 变成 ^p
^p I# I跳到行首并进入插入模式 变成注释#
^B 0x 把行首光标所在处的第一个字符删掉

Linux中软件包分为源码包和RPM包
1)RPM包命名规则:
httpd-2.2.15-15.el6.centos.1.i686.rpm
httpd 软件包名
2.2.15 软件版本
15 软件发布的次数
el6.centos 适合的linux平台
i686 适合的硬件
rpm rpm包扩展名

RPM包依赖性:树形依赖,环形依赖,模块依赖

RPM包安装:rpm -ivh 包全名
选项: -i (install) 安装
-v (verbose) 显示详细信息
-h (hash) 显示进度
–nodeps 不检测依赖性

RPM包升级:rpm-Uvh 包全名
-U (upgrade) 升级

RPM包卸载:rpm -e 包名
-e(erase) 卸载
–nodeps 不检测依赖性

查询是否安装:
rpm -q 包名
#查询包是否安装 q(query)查询
rpm -qa 包名
#查询所有已经安装的RPM包
(安装和升级需要加包全名,剩下的只加包名)

查询包中文件安装位置:rpm -ql 包名
-l 列表

查询系统文件属于哪个RPM包:rpm -qf 系统文件名
-f 查询系统文件属于哪个软件包(file)

查询软件包的依赖性:rpm -qR 包名
-R 查询软件包的依赖性(requires)
-p 查询未安装包信息

RPM包检验:rpm -V 已安装的包名
-V 校验指定RPM包中的文件
(验证内容中的8个信息的具体内容:
S 文件大小是否改变
M 文件的类型或文件的权限(rwx)是否被改变
5 文件MD5校验和是否改变(可看为文件内容是否改变)
D 设备中从代码是否改变?
L 文件路径是否改变
U 文件的属性(所有者)是否改变
G 文件的属组是否改变
T 文件的修改时间是否改变)

MD5是一种加密方式

2)RPM包中文件提取:
运用背景:在修改重要系统文件之前,应该先把文件做一下备份处理。
[root@localhost]#cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
然而你忘记了备份,然后文件你修改错误了,无法还原了,而且这个文件还不能删除。这种情况下,就需要使用rpm包的文件提取了。
cpio命令本来是做备份和还原的,但是这个命令的备份和还原极其不方便。(不推荐用cpio命令做备份和还原)
cpio命令主要有三种基本模式:“-o”模式指的是copy-out模式,就是把数据备份到文件库中;“-i”模式指的是copy-in模式,就是把数据从文件库中恢复;“-p”模式指的是复制模式,就是不把数据备份到cpio库中,而是直接复制为其他文件。
cpio 选项 [文件设备]
选项
-i:copy-in模式,还原
-d:还原时自动新建目录
-v:现实还原过程
了解一下即可
换句话总结就是:不推荐用cpio命令做备份和还原,还有其他更好的方式。但是可以用来做在rpm包中提取文件的事情
rpm包中文件提取,其实就是直接从rpm包中提取一个或者几个我需要的文件

[root@localhost ~]# rpm2cpio 包全名 | cpio -idv .文件绝对路径
rpm2cpio #将rpm包转换为cpio格式的命令
cpio #是一个标准工具,他用于创建软件档案文件和从档案文件中提取文件
注意:
上边命令中的.,是表示当前目录,把提取出来的文件放入当前目录。如果不写.,提取出来的文件,会直接提取到文件的安装目录中,覆盖掉原有的配置文件。
这不符合我们的操作习惯,我们的习惯是,把现有的文件和提取出来的文件进行比对,看看有什么不同,然后在确定是否替换,或者修改现有文件。

[root@localhost ~]# rpm -qf /bin/ls
#查询ls命令属于哪个软件包
[root@localhost ~]# mv /bin/ls /tmp/
#造成ls命令误删除假象
[root@localhost ~]# rpm2cpio /mnt/cdrom/packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls
#提取RPM包中ls命令到当前目录的/bin/ls下
[root@localhost ~]# cp /root/bin/ls /bin/
#把ls命令复制回/bin/目录,修复文件丢失
/mnt/cdrom/packages/coreutils-8.4-19.el6.i686.rpm表示rpm包路径
./bin/ls表示,当前目录下有一个/bin/ls文件。到时候比对ls文件和现有文件,再决定下一步的操作

IP地址配置
setup
#使用setup工具

vi /etc/sysconfig/network-scripts/ifcfg-eth0
把ONBOOT=no改为yes
#启动网卡

service network restart
#重启网络服务

有IP和子网掩码就可以在局域网中使用,
访问互联网:IP,子网掩码,网关,DNS缺一不可

grep指令用于查找内容包含指定的的范本文件 例如: grep sc /etc/passwd

常用yum命令
yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

1)查询,安装,升级,卸载
查询 yum list #查询所有可用软件包列表
yum search <关键字> #查找软件包命令
安装 yum -y install 包名
选项: install (安装) -y 当安装过程提示选择全部为 “yes”,自动回答yes(仅安装指定的软件命令)
升级 yun -y update 包名 (如果不加包名就是升级所有软件包,慎用!!!)
选项: update (升级) -y 自动回答yes
卸载 yum -y remove 包名(尽量不卸载,容易造成系统崩溃)
2)YUM软件组管理命令
[root@localhost ~]# yum grouplist#列出所有可用的软件组列表
[root@localhost ~]# yum groupinstall 软件组名#安装指定软件组,组名可以由grouplist查询出来
[root@localhost ~]# yum groupremove 软件组名#卸载指定软件组

(注:软件组名如果有空格,需要双引号引起来)
(所有的yum源文件都保存在etc/yum.repos.d目录中)

mv命令(英文全拼:move file)用来为文件或目录改名、或将文件或目录移入其它位置。
例:mv CentOS-Base.repo CentOS-Base.repo.bak

RPM包安装位置(是安装在默认位置中):
默认安装路径
/etc/ 配置文件安装目录
/usr/bin/ 可执行的命令安装目录
/usr/lib/ 程序所使用的函数库保存位置
/usr/share/doc/ 基本的软件使用手册保存位置
/usr/share/man/ 帮助文件保存位置

RPM包安装的服务使用系统服务管理命令:service
启动方法:service httpd start #启动阿帕奇

用户配置文件 -用户信息文件 /etc/passwd
-影子文件 /etc/shadow
-组信息文件 /etc/group
-组密码文件 /etc/gshadow
vim /etc/group(进入文件)

pwd:打印当前工作目录
用户邮箱: /var/spool/mail/用户名/
用户模板目录: /etc/skel/

用户管理命令:(useradd后会在哪些文件中有变化,生成哪些目录)
1 . 用户添加命令useradd
useradd命令格式:
[root@localhost ~]# useradd [选项] 用户名
选项
-u UID: 手工指定用户的UID号
-d 家目录: 手工指定用户的家目录
-c 用户说明: 手工指定用户的说明
-g 组名: 手工指定用户的初始组
-G 组名: 指定用户的附加组
-s shell: 手工指定用户的登录shell,默认是/bin/bash

指定选项添加用户:

[root@localhost 桌面]# useradd -u 666 -G root,bin -c "test user" -d /liming -s /bin/bash liming
[root@localhost 桌面]# grep liming /etc/passwd
liming:x:666:1002:test user:/liming:/bin/bash
[root@localhost 桌面]# ll -d /liming/
drwx------. 3 liming liming 92 1月  25 09:07 /liming/

[root@localhost 桌面]# vim /etc/default/useradd useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes

用户默认值文件:
/etc/default/useradd
GROUP=100 #用户默认组
HOME=/home #用户家目录
INACTIVE=-1 #密码过期宽限天数(shutdown文件7字段)
EXPIRE= #密码失效时间(8)
SHELL=/bin/bash #默认shell
SKEL=/etc/skel #模板目录
CREATE_MAIL_SPOOL=yes #是否建立邮箱

[root@localhost 桌面]# vim /etc/login.defs
/etc/login.defs
PASS_MAX_DAYS      99999                            #密码有效期(5)
PASS_MIN_DAYS       0                                    #密码修改间隔(4)
PASS_MIN_LEN         5                                     #密码最小5位(PAM)
PASS_WARN_AGE    7                                     #密码到期警告(6)
UID_MIN                     500                                 #最小和最大UID范围
GID_MAX                    60000
ENCRYPT_METHOD   SHA512                        #加密模式

2.修改用户密码:
1)passwd命令格式
[root@localhost 桌面]# passwd [选项] 用户名
选项:
-S:查询用户密码的密码状态,仅root用户可用
-l:暂时锁定用户,仅root用户可用
-u:解锁用户,仅root用户可用
–stdin:可以通过管道符输出的数据作为用户的密码
2)查看密码状态
[root@localhost 桌面]# passwd -S lamp
lamp PS 2013-01-06 0 99999 7 -1
#用户密码设定时间(2013-01-06)密码修改间隔时间(0)
#密码有效期(99999)警告时间(7)密码不失效(-1)
3)锁定用户和解锁用户

[root@localhost 桌面]# passwd -l lamp
[root@localhost 桌面]# passwd -u lamp

3.修改用户信息usermod;修改用户密码状态chage
[root@localhost 桌面]# usermod [选项] 用户名
选项
-u UID:修改用户的UID号
-c 用户说明:修改用户的说明信息
-G 组名:修改用户的附加组
-L:临时锁定用户(Lock)
-U:解锁用户锁定(Unlock)
修改用户密码状态chage:
[root@localhost 桌面]# chage [选项] 用户名
选项
-l:列出用户的详细密码状态
-d 日期:修改密码最后一次更改日期(shadow3字段)
-m 天数:两次密码修改间隔(4字段)
-M 天数:密码有效期(5字段)
-W天数:密码过期前警告天数(6字段)
-I 天数:密码过后宽限天数(7字段)
-E 日期:账号失效时间(8字段)

[root@localhost ~]# chage -d 0 lamp
#这个命令把密码修改日期归0(shadow第3字段)
#这样用户一登录就要修改密码

4.删除用户userdel
[root@localhost ~]# userdel [-r] 用户名
选项:-r 删除用户的同时删除用户家目录

手工删除用户:
[root@localhost ~]# vi /etc/passwd
[root@localhost ~]# vi /etc/shadow
[root@localhost ~]# vi /etc/group
[root@localhost ~]# vi /etc/gshadow
[root@localhost ~]# rm -rf /var/spool/mail/lamp
[root@localhost ~]# rm -rf /home/lamp/

查看用户ID:
[root@localhost ~]# Id 用户名

切换用户身份命令su:
[root@localhost ~]# su [选项] 用户名
选项
-:选项只使用“-”代表连带用户的环境变量一起切换
-c:仅执行一次命令,而不切换用户身份

su - root 这个-必须存在!!! - !!!

[lamp@localhost ~]$ su -c "nohub ./elasticsearch&" user1
#有些软件是拒绝root用户启动的,比如elasticsearch,所以需要我们以普通用户的身份执行命令

值得注意的是,如果要连带着环境配置完整的切换到新用户,则需要执行 su -或者su -l命令,我们可以使用 env | grep 用户名 查看环境配置,比如env | grep root
(env查看环境变量)
在这里插入图片描述
su的用法中,最常见的两种应用场景:

由root用户切换到普通用户执行命令,如启动某些服务
由普通用户切换到root用户执行命令,如授权命令

用户组管理命令
1.添加用户组
[root@localhost ~]# groupadd [选项] 组名
选项
-g GID #指定组ID
2.修改用户组
[root@localhost ~]# groupmod [选项] 组名
选项
-g GID #修改组ID
-n 新组名 #修改组名

[root@localhost ~]# groupmod -n testgrp group1
#把组名group1修改为testgrp
(testgrp是新组名 group1是旧组名(尽量不要改组名**!!!**))

3.删除用户组
[root@localhost ~]# groupdel 组名
4.把用户添加入组或从组中删除
[root@localhost ~]# gpasswd [选项] 组名
选项
-a 用户名 #把用户加入组
-d 用户名 #把用户从组中删除

权限管理
基本权限:用户对文件拥有所有者,所属组,其他人三个身份,每个身份都有读写执行三个权限
特殊权限:ACL权限,文件特殊权限,文件系统属性chatter权限,系统命令sudo权限
1.ACL权限
在这里插入图片描述
2.查看分区ACL权限是否开启
[root@localhost ~]# dumpe2fs -h /dev/sda3
选项
-h 仅显示超级块中信息,而不显示磁盘块组的详细信息
#dumpe2fs命令是查询指定分区详细文件系统信息的命令

ACL权限需要文件所在的分区支持才可以

3.临时开启分区ACL权限
[root@localhost ~]# mount -o remount,acl /
#重新挂载根分区,并挂载加入acl权限

4.永久开启分区ACL权限
1):[root@localhost ~]# vi /etc/fstab
UUID=c2cafd6f57-b15c-43ea-bca0-f23uji98 /ext4 defaults,acl 0 0
在defaults后加入acl
2):[root@localhost ~]# mount -o remount /
#重新挂载文件系统或重启系统,使修改生效

ACL权限就是解决所有者所属组其他人三个身份不足的情况

5.查看与设定ACL权限
1)查看ACL命令
[root@localhost ~]# getfacl [选项] 文件名
#查看acl权限
2)设定ACL权限命令
[root@localhost ~]# setfacl [选项] 文件名
选项
-m 设定ACL权限
-x 删除指定的ACL权限
-b 删除所有的ACL权限
-d 设定默认ACL权限
-k 删除默认ACL权限
-R 递归设定ACL权限

例子:[root@localhost ~]# setfacl -m u:st:rx /project/
#给用户st赋予r-x权限,使用“u:用户名:权限” 格式

exit退出登录

6.给用户组设定ACL权限
[root@localhost ~]# groupadd tgroup2
[root@localhost ~]# setfacl -m g:tgroup2:rwx project/
#为组tgroup2分配ACL权限。使用“g:组名:权限”格式

7.最大有效权限与删除ACL权限
最大有效权限mask(mask是用来指定最大有效权限的,如果给用户赋予ACL权限,是需要和mask的权限“相与”才能得到用户的真正权限)

修改最大有效权限
[root@localhost ~]# setfacl -m m:rx 文件名
#设定mask权限为r-x。使用“m:权限”格式

删除ACL权限
[root@localhost ~]# setfacl -x u:用户名 文件名
#删除指定用户的ACL权限
[root@localhost ~]# setfacl -x g:组名 文件名
#删除指定用户组的ACL权限
[root@localhost ~]# setfacl -b 文件名
#删除文件的所有的ACL权限

8.默认ACL权限和递归ACL权限
递归ACL权限:递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限。(现有文件递归)
setfacl -m u:用户名:权限 -R 目录名/文件名

默认ACL权限:默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限。
setfacl -m d:u:用户名:权限 文件名(未来新建文件遵守ACL权限)

文件特殊权限
SetUID(可执行文件) SetGID(目录以及可执行文件) Sticky BIT(目录) 4 2 1

1.SetUID功能
只有可以执行的二进制程序才能设定SUID权限
命令执行者要对该程序拥有x(执行)权限
命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中附体为文件的属主)
SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效

passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 25980 2月 22 2012 /usr/bin/passwd

cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow 文件内容
[root@localhost ~]# ll /bin/cat
-rwxr-xr-x 1 root root 47976 6月 22 2012 /bin/cat

设定SetUID的方法:
4代表SUID chmod 4755 文件名
chmod u+s 文件名
取消SetUID的方法:
chmod 755 文件名
chmod u-s 文件名 (减号)

2.SetGID针对文件的作用
只有可执行的二进制程序才能设置SGID权限
命令执行者要对该程序拥有x(执行)权限
命令执行者在执行程序时,组身份升级为该程序文件的属组
SetGID权限同样只在该程序执行过程中有效,组身份改变只在程序执行过程中有效

SetGID针对目录的作用
普通用户必须对此目录拥有r和x权限,才能进入次目录
普通用户在此目录中的有效组会变成此目录的属组
若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组

设定SetGID的方法:
2代表SGID chmod 2755 文件名
chmod u+s 文件名
取消SetGID的方法:
chmod 755 文件名
chmod g-s 文件名 (减号)

Sticky BIT
SBIT粘着位作用:
粘着位目前只对目录有效
普通用户对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限
如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一旦赋予粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件

设置与取消粘着位
设置 chmod 1755 目录名
chmod o+t 目录名
取消 chmod 777 目录名
chmod o-t 目录名

文件系统属性chatter权限
chatter命令格式
[root@localhost ~]# chatter [+-=] 选项 文件或目录名
+:增加权限
-:删除权限
=:等于某权限
chatter: 锁定文件,不能删除,不能更改
+a: 只能给文件添加内容,但是删除不了,
chattr +a /etc/passwd
-d: 不可删除
加锁:chattr +i /etc/passwd 文件不能删除,不能更改,不能移动
查看加锁: lsattr /etc/passwd 文件加了一个参数 i 表示锁定
解锁:chattr -i /home/omd/h.txt - 表示解除

查看文件系统属性
[root@localhost ~]# lsatter 选项 文件名
选项
-a 显示所有文件和目录
-d 若目标是目录,仅列出目录本身的属性,而不是子文件的

系统命令权限sudo权限
1)sudo权限
root把本来只能超级用户执行的命令赋予普通用户执行
sudo的操作对象是系统命令
2)sudo使用
[root@localhost ~]# vi sudo
#实际修改的是/etc/sudoers文件

root ALL=(ALL) ALL
#用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
#%wheel ALL=(ALL) ALL
#%组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
3)授权sc用户可以重启服务器
[root@localhost ~]# vi sudo
sc ALL= /sbin/shutdown -r now
4)普通用户执行sudo赋予的命令
[root@localhost ~]# su -sc
[sc@localhost ~]$ sudo -l
#查看可用的sudo命令
[lamp@localhost ~]$ sudo /sbin/shutdown -r now
#普通用户执行sudo赋予的命令

文件系统管理
分区和文件系统
1)分区类型
主分区:总共最多只能分四个
扩展分区:只能有一个,也算作主分区的一种,也就是说主分区加扩展分区最多有四个。但是扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用。
逻辑分区:逻辑分区是在扩展分区中划分的,如果是IDE硬盘,linux最多支持59个逻辑分区,如果是SCSI硬盘linux最多支持11个逻辑分区
分区表示方法: 扩展分区
主分区1 主分区2 主分区3 (逻辑分区1 逻辑分区2 逻辑分区3)
分区的设备文件名:
主分区1 /dev/sda1
主分区2 /dev/sda2
主分区3 /dev/sda3
扩展分区 /dev/sda4
逻辑分区1 /dev/sda5
逻辑分区2 /dev/sda6
逻辑分区3 /dev/sda7

习惯于: 扩展分区
主分区1 (逻辑分区1 逻辑分区2 逻辑分区3)
分区的设备文件名:
主分区1 /dev/sda1
扩展分区 /dev/sda2
逻辑分区1 /dev/sda5
逻辑分区2 /dev/sda6
逻辑分区3 /dev/sda7

2)文件系统
ext2:是ext文件系统的升级版本,最大支持16TB的分区和最大2TB的文件

硬盘有了分区还得格式化后才可使用,格式化:为了写入文件系统

ext3:是ext2文件系统的升级版本,带日志功能,以在系统突然停止时提高文件系统的可靠性,最大支持16TB的分区和最大2TB的文件

ext4:是ext3文件系统的升级版本,最大支持1EB文件系统和16TB文件…是CentOS6.3默认文件系统

文件系统常用命令:
1.挂载命令
2.挂载光盘与U盘
3.支持NTFS文件系统

df命令 du命令 fsck命令 dump2fs命令
1)文件系统查看命令df (df看分区)
[root@localhost ~]# df [选项] 挂载点
选项
-a 显示所有的文件系统信息,包括特殊文件系统,如/proc /sysfs
-h 显示容量,如KB,MB,GB等
-T 显示文件系统类型
-m 以MB为单位显示容量
-k 以KB为单位显示容量(默认)
2)统计目录或文件大小du
[root@localhost ~]# du [选项] 目录或文件名
选项
-a 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
-h 使用习惯单位显示磁盘占用量,如KB,MB,GB
-s 统计总占用量,而不列出目录和子文件的占用量
一般用ll -h 查看文件大小
(访问高峰晚上七点至十二点)

du命令和df命令的区别
df命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)
du命令是面向文件的,只会计算文件或目录占用空间

3)文件系统修复命令fsck
[root@localhost ~]# fsck [选项] 分区设备文件名
选项
-a 不用显示用户提示,自动修复文件系统
-y 自动修复。和-a作用一致,不过有些文件系统只支持-y
4)显示磁盘状态命令dumpe2fs
[root@localhost ~]# dumpe2fs 分区设备文件名
(du看文件大小准确)(df 看剩余空间准确)

文件系统常用命令-挂载命令
1)查询与自动挂载
[root@localhost ~]# mount -l
#查询系统中已经挂载的设备,-l会显示卷标名称
[root@localhost ~]# mount -a
#依据配置文件/etc/fstab的内容,自动挂载
2)挂载命令格式
[root@localhost ~]# mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点
选项
-t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3,ext4,iso9660等文件系统
-L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载
-o 特殊选项:可以挂载的额外选项

参数: 说明:
atime/noatime #更新访问时间/不更新访问时间。访问分区文件时,是否更新文件的访问时间,默认为更新
async/sync #异步/同步,默认异步
auto/noauto #自动/手动,mount -a命令执行时,是否会自动安装/etc/fstab文件内容挂载,默认自动
defaults #定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项
exec/noexec #执行/不执行,设定是否允许在文件系统中执行可执行文件,默认是exec允许
remount #重新挂载已经挂载的文件系统,一般用于指定修改特殊权限
rw/ro #读写/只读,文件系统挂载时,是否具有读写权限。默认是rw
suid/nosuid #具有/不具有SUID权限,设定文件系统是否具有SUID和SGID的权限,默认是具有
user/nouser #允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认是不允许,只有root可以挂载分区
usrquota #写入代表文件系统支持用户磁盘配额,默认不支持
grpquota #写入代表文件系统支持磁盘配额,默认不支持

例子:
[root@localhost ~]# mount -o remount,noexec /home
#重新挂载/boot分区,并使用noexec权限

[root@localhost ~]# cd /home
[root@localhost ~]# vi hello.sh
[root@localhost ~]# chmod 755 hello.sh
[root@localhost ~]# ./hello.sh
[root@localhost ~]# mount -o remount,exec /home

#记着改回来,要不会影响系统启动
文件系统常用命令-挂载光盘与u盘
1)挂载光盘
[root@localhost ~]# mkdir /mnt/cdrom/
#建立挂载点
[root@localhost ~]# mount -t iso9660 /dev/cdrom /mnt/vdrom/
#挂载光盘
[root@localhost ~]# mount /dev/sr0 /mnt/cdrom/
2)卸载命令

[root@localhost ~]# umount 设备文件名或挂载点
[root@localhost ~]# umount /mnt/cdrom

3)挂载U盘
[root@localhost ~]# fdisk -l
#查看U盘设备文件名
[root@localhost ~]# mount -t vfat /dev/sdb1/mnt/usb/

文件系统常用命令-支持NTFS文件系统
注意:linux默认是不支持NTFS文件系统的
1)下载NTFS-3G插件
http://www.tuxera.com/community/ntfs-3g-download/
(下载后使用winscp传输)
2)安装NTFS-3G
[root@localhost ~]# tar -zxvf ntfs-3g_ntfsprogs-2013.1.13.tgz
#解压
[root@localhost ~]# cd ntfs-3g_ntfsprogs-2013.1.13.tgz
#进入解压目录
[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# ./configure
#编译器准备。没有指定安装目录,安装到默认位置中
[root@localhost ntfs-3g_ntfsprogs-2013.1.13]# make
#编译
[root@localhost tfs-3g_ntfsprogs-2013.1.13]# make install
#编译安装
3)使用
[root@localhost ~]# mount -t ntfs-3g 分区设备文件名 挂载点
fdisk分区
fdisk命令分区过程:
添加新硬盘
fdisk -l 查看新硬盘
扩展分区(Extended)的ID为5 扩展分区既不能格式化也不能写入数据
使用fdisk命令分区 fdisk /dev/sdb

fdisk交互指令说明:
命令 说明
a 设置引导标记
b 编辑bsd擦盘标签
c 设置DOS操作系统兼容标记
d 删除一个分区
l 显示已知的文件系统。82为linux swap分区83为linux分区
m 显示帮助菜单
n 新建分区
o 建立空白DOS分区表
p 显示分区列表
q 不保存退出
s 新建空白SUN磁盘标签
t 改变一个分区的系统ID
u 改变显示记录单位
v 验证分区表
w 保存退出
x 附加功能(仅专家)

重新读取分区表信息 partprobe
格式化分区 mkfs -t ext4 /dev/sdb1
建立挂载点并挂载 mkdir /disk1 mount /dev/sdb1 /disk1/
(查看分区是否正确挂载df -h mount)

分区自动挂载与fstab文件修复(这个文件写错会导致系统奔溃)
1)、etc/fstab文件
第一字段:分区设备文件名或UUID(硬盘通用位移识别码)
第二字段:挂载点
第三字段:文件系统名称
第四字段:挂载参数
第五字段:指定分区是否被dump备份,0代表不备份,1代表每天备份,2代表不定期备份
第六字段:指定分区是否被fsck检测,0代表不检测,其他数字代表检测的优先级,1的优先级比2高
2)分区自动挂载
[root@localhost ~]# vi /etc/fstab
…省略部分输出…
/dev/sdb1 /disk1 ext4 defaults 12

[root@localhost ~]# mount -a
#依据配置文件/etc/fstab的内容,自动挂载
3)/etc/fstab 文件修复
[root@localhost ~]# -0 remount,rw /

shell
shell是什么?
shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动,挂起,停止甚至是编写程序

例如:命令ls转变成内核可以识别的0101机器语言,这时候就用到shell
其实shell就是Linux的交互界面

shell还是一个功能强大的编程语言,shell是解释执行的脚本语言,在shell中可以直接调用Linux系统命令
(PHP也是解释执行)
shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族包括sh,ksh,Bash,psh,zsh;C家族包括csh,tcsh
Linux中标准Shell是Bash(主流)
Bash:Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本shell
Linux支持的Shell /etc/shells

Shell脚本的执行方式:
1)echo输出命令
[root@localhost ~]# echo [选项] 输出内容
选项:-e #支持反斜线控制的字符转换
控制字符 作用
\ 输出\本身
\a 输出警告音
\b 退格键,先做删除键
\c 取消输出行末的换行符,和“n”选项一致
\e ESCAPE键
\f 换页符
\n 换行符
\r 回车键
\t 制表符,也就是Tab键
\v 垂直制表符
\0nnn 按照八进制ASCII码表输出字符,其中0为数字0,nnn是三位八进制数
\xhh 按照十六进制ASCII码表输出字符,其中hh是两位十六进制数

例子:
[root@localhost ~]# echo -e "ab\bc"
#删除左侧字符
echo -e "a\tb\tc\nd\te\tf"
#制表符与换行符

[root@localhost ~]#echo "abc"
abc
[root@localhost ~]#echo -e "ab\bc"
ac
[root@localhost ~]#echo -e "a\tb\tc\nd\te\tf"
a  b  c
d  e  f

[root@localhost ~]# echo -e "\e[1;31m abcd \e[0m"
#输出颜色 30m=黑色 31m=红色 32m=绿色 33m=黄色…
2)第一个脚本

[root@localhost sh]# vi hello.sh
#!/bin/Bash
#The first program
#Author: LY (E-mail: Ly@lampbrother.net)

echo -e "He is man"

3)脚本执行
赋予执行权限,直接运行
chmod 755 hello.sh
./hello.sh
通过Bash调用执行脚本
bash hello.sh
dos2unix 从dos格式转换到linux格式 (dos2unix Test.sh(文件名))
[root@localhost sh]# yum -y install dos2unix 安装这个命令

Bash的基本功能:(历史命令与命令补全,命令别名与常用快捷键,输入输出重定向,多命令顺序执行与管道符,通配符与其他特殊符号)
1)历史命令
[root@localhost ~]# history [选项] [历史命令保存文件]
选项:
-c 清空历史命令
-w 把缓存中的历史命令写入历史命令保存文件~/.bash_history
历史命令默认保存1000条,可以在环境变量配置文件/etc/profile中进行修改
历史命令调用:
使用上下箭头调用以前的历史命令
使用"!n"重复执行第n条历史命令
使用"!!“重复执行上一条命令
使用”!字符串"重复执行最后一条以该字节串开头的命令
2)命令与文件不全
在Bash中,在输入命令或文件时,按"Tab"键就会自动补全
命令别名:
[root@localhost ~]# alias 别名=‘原命令’
#设定命令别名
[root@localhost ~]# alias
#查询命令别名(只会临时生效,重启系统后这个别名消失)

命令执行顺序:
1)第一顺位执行用绝对路径或相对路径执行的命令
2)第二顺位执行别名
3)第三顺位执行Bash的内部命令
4)第四顺位执行按照$PATH环境变量定义的目录查找顺序找到第一个命令

让别名永久生效 [root@localhost ~]# vi/root/.bashrc
删除别名 [root@localhost ~]# unalias 别名

Bash常用快捷键:
CTRL-A 将光标移到行首(在命令行下)
CTRL-C 中断,终结一个前台作业
CTRL-D “EOF” (文件结尾:end of file)。它用于表示标准输入(stdin)的结束。在控制台或xterm 窗口输入文本时,CTRL-D 删除在光标下的字符。
从一个shell中退出 (类似于exit)。如果没有字符存在,CTRL-D 则会登出该会话。在一个xterm窗口中,则会产生关闭此窗口的效果。
CTRL-E 将光标移动到行尾(在命令行下)
CTRL-L 跳纸,换页(Formfeed),清屏
CTRL-U 擦除从光标位置开始到行首的所有字符内容。在某些设置下,CTRL-U会不以光标位置为参考而删除整行的输入
CTRL-K 垂直制表符(Vertical tab)。在控制台或 xterm 窗口输入文本时,CTRL-K会删除从光标所在处到行尾的所有字符
CTRL-Y 将之前已经清除的文本粘贴回来(主要针对CTRL-U或CTRL-W)
CTRL-R 回溯搜索(Backwards search)history缓冲区内的文本(在命令行下)。注意:按下之后,提示符会变成(reverse-i-search)”:输入的搜索内容出现在单引号内,同时冒号后面出现最近最匹配的历史命令
CTRL-Z 暂停一个前台的作业;在某些文本处理程序中也作为替换操作;在MSDOS文件系统中作为EOF(End-of-file)字符
CTRL-S Suspend(XOFF),挂起。这个是冻结终端的stdin。要恢复可以按CTRL-Q(暂停屏幕输出)
CTRL-Q Resume (XON)。恢复/解冻,这个命令是恢复终端的stdin用的,可参见CTRL-S(恢复屏幕输出)

标准输入输出:
设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/stdout 1 标准输出
显示器 /dev/stderr 2 标准错误输出

输出重定向:
类型 符号 作用
标准输出重定向 命令>文件 以覆盖的方式,把命令的正确输出,输出带指定的文件或设备中
命令>>文件 以追加的方式,把命令的正确输出,输出带指定的文件或设备中

标准错误输出重定向 错误命令 2>文件 以覆盖的方式,把命令的错误输出,输出带指定的文件或设备中
错误命令 2>>文件 以追加的方式,把命令的错误输出,输出带指定的文件或设备中

正确输出和错误输出同时保存 命令 > 文件 2>&1 以覆盖的方式,把正确输出和错误输出都保存到同一个文件中
命令 >> 文件 2>&1 以追加的方式,把正确输出和错误输出都保存到同一个文件中
命令 &>文件 以覆盖的方式,把正确输出和错误输出都保存到同一个文件中
命令&>>文件 以追加的方式,把正确输出和错误输出都保存到同一个文件中
命令>文件1 2>>文件2 把正确的输出追加到文件1中,把错误的输出追加到文件2中

例子: ls &>/dev/null(扔到黑洞垃圾箱)(写shell时会用到)
3.输入重定向
[root@localhost ~]# wc [选项] [文件名]
选项:
-c 统计字节数
-w 统计单词数
-l 统计行数
命令<文件 把文件作为命令的输入
(一般情况下不用,给源码包打补丁时可能用到)

多命令顺序执行:
多命令执行符 格式 作用
: 命令1:命令2 多个命令顺序执行,命令之间没有任何逻辑联系
&& 命令1&&命令2 逻辑与
当命令1正确执行,则命令2才会执行
当命令1执行不正确,则命令2不会执行
|| 命令1||命令2 逻辑或
当命令1执行不正确,则命令2才会执行
当命令1正确执行,则命令2不会执行
[root@localhost ~]# dd if=输入文件 bs=字节数 count=个数
选项
if=输入文件 指定源文件或源设备
of=输出文件 指定目标文件或目标设备
bs=字节数 指定一次/输出多少字节,即把这些字节看做一个数据快
count=个数 指定输入/输出多少个数据块
例子:
[root@localhost ~]# date ; dd if=/dev/zero of=/root/testfile bs=1k count=100000 ;

dd命令 磁盘复制(主要用于)/数据复制,可以复制特殊命令特殊文件也能复制分区甚至整个硬盘
cp只能复制文件

[root@localhost ~]# ls anaconda-ks.cfg && echo yes
[root@localhost ~]# ls /root/test || echo no
[root@localhost ~]# 命令 && echo yes || echo no

2)管道符
[root@localhost ~]# 命令1 | 命令2
#命令1的正确输出作为命令2的操作对象

[root@localhost ~]# ll -a /etc/ | more
[root@localhost ~]# netstat -an | grep "ESTABLISHED"(more是分屏显示)(netstat查询所有的网络连接)

[root@localhost ~]# grep [选项] “搜索内容” 文件名
选项:
-i 忽略大小写
-n 输出行号
-v 反向查找
–color=auto 搜索出的关键字用颜色显示
例子: [root@localhost ~]# grep “root” /etc/passwd
#显示这个文件中的包含root关键字这行

通配符:

?                                       匹配一个任意字符
*                                        匹配0个或任意多个任意字符,可以匹配任何内容
[]                                       匹配中括号中的任意一个字符。[abc]代表一定匹配一个字符,或者a或者b或者c
[-]                                      匹配中括号中任意一个字符,-代表一个范围,[a-z]代表匹配一个小写字母

[^]                                      逻辑非,表示匹配不是中括号内的一个字符,`[^0-9]`代表匹配一个不是数字的字符  

通配符 作用

Bash中其他特殊符号
‘…’:里面为普通字符(特殊字符也会被失去原有意义)
‘’…‘’ :除$(美元符号)、\(反斜杠)、’(单引号)、和”(双引号)之外,均认作普通字符
$()和 反引号 `` :这两个命令都用作命令替换(commandsubstitution),在Bash中,反引号包括起来的内容是系统命令,会先执行它
\:转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符,如$将输出“$”符号,而不当做是变量引用

反引号与$()
[root@localhost ~]# echo 'ls'
[root@localhost ~]# echo $(date)

Bash的变量
1)什么是变量:
变量是计算机内存的单元,其中存放的值可以改变。当shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。使用变量可以保存有用信息,使系统获知用户相关设置,变量也可以用于保存暂时信息。

2)变量设置规则:
变量名称可以由字母,数字和下划线组成,但是不能以数字开头
在Bash中,变量的默认类型都是字符串型,如要进行数值运算,则必须制定变量类型为数值型
变量用等号连接值,等号左右两侧不能有空格
变量的值如果有空格,需要使用单引号或双引号包括
在变量的值中,可以使用“\”转义符
如果需要增加变量的值,那么可以进行变量值的叠加,不过变量需要用双引号包含"$变量名"或用 ${变量名}包含。
如果是把命令的结果作为变量值赋予变量,则需要使用反引号或 $()包含命令
环境变量名建议大写,便于区分

3)变量分类:
用户自定义变量
环境变量:这种变量中主要保存的是和系统操作环境相关的数据
位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的
预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的

4)本地变量

变量定义
[root@localhost ~]# name="lvyou"
变量叠加
[root@localhost ~]# aa=123
[root@localhost ~]# aa="$aa"456
[root@localhost ~]# aa=${aa}789
(就是用户自定义变量)

变量调用 echo $name
变量查看 set
变量删除 unset name

环境变量是什么:
用户自定义变量只是在当前的Shell中生效,而环境变量会在当前Shell和这个Shell的所有子Shell当中生效,如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的Shell中生效

设置环境变量
export 变量名=变量值
#申明变量

env
#查询变量

unset变量名
#删除变量

pstree命令
#确定进程树

系统常见环境变量:
PATH:系统查找命令的路径

[root@localhost ~]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

PATH="$PATH":/root/sh
#PATH变量叠加

PS1:定义系统提示符的变量
\d:显示日期,格式为“星期 月 日”
\h:显示简写主机名,默认为localhost
\t:显示24小时制时间,HH:MM:SS
\T:12小时制,HH:MM:SS
\A:24小时制,HH:MM
\u:显示当前用户名
\w:显示当前所在目录的完整名称
\W:显示当前所在目录的最后一个目录
#:执行的第几个命令
\$:提示符,root用户显示“#”普通用户“$”

位置参数变量

位置参数变量                                   作用
$n                                     n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,${10}
$*                                     这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
$@                                     这个变量也代表命令命令行中所有的参数,不过$@把参数区分对待
$#                                     这个变量代表命令行中所有参数的个数

例子:

#!/bin/bash
echo "A total of $# parameters"

#使用$#代表所有参数的个数
echo "The parameters is: $*"

#使用$*代表所有的参数
echo"The parameters is: $@"

#使用$@也代表所有参数

预定义变量:
预定义变量 作用
$? 最后一次执行的命令的返回状态,如果此值为0,证明上一个命令正确执行,非0则证明上一个命令执行不正确
$$ 当前进程的进程号(PID)
$! 后台运行的最后一个进程的进程号(PID)

[root@localhost sh]# ls
canshu1.sh canshu2.sh canshu3.sh canshu4.sh hello.sh
[root@localhost sh]# echo $?
0
[root@localhost sh]# lsgdags
-bash: lsgdags: command not found
[root@localhost sh]# echo $?
127

命令不存在时报错为127

#!/bin/bash
#Author: shenchao (E-mail:shenchao@lampbrother.net)

echo "The current process is $$"
#输出当前进程的PID
#这个PID就是variable.sh这个脚本执行时,生成的进程PID

find /root -name hello.sh &
#使用find命令在root目录下查找hellowsh文件
echo"The last one Daemon process is $!"

Linux中&符代表后台执行(进程没有终止,放在后台执行),例如windows中的最小化

接收键盘输入:
[root@localhost ~]# read [选项] [变量名]
选项
-p “提示信息”:在等待read输入时,输出提示信息
-t 秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间
-n 字符数:read命令只接受指定的字符数,就会执行
-s:隐藏输入的数据,适用于机密信息的输入

#!/bin/bash
#Author: shenchao (E-mail:sc@lamp.net)
read -t 30 -p "please input your name:" name
#提示“请输入姓名”并等待30秒,把用户的输入保存入变量name中echo"Name is $name"

read -s -t 30 -p "Please enter your age:"age
#年龄是隐私,所以我们用“-s”选项隐藏输入
echo“Age is $ageecho -e "\n"

read -n 1 -t 30 -p "Please select your gender[M/F]:" gender
#使用“-n 1”选项只接收一个输入字符就会执行(都不用输入回车)
echo -e "\n"
echo "sex is $gender"

(-p -t 写read必须有 -n -s看需要)

Bash的运算符
1.数值运算与运算符 2.变量测试与内容替换
1)declear声明变量类型
[root@localhost ~]# declear [+/-] [选项] 变量名
选项:
-:给变量设定类型属性
+:取消变量的类型属性
-i:将变量声明为整数型(integer)
-x:将变量声明为环境变量
-p:显示指定变量的被声明的类型
2)数值运算-方法1:

[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
#给变量aa和bb赋值
[root@localhost ~]# declare -i cc=`$aa+$bb`
[root@localhost ~]# echo $cc

方法2:expr或let数值运算工具

[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
#给变量aa和bb赋值
[root@localhost ~]# dd=`$(expr $aa + $bb)`
#dd的值是aa和bb的和。注意“+”号左右两侧必须有空格
[root@localhost ~]# echo $dd
方法3:"$((运算符))“或"$[运算符][root@localhost ~]# aa=11
[root@localhost ~]# bb=22
[root@localhost ~]# ff=$(($aa+$bb))
[root@localhost ~]# gg=$[$aa+$bb]
[root@localhost ~]# echo $ff

运算符 说明 举例

  • 加法 expr $a + $b 结果为 30。
  • 减法 expr $a - $b 结果为 -10。
  • 乘法 expr $a \* $b 结果为 200。
    / 除法 expr $b / $a 结果为 2。
    % 取余 expr $b % $a 结果为 0。
    = 赋值 a=$b 将把变量 b 的值赋给 a。
    == 相等。用于比较两个数字,相同则返回 true。 [ $a == $b ] 返回 false。
    != 不相等。用于比较两个数字,不相同则返回 true。 [ $a != $b ] 返回 true。

变量测试与内容替换
在这里插入图片描述

例子:测试x=$ {y-新值}

[root@localhost ~]# unset y
#删除变量y
[root@localhost ~]# x=${y-new}
#进行测试
[root@localhost ~]# echo $x
new
#因为变量y不存在,所以x=new
[root@localhost ~]# y=“”
#给变量y赋值为空
[root@localhost ~]# x=${y-new}
#进行测试
[root@localhost ~]# echo $x

环境变量配置文件
1.环境变量配置文件简介2.环境变量配置文件作用3.其他配置文件和登录信息
1)source命令
[root@localhost ~]# source 配置文件

[root@localhost ~]# . 配置文件

2.环境变量配置文件简介
环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量,比如PATH,HISTSIZE,PS1,HOSTNAME等默认环境变量

1./etc/profile 2. /etc/profile.d/*.sh 3. ~/.bash_profile 4. ~/.bashrc 5. /etc/bashrc
1.2.5 每个用户登录都会读取这几个配置文件针对环境变量的配置
~代表家目录 每个用户都有自己的家目录
3和4只对当前用户生效,因为是.开头所以是隐藏文件
环境变量配置文件调用顺序:

在这里插入图片描述

/etc/profile的作用:
USER变量:
LOGNAME变量:
MAIL变量:
PATH变量:
HOSTNAME变量:
HISTSIZE变量:
umask: (umask主机名)
调用/etc/profile/*.sh文件
(当前用户名,登录用户名,当前用户邮箱)umask查询当前的UID

~/.bash_profile的作用:
调用了~/.bashrc文件
在PATH变量后面加入了“:$HOME/bin”这个目录

注销时生效的环境变量配置文件: ~/.bash_logout
其他配置文件: ~/bash_history (帮助排错)

shell登录信息
本地终端欢迎信息:/etc/issue
转义符 作 用
\d 显示当前系统日期
\s 显示操作系统名称
\1 显示登录的终端号,这个转义符比较常用
\m 显示硬件体系结构,如i386、i686等
\n 显示主机名
\o 显示域名
\r 显示内核版本
\t 显示当前系统时间
\u 显示当前登录用户的序列号

远程终端欢迎信息:/etc/issue.net
转义符在/etc/issue.net文件中不能使用
是否显示此欢迎信息,由ssh的配置文件/etc/ssh/sshd_config决定,加入“Banner/etc/issue.net”行才能显示(记得重启SSH服务)
service sshd restart(重启ssh服务)

登录后欢迎信息: /etc/motd
不管是本地登录,还是远程登录,都可以显示此欢迎信息

正则表达式与通配符:
正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep,awk,sed等命令可以支持正则表达式。
通配符用来匹配复合条件的文件名,通配符是完全匹配,ls,find,cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配

(通配符匹配文件名* ? [],正则表达式匹配字符串)

[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog test_rule.txt
[root@localhost ~]# touch aa
[root@localhost ~]# touch aabb
[root@localhost ~]# ls aa
aa
[root@localhost ~]# ls aa*
aa  aabb
[root@localhost ~]# grep "size" anaconda-ks.cfg
#part /boot --fstype=ext4 --size=200
#part /home --fstype=ext4 --size=2000
#part swap --size=512
#part / --fstype=ext4 --grow --size=200

基础正则表达式:
在这里插入图片描述
“*”前一个字符匹配0次,或任意多次
grep "a*" test_rule.txt
#匹配所有内容,包括空白行
grep "aa*"test_rule.txt
#匹配至少包含有一个a的行
grep "aaa*" test_rule.txt
#匹配最少包含两个连续a的字符串
grep "aaaaaa*" test_rule.txt
#匹配最少包含四个连续a的字符串

“.”匹配除了换行符外任意一个字符
grep "s..d" test_rule.txt
#"s…d"会匹配在s和d这两个字母之间一定有两个字符的单词
grep "s.*d" test_rule.txt
#匹配在s和d字母之间有任意字符
grep".*" test_rule.txt
#匹配所有内容

“^”匹配行首,“$”匹配行尾

grep "^M" test_rule.txt
#匹配以大写M开头的行
grep"n&" test_rule.txt
#匹配以小写n结尾的行
grep -n "^$" test_rule.txt
#会匹配空白行

“[]”匹配中括号中指定的任意一个字符,只匹配一个字符
grep "s[ao]id" test_rule.txt
#匹配s和i字母中,要不是a,要不是o
grep "[0-9]" test_rule.txt
#匹配任意一个数字
grep "^ [a-z]" test_rule.txt
#匹配用小写字母开头的行

“[^]”匹配除中括号的字符以外的任意一个字符
grep "^[^a-z]" test_rule.txt
#匹配不用小写字母开头的行
grep "^[^a-zA-Z]" test_rule.txt
#匹配不用字母开头的行

“{n}”表示其前面的字符恰好出现n次
grep"a\{3\}" test_rule.txt
#匹配a字母连续出现三次的字符串
grep"[0-9]\{3\}" test_rule.txt
#匹配包含连续的三个数字的字符串

"{n,}"表示其前面的字符出现不小于n次
grep "^[0-9]\{3,\}[a-z]" test_rule.txt
#匹配最少用连续三个数字开头的行

“{n,m}”匹配其前面的字符至少出现n次,最多出现m次
grep "sa\{1,3}i" test_rule.txt
#匹配在字母s和字母i之间最少一个a,最多三个a

Linux服务管理
服务的分类:
RPM包默认安装的服务:1.独立的服务2.基于xinetd服务
1.独立的服务
源码包安装的服务
查询已安装的服务:
RPM包安装的服务

[root@localhost ~]#chkconfig --list
#查看服务自启动状态,可以看到所有RPM包安装的服务

源码包安装的服务(查看服务安装位置,一般是/usr/local/下)

Linux系统7个默认运行级别:
0代表关机 1代表单用户 2代表不完全多用户 3字符界面 4未分配 5图形界面 6代表重启动
查看服务在当前系统中已经运行:ps aux

RPM安装服务和源码包安装服务的区别:
安装位置不同,源码包安装在指定位置,一般是/usr/local/;RPM包安装在默认位置中

删除RPM包:rpm -e 包名

/etc/init.d/:启动脚本位置
/etc/sysconfig/:初始化环境配置文件位置
/etc/:配置文件位置
/etc/xinetd.conf:xinetd配置文件
/etc/xinetd.d/:基于xinetd服务的启动脚本
/var/lib/:服务产生的数据放在这里
/var/log/:日志

2)独立服务的启动
/etc/init.d/独立服务名 start|stop|status|restart
service 独立服务名 start|stop|status|restart

(status查询服务状态)(第一个是标准启动服务方式,第二个红帽专有的)
查询命令:service --status-all 列出系统中所有rpm包已经安装的的服务状态

3)独立服务的自启动
chkconfig [--level 运行级别] [独立服务名] [on|off]
修改/etc/rc.d/rc.local文件
使用ntsysv命令管理自启动

chkconfig --level 2345 httpd on
ntsysv命令是红帽专有
修改/etc/rc.d/rc.local文件是标准方法

2.基于xinetd服务(xinetd超级守护进程)
如今xinted服务不常使用(了解就好)

源码包服务的管理
1.源码包安装服务的启动
使用绝对路径,调用启动脚本来启动。不同的源码包的启动脚本不同,可查看源码包的安装说明,查看启动脚本的方法。
/usr/local/bin/apachect1 start|stop
2.源码包服务的自启动
[root@localhost ~]# vi /etc/rc.d/rc.local 加入 /usr/local/apache2/bin/apachect1 start
3.让源码包被服务管理命令识别
让源码包的apache服务能被service命令管理启动
ln -s /usr/local/apach2/bin/apachectl /etc/init.d/apache
(链接)

让源码包的apache服务能被chkconfig与ntsysv命令管理自启动
vi /etc/init.d/apache
#chkconfig: 35 86 76
#指定httpd脚本可以被chkconfig命令管理。格式为:chkconfig: 运行级别 启动顺序 关闭顺序
#description: source package apache
#说明,内容随意

[root@localhost ~]# chkconfig --add apache
#把源码包apache加入chkconfig命令

Linux系统管理
1.进程管理 2.工作管理 3.系统资源查看 4.系统定时任务
1)进程:进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
2)进程管理的作用:判断服务器健康状态 查看系统中所有进程 杀死进程
3)查看系统中所有进程

[root@localhost ~]# ps aux
#查看系统中所有进程,使用BSD操作系统格式
[root@localhost ~]# ps -le
#查看系统中所有进程,使用Linux标准命令格式

USER:该进程是那个用户产生的
PID:该进程的ID号
%CPU:该进程占用cpu资源的百分比,占用越高,进程越耗费资源
%MEM:该进程占用物理内存的备份比,占用越高,进程越耗费资源
VSZ:该进程占用虚拟内存的大小,单位KB
RSS:该进程占用物理内存的大小,单位KB
TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,1-6是本地的字符界面终端,7是图形终端。pts/0-255代表虚拟终端

STAT:进程状态。常见的状态有,R:运行S:睡眠T:停滞状态s:包含子进程+:位于后台
START:该进程的启动时间
TIME:该进程占用CPU的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名

4)查看系统健康状态
[root@localhost ~]# top [选项]
选项
-d: 指定每隔几秒更新,默认3s
在top命令的交互模式中可以执行的命令:
?或h: 显示交互模式的帮助
p: 以cpu使用率排序(默认)
M: 以内存使用率排序
N: 以PID排序
q: 退出top

在这里插入图片描述
[
第一行信息为任务队列信息
内容 说明
12:26:46 系统当前时间
up 1 day,13:32 系统的运行时间,本机已运行1天13小时32分钟
2 users 当前登陆了两个用户
load average: 0.00, 0.00, 0.00 系统在之前1分钟,5分钟,15分钟的平均负载,一般认为小于1时,负载较小。如果大于1时,系统已经超出负荷
第二行为进程信息
内容 说明
Tasks:95 total 系统中的进程总数
1 running 正在运行的进程数
94 sleeping 睡眠的进程
0 stopped 正在停止的进程
0 zombie 僵尸进程,如不是0,需要手工检查僵尸进程
第三行为cpu信息
内容 说明
cpu(s):0.1%us 用户模式占用的cpu百分比
0.1%sy 系统模式占用的cpu百分比
0.0%ni 改变过优先级的用户进程占用的cpu百分比
99.7%id 空闲cpu的百分比
0.1%wa 等待输入/输出的进程的占用cpu百分比
0.0%hi 硬中断请求服务占用的cpu百分比
0.1%si 软中断请求服务占用的cpu百分比
0.0%st st(steal time)虚拟时间百分比,就是当有虚拟机时,虚拟cpu等待实际cpu的时间百分比
第四行为物理内存信息
内容 说明
Mem:625344k total 物理内存的的总量,单位KB
571504k used 已经使用的物理内存数量
53840k free 空闲的物理内存数量
65800k buffers 作为缓冲的内存数量
第五行为交换分区(swap)信息
内容 说明
swap:524280k total 交换分区(虚拟内存)的总大小
0k used 已经使用的交换分区大小
524280k free 空闲交换分区的大小
409280k cached 作为缓存的交换分区大小
]

5)查看进程树
[root@localhost ~]# pstree [选项]
选项
-p:显示进程PID
-u:显示进程所属用户
进程管理-终止命令:kill -l #查看可用的进程信号
(kill杀死终止进程命令)

信息代号 信息名称 说明
1 SIGHUP 该信号让进城立即关闭,然后重新读取配置文件之后重启
2 SIGINT 该程序终止信号,用于终止前台进城,相当于输出ctrl+c快捷键
8 SIGFPE 在发生致命的算术运算错误时,不仅包含浮点运算错误,还包括溢出及除数为0等其他所有的算术错误
9 SIGKILL 用来立即结束程序的运行,本信号不能被阻塞,处理和忽略,一般用于强制终止进程
14 SIGALRM 时钟定时信号,计算的是实际时间或时钟时间,alarm函数使用该信号
15 SIGTERM 正常结束进程的信号,kill命令的默认信号
18 SIGCONT 该信号可以让暂停的进程恢复执行,本信号不能被阻断
19 SIGSTOP 该信号可以暂停前台进程,相当于输入ctrl+z快捷键,本信号不能被阻断

[root@localhost ~]# kill -1 22354
#重启进程
[root@localhost ~]# kill -9 22368
#强制杀死进程

killall命令:
[root@localhost ~]# killall [选项] [信号] 进程名
#按照进程名杀死进程
选项:
-i:交互式,询问是否要杀死某个进程
-I:忽略进程名的大小写

pkill命令:
[root@localhost ~]# pkill [选项] [信号] 进程名
#按照进程名终止进程
选项:
-t 终端号: 按照终端号踢出用户

[root@localhost ~]# w
#使用w命令查询本机已经登录的用户
[root@localhost ~]# pkill -t -9 pts/1
#强制杀死从pts/1虚拟终端登陆的进程

(pkill -9 -t tty1)

工作管理
把进程放入后台:
(1)tar -zcf etc.tar.gz /etc & #在执行某一个命令之后加入&符(在后台还在运行)
(2)top #在top命令执行的过程中,按下ctrl+z快捷键 (放入后台后就暂停了)

查看后台的工作:
[root@localhost ~]# jobs [-l]
选项:
-l: 显示工作的PID
注:“+”号代表最近一个放入后台的工作,也是工作恢复时,默认恢复的工作。“-”号代表倒数第二个放入后台的工作

将后台暂停的工作恢复到前台执行:
[root@localhost ~]# fg %工作号
参数:
%工作号: %号可以省略,但是注意工作号和PID的区别

将后台暂停的工作恢复到后台执行:
[root@localhost ~]# bg %工作号
注:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行
(按q正常退出top命令)

系统资源查看
1)vmstat命令监控系统资源
[root@localhost ~]# vmstat [刷新延时 刷新次数]
例子:

[root@localhost ~]# vmstat 1 3

#相当于把top命令与ps命令结合
2)dmesg开机时内核检测信息
[root@localhost ~]# dmesg

[root@localhost ~]# dmesg | grep cpu

#dmesg | grep eth0 #查看网卡

3)free命令查看内存使用状态
[root@localhost ~]# free [-b|-k|-m|-g]
选项:
-b:以字节为单位显示
-k:以KB为单位显示(默认)
-m:以MB为单位显示
-g:以GB为单位显示
在这里插入图片描述
缓存和缓冲的区别:
缓存是用来加速数据从硬盘中“读取”的,缓冲是用来加速数据“写入”硬盘的。
(buffers缓冲,cached缓存)
4)查看cpu信息

[root@localhost ~]# cat/proc/cpuinfo

#更详细的cpu信息,proc是内存的挂载
5)uptime命令
[root@localhost ~]# uptime #显示系统的启动时间和平均负载,也就是top命令的第一行,w命令也可以看到这个数据。 6)查看系统与内核相关信息[root@localhost ~]# uname [选项]`
选项:
-a: 查看系统所有相关信息
-r: 查看内核版本
-s: 查看内核名称

判断当前系统的位数

[root@localhost ~]# file /bin/ls

查询当前Linux系统的发行版本

[root@localhost ~]# lsb_release -a

7)列出进程打开或使用的文件信息
[root@localhost ~]# lsof [选项]
#列出进程打开或使用的文件信息
选项:
-c 字符串:只列出以字符串开头的进程打开的文件
-u 用户名:只列出某个
-p pid:列出某个PID进程打开的文件

系统定时任务
1)crond服务管理与访问控制(这个有问题!)

[root@localhost ~]# service crond restart
[root@localhost ~]# chkconfig crond on
(这个d指的是后台守护进程)

2)用户的crontab设置
[root@localhost ~]# crontab [选项]
选项:
-e: 编辑crontab定时任务
-l: 查询crontab任务
-r: 删除当前用户所有的crontab任务

 [root@localhost ~]# crontab -e
 #进入crontab编辑界面。会打开vim编辑你的工作

*****执行的任务
项目 含义 范围
第一个“” 一小时中的第几分钟 0-59
第二个“
” 一天中第几个小时 0-23
第三个“” 一个月中第几天 1-31
第四个“
” 一年中第几个月 1-12
第五个“*” 一周中星期几 0-7(0和7都代表周日)

例子:
45 4 1,10,22 * * /etc/init.d/smb restart
#每月1、10、22日的4 : 45重启smb

我们用crontab -e进入当前用户的工作表编辑,是常见的vim界面。每行是一条命令。
crontab的命令构成为 时间+动作,其时间有分、时、日、月、周五种,操作符有

  • 取值范围内的所有数字
    / 每过多少个数字
  • 从X到Z
    ,散列数字

例子:
/5*** /bin/echo"11">>/tmp/test
552/sbin/shutdown -r now
051,10,15
/root/sh/autobak.sh

日志管理
1.日志管理简介 1.rsyslogd日志服务 3.日志轮替
1)日志管理
日志服务:
在CentOS6.x中日志服务已经由rsyslogd取代原先的syslogd服务。

rsyslogd的新特点:
基于TCP网络协议传输日志信息
更安全的网络传输方式
有日志消息的及时分析框架
后台数据库
配置文件汇总可以写简单的逻辑判断
与syslog配置文件相兼容

确定服务启动:(默认一般都是开启着的)

[root@localhost ~]# ps aux | grep rsyslogd  

#查看服务是否启动

[root@localhost ~]# chkconfig --list | grep rsyslog

#查看服务是否自启动

常见的日志作用:
日志文件 说明
/var/log/cron 记录了系统定时任务相关的日志
/var/log/cups/ 记录打印信息的日志
/var/log/dmesg 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/btmp 记录错误登陆的日志,使用lastb命令查看
/var/log/lastlog 记录系统中所有用户最后一次的登录时间的日志,lastlog命令查看
/var/log/mailog 记录邮件信息
/var/log/message 记录系统重要信息的日志,如果系统出现问题,首先检查此日志文件
/var/log/secure 记录验证和授权方面的信息,涉及账号和密码的程序都会记录:系统登录,sudo授权,添加用户修改用户密码都会记录于此
/var/log/wtmp 永久记录所有用户的登录,注销信息,记录系统启动,重启,关机事件,使用last命令查看
/var/log/utmp 只记录当前登录用户信息,使用w,who,users等命令来查询

(/var/log目录是保存系统默认日志)
查看该目录:cd /var/log/ ls

除了系统默认的日志之外,采用RPM方式安装的系统服务也会默认把日志记录在/var/log目录中(源码包安装的服务日志是在源码包指定目录中)。不过这些日志不是由rsyslogd服务来记录和管理的,而是各个服务使用自己的日志管理文档来记录自身日志

日志文件 说明
/var/log/httpd/ RPM包安装的apache服务的默认日志记录
/var/log/mail/ RPM包安装的邮件服务的额外日志目录
/var/log/samba RPM包安装的samba服务的日志目录
/var/log/sssd/ 守护进程安全服务目录

2.rsyslogd日志服务
1)日志文件格式
基本日志格式包含一下四列:
事件产生的时间
发生事件的服务器的主机名
产生事件的服务名或程序名
事件的具体信息
2)/etc/rsyslog.conf配置文件
authpriv.* /var/log/secure
#服务名称[连接符号]日至等级 日志记录位置
#认证相关服务.所有日志等级 记录在/var/log/secure日志中

服务名称:
服务名称 说明
auth 安全和认证相关信息
authpriv 安全和认证相关信息(私有的)
cron 系统定时任务cront和at产生的日志
daemon 和各个守护进程相关的日志
ftp ftp守护进程产生的日志
kern 内核产生的日志(不是用户进程产生的)
local10-local7 为本地使用预留的服务
lpr 打印产生的日志
mail 邮件收发信息
news 与新闻服务器相关的日志
syslog 与syslog服务产生的日志信息(服务名称已改为rsyslog)
user 用户等级类别的日志信息
uucp uucp子系统的日志信息,uucp是早期linux系统进行数据传递的协议,后常用于新闻组服务中

日志等级
等级名称 说明
debug 一般的调试信息说明
info 基本的通知信息
notice 普通信息,有一定的重要性
warning 警告信息,还不会影响到服务或系统的运行
err 错误信息,可以影响到服务或系统运行了
crit 临界状况信息,比err等级还要严重
alert 警告信息,比crit还要严重,需立即采取行动
emerg 疼痛等级信息,系统已经无法使用
(由低到高)

日志记录位置:
日志文件的绝对路径,如“/var/log/secure”
系统设备文件,如“dev/lp0”
转发给远程主机,如“@192.168.0.210:514”
用户名,如“root”
忽略或丢弃日志,如“~”

3.日志轮替
日志文件的命名规则:
如果配置文件拥有“dateext”参数,日志会用日期为日志文件的后缀,
如果配置文件没有“dateext”参数,那么日志就需要改名,当第一次进行日志轮替时,当前的“secure”日志会自动改为“secure.1”然后新建“secure”日志

logrotate配置文件
参数 参数说明
dail 日志轮替周期是每天
weekly 日志轮替周期是每周
monthly 日志轮替周期是每月
rotate 数字 保留的日志文件的个数,0指没有备份
compress 日志轮替时,旧的日志进行压缩
create mode owner group 建立新日志,同时指定新日志的权限与所有者和所属组,如create 0600 root utmp

(vi /etc/logrotate.conf)

mail address 当日志轮替时,输出内容通过邮件发送到指定的邮件地址,如mail sc@lamp.net
missingok 如果日志不存在,则忽略该日志报警信息
notifempty 如果日志为空文件,则不进行日志轮替
minsize 大小 日志轮替的最小值,也就是日志一定要达到这个最小值才会轮替,否则就算时间达到也不轮替
size 大小 日志只有大于指定大小才进行日志轮替,而不是按照时间轮替。size 100k
dateext 使用日期作为日志轮替文件的后缀,secure-20130605

3)把apache日志加入轮替

[root@localhost ~]# vi /etc/logrotate.conf
/usr/local/apache2/logs/access_log{
daily
create
rotate 30
}

4)logrotate命令
[root@localhost ~]# logrotate [选项] 配置文件名
选项:
如果此命令没有选项,则会按照配置文件中的条件进行日志轮替
-v:显示日志轮替过程
-f:强制进行日志轮替(不管日志轮替的条件是否已经符合)

(RPM包不需要手工做轮替,源码包需要重点是阿帕奇):打开它的配置文件,把日志相对应的大括号写入,保存退出

启动管理
1.运行级别:
0 关机
1 单用户模式(windows的安全模式,主要用于系统修复)
2 不完全的命令行模式,不含NFS服务
3 完全的命令行模式,就是标准字符界面
4 系统保留
5 图形模式
6 重启动

2.运行级别命令:

[root@localhost ~]# runlevel
#查看运行级别命令
[root@localhost ~]# init 运行级别
#改变运行级别命令

3.系统默认运行级别:

[root@localhost ~]# vim /etc/inittab
id:3:initdefault:
#系统开机后直接进入哪个运行级别

initramfs内存文件系统:
CentOS6.x中使用initramfs内存文件系统取代了5.x中的initrd RAM Disk。他们作用类似,可以通过启动引导程序加载到内存中,然后加载启动过程中所需要的内核模块,比如USB,SATA,SCSI硬盘的驱动和LVM,RAID文件系统的驱动

mkdir /tmp/initramfs
#建立测试目录
cp /boot/initramfs-2.6.32-279.el6.i686.img /tmp/initramfs/
#复制initramfs文件
cd initramfs-2.6.32-279.el6.i686.img
mv initramfs-2.6.32-279.el6.i686.img initramfs-2.6.32-279.el6.i686.img.gz
#修改文件的后缀名为.gz
gunzip initramfs-2.6.32-279.el6.i686.img.gz
#解压缩
file initramfs-2.6.32-279.el6.i686.img.gz
cpio -ivcdu < initramfs-2.6.32-279.el6.i686.img
#解压缩

调用/etc/init/rcS.conf配置文件
主要功能两个:
先调用/etc/rc.d/rc/sysinit,然后由/etc/rc.d/rc/sysinit配置文件进行Linux系统初始化
然后再调用/etc/inittab,然后由/etc/inittab配置文件确定系统的默认运行级别

由/etc/rc.d/rc.sysinit初始化
1.获得网络环境
2.挂载设备
3.开机启动画面Plymouth(代替了RHGB)
4.判断是否启用SELinux
5.显示开机过程中欢迎界面
6.初始化硬件
7.用户自定义模块的加载
8.配置内核的参数
9.设置主机名
10.同步存储器
11.设备映射器及相关的初始化
12.初始化软件磁盘阵列(RAID)
13.初始化LVM的文件系统功能
14.检验磁盘文件系统(fsck)
15.设置磁盘配额(quota)
16.重新以可读写模式挂载系统磁盘
17.更新quota(非必要)
18.启动系统虚拟机随机数生成器
19.配置机器(非必要)
20.清除开机过程当中的临时文件
21.创建ICE目录
22.启动交换分区(swap)
23.将开机信息写入/var/log/dmesg文件中

在这里插入图片描述
启动引导程序grub
grub中分区表示:
硬盘 分区 linux中设备文件名 grub中设备文件名
第一块SCSI硬盘 第一个主分区 /dev/sda1 hd(0,0)
第二个主分区 /dev/sda2 hd(0,1)
扩展分区 /dev/sda3 hd(0,2)
第一个逻辑分区 /dev/sdb5 hd(0,4)
第二块SCSI硬盘 第一个主分区 /dev/sdb1 hd(1,0)
第二个主分区 /dev/sdb2 hd(1,1)
扩展分区 /dev/sdb3 hd(1,2)
第一个逻辑分区 /dev/sdb5 hd(1,4)

2.grub配置文件

vi /boot/grub/grub.conf
default=0#默认启动第一个系统
timeout=5#等待时间,默认5s
splashimage=(hd0,0)/grub/splash.xpm.gz#这里是指定grub启动时的背景图像文件的保存位置的
hiddenmenu   #隐藏菜单

备份与恢复
1.Linux系统需要备份的数据
/root/目录:
/home/目录:
/var/spool/mail/目录:
/etc/目录:
其他目录:

安装服务的数据
apache需要备份的数据:
配置文件
网页主目录
日志文件
MySQL需要备份的数据:
源码包安装的MySQL:/usr/localmysql/data/
RPM安装的MySQL:/var/lib/mysql/

备份策略:完全备份,增量备份,差异备份
(完全备份:完全备份就是指把所有的需要备份的数据全部备份,完全备份可以备份整块硬盘,整个分区或某个具体的目录)
在这里插入图片描述
在这里插入图片描述
dump命令:
[root@localhost ~]# dump [选项] [备份之后的文件名] [原文件或目录]
选项:
-level:0-9十个备份级别
-f 文件名:指定备份之后的文件名
-u:备份成功之后,把备份时间记录在/etc/dumpdates文件
-v:显示备份过程中更多的输出信息
-j:调用bzlib库压缩备份文件,其实就是把备份文件压缩为.bz2格式
-W:显示允许被dump的分区的备份等级及备份时间

备份分区:
dump -0uj -f /root/boot.bak.bz2 /boot/
#备份命令,先执行一次完全备份,并压缩和更新备份时间
cat /etc/dumpdates
#查看备份时间文件
cp install.log /boot/
#复制日志文件到/boot分区
dump -1 uj -f /root/boot.bak1.bz2 /boot/
#增量备份/boot分区,并压缩
dump -W
#查询分区的备份时间及备份级别

备份文件或目录:
dump -0j -f /root/etc.dump.bz2 /etc/
#完全备份/etc/目录,只能使用0级别进行完全备份,而不再支持增量备份

restore命令
[root@localhost ~]# restore [模式选项] 选项
模式选项:restore命令常用模式有以下四种,这四种模式不可混用
-C:比较备份数据和实际数据的变化
-i:进入交互模式,手工选择需要备份的文件
-t:查看模式,用于查看备份文件中拥有哪些数据
-r:还原模式,用于数据还原
-f:指定备份文件的文件名

还原模式:
#还原boot.bak.bz2分区备份
#先还原完全备份的数据
mkdir boot.test
cd boot.test/
restore -r -f /root/boot.bak.bz2
#解压缩
restore -r -f /root/boot.bak1.bz2
#恢复增量备份数据 (还原分区)

#还原/etc/目录的备份etc.dump.bz2
restore -r -f etc.dump.bz2
#还原etc.dump.bz2备份 (还原文件)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值