<pre name="code" class="plain">2016/2/17
Shell
命令行解释器
强大的编程语言
解释执行的脚本语言
可直接调用linux系统命令
学习的是bsh文件
两种语法类型Bourne和C
两种语法彼此不兼容
Shell脚本执行方式
echo 输出命令
-e 支持反斜线控制的字符转换
echo -e "acd\bc" \b 退格删除 echo -e 代表支持特殊字符输出
\e[1; \e[0m 支持颜色输出
#!/bin/Bash
赋予执行权限,直接运行
chmod 755 hello.sh
./hello.sh
通过Bash调用执行脚本
bash hello.sh
dos2unix
从dos格式转换为unix格式 比如说回车不相同
history
-c 清空历史命令
-w 把缓存中的历史命令写入历史命令保存文件
~/.bash_history
历史命令默认保存1000条,可以在环境变量配置文件/etc/profile 中进行修改
!n
重复执行第几行命令
!字符串
重复执行最后一条命令
alias 别名=‘原命令’
alias
查询命令别名
让别名永久生效
vi /root/.bashrc
unalias 别名
删除别名
ctrl + u 删除光标前的命令
ctrl + y 粘贴
ctrl + r 命令的搜索
ctrl + d 退出当前终端
ctrl + c 终止当前终端
标准输入输出
设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/sdtout 1 标准输出
显示器 /dev/sdterr 2 标准错误输出
输出重定向
类型 符号 作用
标准输出重定向 命令 > 文件 以覆盖的方式,把命令的正确输出到指定的文件或设备当中。
命令 >> 文件 以追加的方式,把命令的正确输出到指定的文件或设备当中
标准错误输出重定向 错误命令 2>文件 以覆盖的方式,把命令的错误输出到指定的文件或设备当中。
错误命令 2>> 文件 以追加的方式,把命令的错误输出到指定的文件或设备当中
正确输出和错误输出同时保存 命令 > 文件 2>&1 以覆盖的方式,把命令的正确和错误保存到同一个文件当中。
命令 >> 文件 2>&1 以追加的方式,把命令的正确和错误保存到同一个文件当中。
命令 &> 文件 以覆盖的方式,把命令的正确和错误保存到同一个文件当中。
命令 &>> 文件 以追加的方式,把命令的正确和错误保存到同一个文件当中。
命令>>文件1 2>>文件2 把正确的输出追加到文件1中,把错误的输出追加到文件2中。
输入重定向
wc
-c 统计字节数
-w 统计单词数
-l 统计行数
wc < anaconda-ks.cfg
输出
行数 单词 字符数
wc << hello
碰到hello结束
多命令顺序执行
;多个命令顺序执行,命令之间没有任何逻辑联系。
&& 与
|| 或
实现硬盘的复制:
dd if=输入文件 of=输出文件 bs=字节数 count=个数
管道符
命令1 | 命令2
命令1的正确输出作为命令2的操作对象
连接人数
netstat -an | grep "ESTABLISHED"
grep
-i 忽略大小写
-n 输出行号
-v 反向查找
--color=auto 搜索出的关键字用颜色显示
grep "root" /etc/passwd
? 匹配一个任意字符
* 匹配0个或任意多个任意字符
[] 匹配中括号中任意一个字符 [abc]
[-] 匹配中括号中任意一个字符 -代表一个范围 [a-z]匹配一个小写字母
[^] 匹配不是中括号内的一个字符,[^0-9]代表匹配一个不是数字的字符
''单引号 在单引号中所有的特殊字符,如$和·都是没有特殊含义。
"" 双引号,在双引号中特殊符号没有特殊含义,但是$和· \是例外,拥有“调用变量值”
“引用命令” 和“转义符” 的特殊含义。
``反引号 系统命令
$() 和反引号作用一样,例如$(date)
# 在Sheel脚本中,代表注释
$ 用于调用变量的值,如需调用变量name的值时,需要$name的方式得到变量的值。
\ 转义符,跟在\后的特殊符号将失去特殊含义,变为普通字符,如\$ 将输出$,而不当做是变量引用。
变量:
计算机内存的单元,其中存放的值可以改变,
必须由字母、数字和下划线开头
变量的默认类型都是字符串型,如果要进行数值运算。则必须指定变量类型为数值型。
变量的值如果有空格,需要使用单引号或双引号
在变量的值中,可以使用"\"转义符
如果需要增加变量的值,那么可以进行变量值的叠加,不过变量需要用双引号包含“$变量名‘
或用${变量名}包括
用户自定义变量
echo "$name"123 变量的叠加赋值
查看变量 所有的变量
set
删除
unset name
环境变量
会在当前Shell和这个Shell的所有子Shell当中生效,如果把环境变量写入响应的配置文件,
那么这个环境变量就会在所有的Shell中生效。
export 变量名=变量值
#申明变量
env
#查询变量
unset 变量名
#删除变量
PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin
:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PATH="$PATH":/root/sh 定义系统环境变量
PS1='[\u@\h \W]\$ ' 定义系统提示符的变量
pstree 查询进程树
PATH 系统查找命令的路径
位置参数变量
$n n为数字,$0代表命令本身
$* 命令中所有的参数, 整体
$@ 命令行中所有的参数 单个
$# 命令行中所有参数的个数
预定义变量
$?
最后一次执行命令的返回状态,如果这个变量的值为0,证明上一个命令正确执行,
如果这个变量的值为非0,(具体是哪个数,由命令自己来决定),则证明上一个命令
不正确了。
$$ 当前进程的进程号(PID)
$! 后台运行的最后一个进程的进程号(PID)
接收键盘输入
read
-p "提示信息":
在等待read输入时,输出提示信息,read命令会一直等待用户输入,
使用此选项可以指定等待的时间。
-n 字符数:
read命令只接受指定的字符数,就会执行。
-s
隐藏输入的数据,适用于机密信息的输入,
-t
时间
数值运算与运算符
方法1:
declare 声明变量类型
- 给变量设定类型属性
+ 取消变量的类型属性
-i 将变量声明为整数型(integer)
-x 将变量声明为环境变量
-p 显示指定变量的被声明的类型
方法2:
expr或let数值运算工具
方法3:
$(())或 $[]
变量测试与内容替换
2016/10/22
环境变量配置文件 环境变量配置文件的作用
source 配置文件 强制性使得配置文件生效
. 配置文件 和 source的配置文件作用相同
对系统定义的默认环境变量,比如PATH、HISTSIZE、PSI
环境变量配置文件
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
以上三个目录是对所有的用户都生效的
~/.bash_profile
~/.bashrc
以上两个是只对当前用户生效的
其他环境变量配置文件
~/.bash_logout 注销时生效的环境变量配置文件
~/.bash_history 历史命令的配置文件
本地终端欢迎信息 /etc/issue
远程终端欢迎信息 /etc/issue.net ,显示欢迎信息由ssh的配置文件/etc/ssh/sshd_config决定,
加入“Banner/etc/issue.net”行才能显示(记得重启SSH服务)
/etc/motd
不管是本地登录,还是远程登录。都可以显示,登录后显示
Shell编程
基础正则表达式 .* 任意字符
linux 中 grep、awk、sed等都支持正则表达
* 前一个字符匹配0次或任意多次
. 匹配除了换行符外任意一个字符
^ 匹配行首
$ 匹配行尾
[] 匹配中括号中指定的任意一个字符
[^]匹配除中括号的字符以外的任意一个字符
\转义符号 用于取消特殊符号的含义
\{n\} 表示其前面的字符恰好出现n次
\{n,\}表示其前面的字符出现不小于n次
\{n,m\} 表示其前面的字符最少出现n次,最多出现m次
字符串截取
cut 文件名 有缺点 识别空格也为列
-f列号 提取第几列
-d分隔符 按照指定分隔符分割列
cat /etc/passwd | grep /bin/bash | grep -v root | cut -d ":" -f 1 提取用户名
printf 格式化输出命令
%ns 输出字符串 输出几个字符
%ni 输出几个整数
%m.nf m位n小数位置
printf '%s' $(cat student.txt)
awk
awk '条件{动作}....' 文件名
条件
x>10
动作
格式化输出
流程控制语句
awk '{printf $2 "\t" $3 "\n"}' install.log 文件中的第二列和第三列获取
获取Linux空间使用率
df -h | grep "sda1" | awk '{printf $5 "\n"}' | cut -d "%" -f 1
awk 'BEGIN{FS=":"}{print $1 "\t $3"}' /etc/passwd #FS 指定分隔符 BEGIN在开始前执行 END在结束后执行
sed
流编辑器 sed主要是用来将数据进行选取、替换、删除、新增命令
sed [选项] '[动作]' 文件名
选项
-n 把sed名称处理的数据输出到屏幕
-e 允许对输入数据应用多条sed命令
-i 用sed修改结果直接修改读取数据的文件,而不是由屏幕输出
动作
a\ 追加 sed '2,4a helllo' student.txt 删除第二行到第4行
c\ 行替换 sed '2,4c helllo' student.txt 删除第二行到第4行
i\ 插入 sed '2i helllo' student.txt
d 删除 sed '2,4i helllo' student.txt 删除第二行到第4行
p 打印 sed '2,4p helllo' student.txt 打印
s 字符替换 sed'3s/74/77' student.txt 74原数据 77本身数据
字符处理命令
sort [选项] 文件名
-f 忽略大小写
-n 以数值型进行排序
-r 返乡排序
-t 指定分隔符 sort -n -t ":" -k 3,3 /etc/passwd 第3个字段开始 第3个字段结束
-k n[,m] 按照指定的字段范围排序,从n到m
wc [选项] 文件名
-l 只统计行数
-w 只统计单词数
-m 只统计字符数
条件判定
文件判定
-b 文件 存在且为块设备文件
-c 文件 存在并且为字符设备
-e 文件 判定是否存在文件
-f 普通文件
-d 目录文件
-r 文件有读权限
-w 文件有写权限
-x 文件有执行权限
文件1 -nt 文件2 判定文件新
文件1 -ot 文件2 判定文件旧
文件 -ef 文件2 判定文件的Inode的编号
test -e /root/install.log 判定文件是否存在 echo $? 为0表示上一条命令执行成功
[ -e /root/install.log ]
[ -b install.log ] && echo "yes" || echo "no" 类似于Java的三目运算符 不能按照常规考虑
整数比较
-eq -ne -gt -lt -ge -le
字符串比较
-z 判断字符串是否为空
-n 判定字符串是否不为空
== 相等
!= 不等
多重条件判定
判断1 -a 判定2 一个为假都为假
判定1 -o 判定2 一个为真都为真
!判定 逻辑非
2016/10/23
流程控制
if语句
if [ 条件判定式 ];then
程序
fi
或者
if [ 条件判定式 ] #注意空格
then
程序
fi
查询根分区使用率
#!/bin/bash
# This Shell used query Disk
rate=$(df -h | grep "dev/sda1" | awk '{print $5} ' | cut -d "%" -f1)
if [ $rate -ge 1 ]
then
echo "Warning! /dev/sda1 is full!!"
fi
if [ 条件判定式 ] #注意空格
then
程序
else
否则
备份Mysql数据库
#!/bin/bash
#备份 mysql 数据库。
#与亚洲服务器同步时间
ntpdate asia.pool.ntp.org &>/dev/null
#同步系统时间
date=$(date +%y%m%d)
#把当前系统时间按照“年月日”格式赋予变量 date
size=$(du -sh /var/lib/mysql)
#统计 mysql 数据库的大小,并把大小赋予 size 变量
if [ -d /tmp/dbbak ]
then
echo "Date : $date!" > /tmp/dbbak/dbinfo.txt
echo "Data size : $size" >> /tmp/dbbak/dbinfo.txt
cd /tmp/dbbak
tar -zcf mysql-lib-$date.tar.gz /var/lib/mysql dbinfo.txt &>/dev/null #输出的文件删除
rm -rf /tmp/dbbak/dbinfo.txt
else
mkdir /tmp/dbbak
echo "Date : $date!" > /tmp/dbbak/dbinfo.txt
echo "Data size : $size" >> /tmp/dbbak/dbinfo.txt
cd /tmp/dbbak
tar -zcf mysql-lib-$date.tar.gz /var/lib/mysql dbinfo.txt
&>/dev/null
rm -rf /tmp/dbbak/dbinfo.txt
判断apache是否启动
#!/bin/bash
port=$(nmap -sT 192.168.1.156 | grep tcp | grep http | awk '{print$2}')
#使用nmap命令扫描服务器,并截取apache服务的状态,赋予变量port
if [ "$port" == "open" ]
then
echo “$(date) httpd is ok!” >> /tmp/autostart-acc.log
else
/etc/rc.d/init.d/httpd start &>/dev/null
echo "$(date) restart httpd !!" >> /tmp/autostart-err.log
fi
nmap 命令 -st 查看指定机器的服务
if [ 条件判定式 ] #注意空格
then
程序
elseif
then
else
否则
fi
#!/bin/bash
#判断用户输入的是什么文件
read -p "Please input a filename: " file
#接收键盘的输入,并赋予变量 file
if [ -z "$file" ]
#判断 file 变量是否为空
then
echo "Error,please input a filename"
exit 1
elif [ ! -e "$file" ]
#判断 file 的值是否存在
then
echo "Your input is not a file!"
exit 2
elif [ -f "$file" ]
#判断 file 的值是否为普通文件
then
echo "$file is a regulare file!"
elif [ -d "$file" ]
#判断 file 的值是否为目录文件
then
echo "$file is a directory!"
else
echo "$file is an other file!"
fi
case语句
case $变量名 in
"值一")
如果变量的值等于1
;;
"值二")
如果变量的值等于2
;;
*)
否则
;;
esac
#!/bin/bash
#判断用户输入
read -p "Please choose yes/no: " -t 30 cho
case $cho in
"yes")
echo "Your choose is yes!"
;;
"no")
echo "Your choose is no!"
;;
*)
echo "Your choose is error!"
;;
esac
for循环
for 变量 in 值1 值2 ...
do
程序
done
#!/bin/bash
#批量解压缩脚本
cd /lamp
ls *.tar.gz > ls.log
for i in $(cat ls.log)
do
tar -zxf $i &>/dev/null
done
rm -rf /lamp/ls.log
for((;;))
do
程序
done
#!/bin/bash
#批量添加指定数量的用户
# Author: shenchao (E-mail: shenchao@lampbrother.net)
read -p "Please input user name: " -t 30 name
read -p "Please input the number of users: " -t 30 num
read -p "Please input the password of users: " -t 30 pass
if [ ! -z "$name" -a ! -z "$num" -a ! -z "$pass" ]
then
y=$(echo $num | sed 's/[0-9]//g')
if [ -z "$y" ]
then
for (( i=1;i<=$num;i=i+1 ))
do
/usr/sbin/useradd $name$i &>/dev/null
echo $pass | /usr/bin/passwd --stdin $name$i &>/dev/null
done
fi
fi
流程控制
while和until
while [ 条件判断式 ]
do
程序
done
until 与while相反
until [ 条件判断式 ]
do
程序
done
Linux服务管理
服务简介和分类
Linux 1.RPM包默认(a.独立的服务。b.基于xineted服务) 2.源码包安装
服务的启动,服务的自启动
service 命令默认是只能管理RPM安装的文件
RPM包自启动查看 查询安装的RPM
chkconfig --list /etc/rc.d/init.d/ rpm 包服务 /etc/init.d
查看服务自启动的状态,可以查看RPM包安装的服务
源码包安装的服务位置,
/usr/local
ps netstat
查看进程
1.RPM包默认
a.独立的服务
/etc/init.d 启动脚本位置
/etc/xinetd.d 基于xinetd服务的启动脚本
/etc/sysconfig 初始化环境配置文件位置
/etc 配置文件位置
/etc/xinetd.conf xinetd配置文件
/var/lib 服务产生的数据放在这里
/var/log 日志
/etc/init.d 独立服务名 start|stop|status|restart
service 独立服务名 start|stop|status|restart
service --status-all 查询所有的启动服务
独立服务自启动
1.chkconfig --level 2345 httpd on 配置自启动打开
chkconfig --level 2345 httpd off 配置自启动关闭
2.修改/etc/rc.d/rc.local文件 LInux启动后都会访问这个Shell文件
touch 命令新建文件 当文件存在时,修改文件访问的时间
3.使用ntsysn命令管理自启动 *号表示开启了自启动服务
b.基于xineted服务管理
安装xinetd yum -y install xinetd
安装xinetd与telnet
修改 vi /etc/xinetd.d/telnet 启动
telnet是基于xinetd服务启动的
基于xineted服务管理自启动
chkconfig telnet on 配置自启动打开
它的启动和自启动是一起的
2.源码包安装
使用绝对路径启动 源码包中有启动和安装说明
/usr/local/apache2/bin/apachect1 start|stop
自启动源码包
vim /etc/rc.d/rc.local
/usr/local/apache2/bin/apachectl start
让源码包的apache服务能被service命令管理启动
ln -s /usr/local/apache2/bin/apachect1 /etc/init.d/apache
如果想使用chkconfig --list 查询和自启动
vim /etc/init.d/apache
添加
#chekconfig:35 86 76
#description: source http
chkconfig -add apache 添加到chkconfig
Linux系统管理
进程管理
一个正在执行的一个程序或命令。
ps aux 查看系统中所有的进程,使用BSD操作系统格式
ps -le 查看系统中所有进程,使用Linux标准命令格式
ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
用户 进程ID 改进程占用CPU 占用物理内存 占用虚拟内存 占用实际物理内存 在那个终端运行pts/0-255远程终端 状态R、S 启动时间 运行时间 进程名称
top
-d 秒数 每3秒更新一次
-M 内存排序
top - 01:27:38 up 5:41(运行5个小时了), 2 users, load average: 0.07, 0.02, 0.00 平均负载 大于1就负载了
Tasks: 121 total, 1 running, 120 sleeping, 0 stopped, 0 zombie(僵尸进程,需要手动禁止的)
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id(CPU空闲率), 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem(物理内存): 1004348k total, 245780k used, 758568k free, 43732k buffers
Swap(交换分区): 2031612k total, 0k used, 2031612k free, 74364k cached
pstree 查看进程树
-p 显示进程号
-u 显示所在进程的用户
终止进程
kill -l
#查看可用的进程信号
1 让信号关闭,并重启
15 正常结束进程信号
9 强制终止
父进程杀掉 子进程也杀掉了
killall [选项][信号]进程名 killall-9 httpd 杀掉所有
pkill [选项][信号]进程名 按名称杀掉进程
-t 按照终端号 踢用户 pkill -9 -t tty1
工作管理
把进程放入后台
在结尾加 &
tar -zcf etc.tar.gz /etc &
ctrl + z 放入后台暂停
jobs -l 查看后台任务
[1]+ 3559 停止 (信号)
top +代表最近放入后台的命令 -代表第二个放入后台的命令
fg %工作号 #%可以省略 恢复到前台
bg %工作号 恢复到后台
top 、vi 不能放到后台 因为必须和用户交互
系统资源查看
vmstat 命令监控系统资源
vmstat[刷新延时 刷新次数]
dmesg 开机时内核检查信息
free -b -k -m -g 查看内存使用状态
缓存(cache)是用来加速数据从硬盘中‘读取’的,
缓冲(Buffer)是用来加速数据“写入”硬盘的。
cat /proc/cpuinfo 查询CPU信息
uptime 显示系统的在线信息
uname -a 查看所有信息
-r 查看内核版本
-s 查看内核名称
file /bin/ls 判定当前系统的位数
lsb_release -a 查看当前Linux系统的发行版本
lsof 列车进程调用的文件
-c 字符串
-u 用户名
-p pid
系统的定时任务
crond服务管理与范文控制
crondtab [选项]
-e 编辑crontab 定时任务
-l 查询crontab任务
-r 删除当前用户所有的crintab任务
编辑
* * * * * 命令
45 22 * * * 22:45执行
0 14 * * 1 每周1 14:00 执行
0 5 1,15 * * 1号到15号 5:00执行
40 4 * * 1-5 每周1到5 4:40执行
*/10 4 * * * 每天4:00 每隔10分钟执行 执行6次
注意在定时任务中 % 字符是有特殊含义的 需要在shell文件中加转义符号 \%y\%m\%dz
日志管理
日志管理简介
centOS 6.X rsyslogd 查询日志 和 syslogd兼容的
查看日志服务是否启动
ps aux | grep rsyslogd
chkconfig --list | grep rsyslog
/var/log/cron 定时任务的日志
/var/log/cups 打印信息日志
/var/log/dmesg 记录开始日志
/var/log/btmp 记录登录错误的日志 使用 lastb查看
/var/log/last1 记录用户最后一次登录的时间 使用lastlog查看
/var/log/mailog 邮件信息
/var/log/message 重要信息日志
/var/log/secure 记录验证和授权方面的信息
/var/log/wtmp 永久记录所有用户的登录、注销信息 使用last查看
/var/log/utmp 记录当前登录用户的信息 使用w who users 查看
rsyslogd 日志服务
格式:
事件产生的时间
事件产生的服务器
事件程序名
事件的具体信息
Oct 23 03:56:31 localhost sshd[3368]: pam_unix(sshd:session): session opened for user root by (uid=0)
配置日志
/etc/rsyslog.conf
authpriv.* 认证相关服务.所有日志等级
日志记录位置
日志文件绝对路径 /var/log/secure
系统设备文件 /dev/lp0
转发给远程主机 @192.168.0.2:51
用户名 如root
忽略或丢弃日志 如 ~
日志轮替
日志文件的命名规则
如果配置文件中拥有 dateext 参数
那么日志会用日期来作为日志文件的后缀,
logrotate配置文件 etc/logrotate.conf
daily weekly monthly 轮替日期
rotate 数字 保留的日志文件个数,0值没有备份
conpress 日志轮替时,旧的日志进行压缩
create mode owner group 建立新日志,
同时制定新日志的权限与所有者和所属组 如 create 0600 root utmp
把apache日志加入轮替
源码包安装的软件,才需要为其加上日志轮替
RPM包安装的自动加入了轮替
[root@localhost ~]# vi /etc/logrotate.conf
/usr/local/apache2/logs/access_log {
daily
create #创建新的日志
rotate 30
}
logrotate [选项] 配置文件名
如果此命令没有选项,则会按照配置文件中的条件进行轮替
-v 显示日志轮替过程,
-f 强制进行日志轮替,不管日志轮替的条件是否已经符合,所有的日志都要进行轮替
logrotate -v /etc/logrotate.conf 记录轮替记录
启动管理
CenOS6.x启动管理
系统运行级别
0 关机 1 单用户模式(可以想象window的安全模式) 2 不完全命令行模式
3 完全的命令行模式 4系统保留 5 图形模式
6 重启动
runlevel 查询级别
5 3 说明从5级别切换到了3
init 0 修改级别
系统的默认运行级别
vim /etc/inittab
id:3:initdefault:
#系统开机后直接进入哪个运行级别
系统启动过程
centos6 使用initramfs内存文件取代了initrd RAM DISK
mkdir /tmp/initramfs
# 建立测试目录
cp /boot/initramfs-2.6.32-279.el6.i686.img /tmp/initramfs/
# 复制 initramfs 文件
cd /tmp/initramfs/
file 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
cpio -ivcdu < initramfs-2.6.32-279.el6.i686.img
# 解压缩
启动引导程序grub
vim /boot/grub/grub.conf
Grub 设备文件名 hd(0,0) 硬盘表示
default=0 默认启动的操作系统
timeout=5 等待5秒
splashimage=(hd0,0)/grub/splash.xpm.gz 背景文件
hiddenmenu 隐藏查单
title CentOS 6 (2.6.32-504.el6.x86_64) #标题
root (hd0,0) #启动程序保存分区
kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap c
rashkernel=auto LANG=zh_CN.UTF-8 rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
加载的内核
initrd /initramfs-2.6.32-504.el6.x86_64.img
加载模拟进项的
grub加密与字符界面分辨率调整
grub-md5-crypt 生成加密密码串
[root@localhost ~]# vi /boot/grub/grub.conf
default=0
timeout=5
password --md5
$1$Y84LB1$8tMY2PibScmuOCc8z8U35/
#password 选项放在整体设置处。
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
分辨率调整
grep "CONFIG_FRAMEBUFFER_CONSOLE"
/boot/config-2.6.32-279.el6.i686
#查询内核是否支持分辨率修改
修改内核
vi /boot/grub/grub.conf
kernel /vmlinuz-2.6.32-279.el6.i686 ro
root=UUID=b9a7a1a8-767f-4a87-8a2b-
a535edb362c9 rd_NO_LUKS
KEYBOARDTYPE=pc KEYTABLE=us
rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-
8 rd_NO_LVM rd_NO_DM rhgb quiet vga=791
系统修复模式
单用户模式
遗忘root密码
修改系统默认运行级别
光盘修复模式
可以破解grub密码
重要系统文件丢失,导致系统无法启动
bash-4.1# chroot /mnt/sysimage
# 改变主目录
sh-4.1# cd /root
sh-4.1# rpm -qf /etc/inittab
# 查询下 /etc/inittab 文件属于哪个包。
sh-4.1# mkdir /mnt/cdrom
# 建立挂载点
sh-4.1# mount /dev/sr0 /mnt/cdrom
# 挂载光盘
sh-4.1# rpm2cpio \
/mnt/cdrom/Packages/initscripts-8.45.3-1.i386.rpm \
| cpio -idv ./etc/inittab
# 提取 inittab 文件到当前目录
sh-4.1# cp etc/inittab /etc/inittab
# 复制 inittab 文件到指定位置
备份与恢复
备份的概述
linux系统需要备份的数据
/root /home /var/spool/mail /etc 其他目录
完全备份:所有数据全部备份。
增量备份 每次备份都备份新的数据
差异备份:每一备份都和第一次备份的相比较,其他的数据都备份
备份命令
dump备份和restore恢复命令
dump
-0 0-9 十个基本
-f 备份后文件名
-u /etc/dumpdates 记录备份文件
-j 备份
-W 查看
dump -0uj -f /root/boot.bak.bz2 /boot/
# 备份命令。先执行一次完全备份,并压缩和更新备份时间
cat /etc/dumpdates
# 查看备份时间文件
cp install.log /boot/
# 复制日志文件到 /boot 分区
dump -1uj -f /root/boot.bak1.bz2 /boot/
# 增量备份 /boot 分区,并压缩
dump –W
# 查询分区的备份时间及备份级别的
备份文件或目录
dump -0j -f /root/etc.dump.bz2 /etc/
# 完全备份 /etc/ 目录,只能使用 0 级别进行完全备份
,而不再支持增量备份
restore [模式选项] [选项]
模式选项:restore命令常用的模式有以下四种,这四个模
式不能混用。
-C:比较备份数据和实际数据的变化
-i: 进入交互模式,手工选择需要恢复的文件。
-t: 查看模式,用于查看备份文件中拥有哪些数据。
-r: 还原模式,用于数据还原 。
选项:
-f: 指定备份文件的文件名
比较备份数据和实际数据的变化
mv /boot/vmlinuz-2.6.32-279.el6.i686 /boot/vmlinuz-2.6.32-
279.el6.i686.bak
# 把 /boot 目录中内核镜像文件改个名字
restore -C -f /root/boot.bak.bz2
#restore 发现内核镜像文件丢失
查看模式
restore -t -f boot.bak.bz2
还原模式
# 还原 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 备份
Linux学习笔记(二)
最新推荐文章于 2023-05-25 21:36:02 发布