备份与恢复 —— dump 和 restore 命令
dump 命令
dump[选项] 备份之后的文件名 源文件或目录
选项 | 说明 |
-level | 0-9 十个备份级别,文件和目录只支持 0 级别 |
-f 文件名 | 指定备份之后的文件名 |
-u | 备份成功之后,把备份文件记录在 /etc/dumpdates 文件 |
-v | 显示备份中更多的输出信息 |
-j | 调用bzlib库压缩备份文件,将备份文件压缩为 .bz2 格式 |
-W | 显示允许被 dump 的分区的备份等级及备份时间 |
restore 命令
restore[模式选项][选项]
模式选项(不能混用) | 说明 |
-C | 比较备份数据和实际数据的变化 |
-i | 进入交互模式,手工选择需要恢复的文件 |
-t | 查看模式,用于查看备份文件中拥有哪些数据 |
-r | 还原模式,用于数据还原 |
选项 | 说明 |
-f 文件名 | 指定备份文件的文件名 |
备份与恢复 —— 备份概述
Linux 系统需要备份的数据
- /root/ 目录
- /home/目录
- /var/spool/mail/目录
- /etc/目录
- 其他目录
安装服务的数据
备份策略
- 完全备份:耗费系统资源。
- 增量备份:只备份新增数据。
- 差异备份:每次备份都和完全备份数据相比,是上面两种策略的折中。
启动管理 —— 启动引导程序 grub
Grub 配置文件
grub 中分区表示
grub 配置文件
vi /boot/grub.grub.conf
启动管理 —— CentOS 6.x 启动管理
系统运行级别
选项 | 说明 |
0 | 关机 |
1 | 单用户模式,与windows安全模式类似,主要用于系统修复 |
2 | 不完全的命令行模式,不含 NFS 服务 |
3 | 完全的命令行模式,标准字符界面 |
4 | 系统保留 |
5 | 图形模式 |
6 | 重启动 |
运行级别命令
runlevel
# 查看运行级别命令
init 运行级别
# 改变运行级别命令
系统默认运行级别
vim /etc/inittab
id:3:initdefault:
系统启动过程
日志管理 —— 日志轮替
日志按天记录 + 仅保留最近一段时间的日志。
日志文件命名规则
- 在配置文件中加入 dateext 参数,实现日期作为文件后缀。
“secure-20130605” - 如果配置文件中没有 dataext 参数,就会使用 数字后缀。
logrotate 配置文件
/etc/logrotate.conf
源码包的程序需要手工配置日志。
logrotate 命令
logrotate [选项] 配置文件名
选项 | 说明 |
-v | 显示日志轮替过程 |
-f | 强制进行日志轮替,不管日志轮替条件是否已经符合。 |
日志管理 —— rsyslogd 日志服务
日志文件格式
基本日志格式包含以下四列:
- 事件产生的时间
- 发生事件的服务器的主机名
- 产生事件的服务名或程序名
- 事件的具体信息
/etc/rsyslog.conf 配置文件
#服务名称[连接符号]日志等级 日志记录位置
服务名称
连接符号
日志等级
日志记录位置
- 日志文件的绝对路径。“/var/log/secure”
- 系统设备文件。“/dev/lp0”
- 转发给远程主机。“@192.168.0.210:514”
- 用户名。“root”
- 忽略或丢弃日志。“~”
日志管理 —— 日志管理简介
日志服务
在 CentOS6.x 中日志服务已经由 rsyslogd 取代了原先的 syslogd 服务。rsyslogd 日志服务更加先进,功能更多。但是不论该服务的使用,还是日志文件的格式其实都是和 syslogd 服务相兼容的,所以学习起来基本和 syslogd 服务一致
rsyslogd 的新特点
- 基于 TCP 网络协议传输日志信息。
- 更安全的网络传输方式。
- 有日志消息的及时分析框架。
- 后台数据库。
- 配置文件中可以写简单的逻辑判断。
- 与 syslog 配置文件相兼容。
确定服务启动
ps aux | grep rsyslogd
# 查看服务自启动
chkconfig --list | grep rsyslog
# 查看服务是否自启动
常见日志的作用
RPM 包和源码包的日志文件
除了系统默认的日志之外,采用 RPM 方式安装的系统服务也会默认把日志记录在 /var/log/ 目录中(源码包安装的服务日志是在源码包指定目录中),不过这些日志不是由 rsyslogd 服务来记录和管理的,而是各个服务使用自己的日志管理文档来记录自身日志。
Linux 系统管理 —— 系统资源查看
vmstat 命令监控系统资源
vmstat [刷新延时 刷新次数]
dmesg 开机时内核检测信息
dmesg
dmesg | CPU
free 命令查看内存使用状态
free [选项]
选项 | 说明 |
-b | 以字节为单位显示 |
-k | 以KB为单位显示 |
-m | 以MB为单位显示 |
-g | 以GB为单位显示 |
缓存和缓冲的区别
简单来说缓存(cache)是用来加速数据从硬盘中“读取”的,而缓冲(buffer)是用来加速数据“写入”硬盘的。
查看 CPU 信息
cat /proc/cpuinfo
uptime 命令
uptime
# 显示系统的启动时间和平均负载,也就是 top 命令的第一行。
# w 命令也可以看到这个数据。
查看系统与内核相关信息
uname [选项]
选项 | 说明 |
-a | 查看系统所有相关信息 |
-r | 查看内核版本 |
-s | 查看内核名称 |
判断当前系统位数
file /bin/ls
查询当前 Linux 系统的发行版本
lsb_release -a
列出进程打开或使用的文件信息
lsof [选项]
选项 | 说明 |
-c 字符串 | 只列出以字符串开头的进程打开的文件 |
-u 用户名 | 只列出某个用户的进程打开的文件 |
-p pid | 列出某个 PID 进程打开的文件 |
Linux 的服务管理 —— 源码包安装服务的管理
源码包安装服务的启动
- 使用绝对路径,调用启动脚本来启动。不同的源码包的启动脚本不同。可以查看源码包的安装说明,查看启动脚本的方法。
/usr/local/apache2/bin/apachectl start|stop
源码包服务的自启动
vi /etc/rc.d/rc.local
# 添加
/usr/local/apache2/bin/apachectl start
让源码包服务被服务管理命令识别
- 让源码包的 apache 服务能被 service 命令管理启动。
ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache
让源码包的 apache 服务能被 chkconfig 与 ntsysv 命令管理自启动
Linux 的服务管理 —— RPM 包安装服务的管理
独立服务的管理
RPM 包安装的默认位置
位置路径 | 说明 |
/etc/init.d/ | 启动脚本位置 |
/etc/sysconfig/ | 初始化环境配置文件位置 |
/etc/ | 配置文件位置 |
/etc/xinetd.conf | xinetd 配置文件 |
/etc/xinetd.d/ | 基于xinetd服务的启动脚本 |
/var/lib/ | 服务产生的数据放在这里 |
/var/log/ | 日志 |
独立服务的启动
/etc/init.d/ 独立服务名 start|stop|status|restart|
service 独立服务名 start|stop|status|restart| # redHat
独立服务的自启动
chkconfig [--level 运行级别][独立服务名][on|off]
修改 /etc/rc.d/rc.local 文件 # 推荐
使用 ntsysv 命令管理自启动 # redHat
基于xinetd(超级守护进程)服务的管理
安装 xinetd 与 telnet
yum -y install xinetd
yum -y install telnet-server
xinetd 服务的启动
重启 xinetd 服务
service xinetd restart
xinetd 服务的自启动
chkconfig telnet on
ntsysv # redHat
启动和自启动通用。
Linux 的服务管理 —— 服务的简介和分类
服务简介与分类
服务的分类
Linux 服务
RPM包默认安装的服务
源码包安装的服务
独立的服务
基于 xinetd 服务
启动与自启动
服务启动:就是当前系统中让服务运行,并提供功能。
服务自启动:自启动是指让服务在系统开始或重启动之后,随着系统的启动而自动启动服务。
查询已安装的服务
- RPM 包安装的服务
chkconfig --list
# 查看服务自启动状态,可以看到所有 RPM 包安装的服务(运行级别),不能看源码包。
- 源码包安装的服务
查看服务安装位置,一般是 /usr/local/ 下
RPM 安装服务和源码包安装服务的区别
- RPM 安装服务和源码包安装服务的区别就是安装位置的不同。
- 源码包安装在指定位置,一般是在 /usr/local/
- RPM 包安装在默认位置中
Shell 编程 —— 字符串处理命令
- 排序命令 sort
sort [选项] 文件名
选项 | 说明 |
-f | 忽略大小写 |
-n | 以数值型进行排序,默认使用字符串型排序 |
-r | 反向排序 |
-t | 指定分隔符,默认是制表符 |
-k n[,m] | 按照指定的字段范围排序,从第 n 字段开始,m字段结束(默认到行尾) |
- 统计命令 wc
wc [选项] 文件名
选项 | 说明 |
-l | 只统计行数 |
-w | 只统计单词数 |
-m | 只统计字符数 |
Shell 编程 —— 字符串截取命令
cut 字段提取命令
grep 命令提取所在行。
cut [选项] 文件名
选项 | 说明 |
-f 列号 | 提取第几列 |
-d 分隔符 | 按照指定分隔符分隔列 |
printf 命令
每三个为一组。
Shell 基础 —— 环境变量配置文件
环境变量配置文件简介
- source 命令
source 配置文件 # 让配置文件直接生效,不然需要重新登陆才能生效
环境变量配置文件作用
其他配置文件和登录信息
- 注销时生效的环境变量配置文件。
~/.bash_logout - 其他配置文件
~/bash_history # 历史命令保存文件 - Shell 登录信息
本地终端欢迎信息 /etc/issue
远程终端欢迎信息:/etc/issue.net
登陆后欢迎信息:/etc/motd
不管是本地登录,还是远程登录,都可以显示此欢迎信息。
Shell 基础 —— Bash 的变量
用户自定义变量
环境变量
位置参数变量
预定义变量
- 预定义变量
- 接受键盘输入
权限管理 ——sudo 权限
- sudo 权限
root 把本来只能超级用户执行的命令赋予普通用户执行
sudo 的操作对象是系统命令 - sudo 使用
visudo
# 实际修改的是 /etc/sudoers 文件
root ALL=(ALL) ALL
# 用户名 被管理主机的地址(ALL:意味本机)=(可使用的身份,ALL:root) 授权命令(绝对路径)
# %wheel ALL=(ALL) ALL
# %组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
sudo -l # 查看被root赋予的命令,在执行命令时,开头加sudo
[普通用户@localhost~] sudo /sbin/shutdown -r now
权限管理 —— 文件系统属性 chattr 权限
- chattr 命令格式
chattr [+-=] [选项] 文件或目录名
… | 说明 |
+ | 增加权限 |
- | 删除权限 |
= | 等于某权限 |
选项 | 说明 |
i | 防止误操作 如果对文件设置 i 属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置 i 属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。 |
a | 如果对文件设置 a 属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置 a 属性,那么只允许在目录中建立和修改文件,但是不允许删除。vi 不能使用,只能使用 echo >> 方式追加。 |
- 查看文件系统属性
lsattr [选项] 文件名
选项 | 说明 |
-a | 显示所有文件和目录 |
-d | 若目标是目录,仅列出目录本身的属性,而不是子文件的。 |
权限管理 —— ACL权限
ACL 权限简介和开启
- 简介
ACL 权限:用来解决身份不足的问题。
属住/属组/其他人 - 查看分区 ACL 权限是否开启
一般情况下都默认开启。
dumpe2fs -h /dev/sda3
# dumpe2fs 命令是查询指定分区详细文件系统信息的命令选项
-h 仅显示超级块中的信息,而不显示磁盘块组的详细信息。
- 临时开启分区 ACL 权限
mount -o remount,acl
# 重新挂载根分区,并挂载加入acl权限
- 永久开启分区 ACL 权限
vi /etc/fstab
# 开机自动挂载文件
UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 default,acl 1 1
mount -o remount
# 系统启动自动检测该文件,如果内容错误,系统可能无法启动
# 重新挂载文件系统或重启系统,使修改生效
查看与设定 ACL 权限
- 查看 ACL 命令
getfacl 文件名
- 设定用户 ACL 权限命令
setfacl [选项] 文件名
选项 | 说明 |
-m | 设定 ACL 权限 |
-x | 删除指定的 ACL 权限 |
-b | 删除所有的 ACL 权限 |
-d | 设定默认 ACL 权限 |
-k | 删除默认 ACL 权限 |
-R | 递归设定 ACL 权限 |
setfacl -m u:testuser:rx /project/
- 设定组的 ACL 权限
setfacl -g u:testuser:rx /project/
最大有效权限和删除 ACL 权限
- 最大有效权限 mask
mask 是用来指定最大有效权限的。如果我给用户赋予了 ACL 权限,是需要和 mask 的权限 相与 才能得到用户的真正权限。
setfacl -m m:rx /project/
# 修改最大有效权限
- 删除 ACL 权限
setfacl -x u:用户名 文件名 # 删除指定用户的 ACL 权限
setfacl -x g:组名 文件名 # 删除指定用户组的 ACL 权限
setfacl -b 文件名 # 删除文件的所有的 ACL 权限
默认 ACL 权限和递归 ACL 权限 —— 针对目录
- 递归ACL权限
递归是在父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限。
setfacl -m u:用户名:权限 -R /project/
只对当前目录中的文件生效。
- 默认 ACL 权限
默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限。
只对新加入的文件有效。
setfacl -m d:u用户名:权限 文件名