学习笔记6-14
sd硬盘最多划分61个逻辑分区
sisc 最多划分11个逻辑分区
ctrl+l 清屏
ctrl+c 中断
基本命令
ls -l install.log
-:rw-r--r-- :1 :root :root :39410 : 2013-05-21: install.log
文件类型:权限:硬链接数:拥有者:所属组:文件大小:最后一次修改时间:文件名
- 普通文件
d 目录文件
c 字符文件
b 块设备文件
l 软链接文件(符号)
p 管道文件
s 套接子文件
ls -l 长格式 -a 所有文件 -A 所有文件除了.和.. F 显示文件类型
. 当前目录
.. 上层目录
-d 显示目录信息 -h 最大单位显示 -t 安时间排序
-r 反向 -R 递归
1.ls --help
2.info ls
3.type ls
alias la='ls -la'
unalias la
4.man ls
一 用户命令
二 系统调用
三 库调用
四 特殊文件
五 配置文件
六 游戏
七 杂项(man)
八 系统命令
九 内核参考
makewhatis 维护man后台
man -f passwd 查询命令在那些章节有相应说明
man -k passwd 模糊查询
cd cd / .. ../.. . ~ -返回上次工作目录
pwd 查询位置
/下目录作用
/bin /usr/bin /usr/local/bin 普通用户可执行目录
/sbin /usr/sbin /usr/local/sbin 系统可执行目录
/etc/ 配置文件目录
/usr/ 应用程序目录
/var/ 服务器数据目录(经常变化的文件,如日志文件,用户邮箱文件),建议独
立分区
/lib /usr/lib /usr/local/lib 库文件目录(系统模块)
/dev/ 块设备目录和字符设备
/boot 引导程序目录(内核,启动文件,引导程序) 建立独立分区
/root 管理员家目录
/home 普通用户家目录 建立独立分区
/proc 内存信息目录(内存信息和进程信息) 伪文件系统
/sys 内存信息目录(内存信息和进程信息) 伪文件系统
/tmp 临时文件目录
/opt 第三方软件目录
/mnt 临时挂在点
/srv 服务器数据目录。。。。。。。。。。。
/media 媒体目录
/misc autofs
/net autofs
/tftpboot tftp服务使用
/selinux selinux使用
/lost+found 用于文件系统恢复
查看文件内容
1.head 显示文件从头部开始10行
head -n 30 install.log
2.tail 显示文件从底部开始10行
tail -n 20 install.log
tail -f /var/log/messages 动态显示文件内容
3.more 显示全部文件 百分比显示
more install.log
4.less 显示全部文件可以上下翻页
less install.log
5.cat 查看文件内容 一次显示完毕
cat -n install.log 显示文件内容 带 行号包括空行
cat -b install.log 显示文件内容 带 行号不带空行
cat -n install.log | less 查看文件内容带行号显示后 再用less翻页查看
| 管道符号
前一个命令输出作为后一个命令输入
创建文件
touch
touch aa.txt
touch cc.txt tt.txt
touch abc{1..10}.txt
touch {a,b,c}{1..3}.txt
创建目录
mkdir
mkdir tt
mkdir test1 test2
mkdir abc{1..10}
mkdir {a..c}{1..10}.txt
mkdir -p dir/aa
mkdir -pv dir/aa
拷贝copy
cp /root/install.log /tmp/
cp /root/install.log /tmp/install 拷贝的同时重命名
cp -r /tmp/dir/ /
剪切move
mv /root/xx.txt /tmp/
mv /root/xx.txt /tmp/haha.txt
mv xx.txt xx.txt.bak
mv /tmp/tt /
删除
rmdir 只能删除空目录
rm
rm tt.txt
rm -f install.log
rm -rf abc9
rm -rf *.txt
rm -rf abc*
rm -rf /dir/
********************************************************************************
练习:
1.建立以下目录结构(验证?)
/aa
/ \
ba/ bb/
/ \ \
ca/ cb/ cc/
mkdir -p /aa/ba/c{a,b} /aa/bb/cc
tree /aa/
tree -L 2 /
ls -R /aa 显示目录结构
2.进入ba目录 查询自己所在路径?
pwd 显示当前工作目录
3.由ba进入ca目录有几种写法?分别是什么?
cd ca/
cd /aa/ba/ca/
4.拷贝/etc/man.config到ca目录
cp /etc/man.config /aa/ba/ca/
5.移动ca目录下的man.config /cc目录并且改名为test.txt
分两种写法操作
mv /aa/ba/ca/man.config /aa/bb/cc/test.txt
mv ca/man.config ../../aa/bb/cc/test.txt
6.两次拷贝同一个文件到同一个不出现覆盖提示?
unalias cp /root/install.log /
\cp install.log / 不提示 强制覆盖文件
********************************************************************************
vim 文本编辑器 vi
命令模式进入输入模式
a 当前字符后输入
A 当前行行尾输入
i 当前字符前输入
I 当前行行首输入
o 当前行下一行输入
O 当前行上一行输入
s 删除当前字符后输入
S 删除当前行后输入
home键位行首 end行尾
命令模式
u 撤销一步操作
ctrl + r 重做
yy 复制一行
50yy 复制50行
dd 剪切一行 dd删除
50dd 剪切50行
p 粘贴
w 下一个单词的首字符
dw 删除/剪切一个单词 yw
^ 行首 d^ y^
$ 行尾 d$ y$
G 尾行
gg 首行
750G 定位到750
dgg 删除当前行到首行
dG 删除当前行到尾行
末行模式
:w :q :wq
:w! :q! :wq!
:e /root/aa.txt 打开/读入
:2,3w /root/newfile.txt 2到3行另存为新文件
:r /root/file.txt 在当前文件追加读入
:e! 重新读入当前文件
:set nu 显示行号
:set nonu 去掉行号
:set autoindent 自动缩进
:set noautoindent 去掉自动缩进
查找
/ 从上往下
? 从下往上
n N 上下查找关键词
替换
:%s/ab/OO/gc %所有行 g全局 s替换 c交互式替换
2,5s/ab/OO/gc
:%s/^\t// 替换文件中所有行首制表符
:%s/\t// 替换文件中每行第一个指标符
:%s/ //g 去掉所有空格
:%s/^#//g 删掉行首#
:g/^$/d 删除空行
:g/^\s*$/d 删除所有类型空行
:X 加密 解密
vim配置文件 /etc/vimrc
vim教程
/usr/share/vim/vim70/tutor/tutor.zh.euc
gedit /usr/share/vim/vim70/tutor/tutor.zh.euc
文件--->另存---->字符集----->保存----->替换
vimtutor
***********************************************************
字符编码转换
iconv -f gb18030 -t utf-8 tutor.zh.euc -o test.txt
***********************************************************
多文件操作
vim aa.txt cc.txt tt.txt
:args next prev first last
文件间切换 Ctrl+6 下一个文件
:bn 下一个文件
:bp 上一个文件
对于用(v)split在多个窗格中打开的文件,这种方法只会在当前窗格中切换不同的文
件。
vimdiff aa.txt cc.txt tt.txt 比较文件不同
ctrl+w+w 切换编辑文档
vim -O aa.txt tt.txt cc.txt 不带颜色多屏幕显示 纵屏
vim -o aa.txt tt.txt cc.txt 横屏显示
shift+k 显示文档里边 选定词语 显示 命令帮助
可视化模式v
y 复制 d 删除 p 粘贴
可视化块模式 ctrl+v
方向选择编辑区域----> shift+i -----> 输入字符 -->ESC(两次)修改成功
用户管理
uid 0 root gid 0 root
uid 1-499 system gid 1-499 system group
uid 500-60000 user gid 500-60000 group
添加用户useradd
useradd abc1
保存用户信息的文件:/etc/passwd
robin:x:500:500:ptuser:/home/robin:/bin/bash
用户名:密码占位符号:uid:gid:描述:家目录:shell
useradd -u 1000 -g 500 -c hello -d /mnt/abc2 -s /bin/bash abc2
添加组groupadd
groupadd uplooking
保存组信息的文件 /etc/group
uplooking:x:502:
组名:组密码占位符号:gid:用户名
groupadd -g 2000 upup
设置密码
1.root通过passwd robin
2.robin执行passwd修改自己密码
密码保存文件:/etc/shadow
robin:$1$Bj0Exbfx$e24mczi0jmsiDR:15847:2:10:3:2::
第一列:用户名
第二列:密码(md5)
第三列:密码最后一次修改时间(天)
第四列:密码最小时间
第五列:密码最大时间(密码有效期)(天)
第六列:密码过期前警告时间
第七列:密码过期后帐号过期时间
第八列:帐号有效期
第九列:保留列
********************************************************************************
练习:
1.添加组kkk gid为1500
groupadd -g 1500 kkk
2.添加用户 zorro uid 1500 属于kkk组 描述:hello 家目录/mnt shell:bash
useradd -u 1500 -g kkk -c hello -d /mnt/zorro -s /bin/bash zorro
3.通过管理员设置该用户密码为123
终端登录zorro 设置自己密码为123.com
********************************************************************************
修改用户信息
usermod
usermod -u 用户uid
usermod -g 用户gid
usermod -c 用户描述
usermod -d 用户家目录
usermod -s 用户shell
usermod -l abc2abc abc2 更改用户名
usermod -L robin 锁定帐号
usermod -U robin 解锁帐号
usermod -f 密码过期后帐号过期时间
usermod -e 帐号有效期
修改组信息
groupmod -g 2500 uplooking
groupmod -n upup uplooking
修改密码及信息
passwd -n(最小时间) -x 最大时间 -w 警告时间 -i 密码过期后帐号过期时间
passwd -l robin 锁定密码
passwd -u robin 解锁密码
passwd -S robin 查看密码状态
添加用户tom和jerry 分别设置两个用户密码为123
锁定tom帐号 锁定jerry密码
终端登录测试 返回值是否一致? 一样的
查看shedow文件 两个用户有什么区别? 锁定帐户是 一个! 锁定密码是两个 !
删除用户:
userdel -r abc2
删除组
groupdel upup
附加组
groupadd yw
groupadd kf
useradd -G kf,yw wg 覆盖附加组信息
useradd -a -G kf,yw wg 追加附加组信息
groupadd boss
gpasswd boss
手动添加帐号
1.groupadd zu
1).vim /etc/group
zu:x:2000:
2.useradd -g zu zhb
1).vim /etc/passwd
zhb:x:2000:2000::/home/zhb:/bin/bash
2).mkdir /home/zhb
3).cp /etc/skel/.bash* /home/zhb/
3.passwd zhb
1).vim /etc/shadow
zhb::15848:0:99999:7:::
2).grub-md5-crypt产生密码 将密码复制到第二列
终端登录测试 创建文件?
多用户导入
1.导入文件(user.txt)内的用户和系统的passwd文件用户信息不能冲突
2.导入文件(user.txt)内用户不能冲突
cat user.txt
user1:x:3000:3000:ptuser:/home/user1:/bin/bash
user2:x:3001:3001:ptuser:/home/user2:/bin/bash
newusers < user.txt
cat passwd.txt
user1:123
user2:123
chpasswd < passwd.txt
用户配置文件
/etc/default/useradd
HOME=/home
SHELL=/bin/bash
SKEL=/etc/skel
/etc/login.defs(限制uid数量 密码限制)
root 密码丢失
*******************************
e 2 e 进入编辑模式
输入 1 或者 single
按 b 进入单用户模式
输入 passwd 修改密码
reboot 重启成功
家目录下环境配置文件
env 查询环境变量
set 查询所有变量
环境变量可以被子进程继承 export b=2
自定义变量不能被子进程继承 a=1
环境配置文件(每个用户家目录下都存在)
.bash_history 保存用户的历史命令,当用户退出时保存到文件
.bash_logout 保存用户退出时执行的命令
.bashrc 保存用户别名 (开启新的终端就可以读取该文件)
.bash_profile 保存用户搜索命令的位置
.bashrc shell级别环境变量配置文件
.bash_profile 登录级别环境变量配置文件
su - 登录级别切换
su shell 级别切换
全局环境配置文件
/etc/bashrc
/etc/profile
加载顺序
/etc/profile
.bash_profile
.bashrc
/etc/bashrc
定义变量文件顺序
/etc/profile1
/etc/profile2
.bash_profile1
.bashrc1
/etc/bashrc1
/etc/bashrc2
.bashrc2
.bash_profile2
权限(基本权限和高级权限)
ls -l install.log
-rw-r--r-- 1 robin upup 39751 05-23 11:15 aa.txt
rwx | rwx | rwx
robin upup other
uid=0----->uid=robin----->group=upup----->other
磁盘配额 对比权限
对于文件 r--------cat head tail....
w--------vim,gedit,vi,> >>
x--------执行./ 绝对路径
对于目录 r--------ls r-x查看目录下文件信息
w--------mkdir touhc rm rwx
x--------cd
能否删除文件决定于该用户拥有该文件所在文件夹的权限 r-x
-w- 权限可以查看文件夹下边文件 但是不能查看详细信息
-wx 只限于删除已知文件名的文件
user u
group g
other o
chmod u+r file/dir
chmod u+r,g+w file/dir
chmod ug-rw file/dir
chmod ugo+rwx file/dir
chmod a+rwx file/dir
chmod u=r file/dir
chmod u=r,g=w file/dir
chmod uo=rw file/dir
chmod ugo=rwx file/dir
chmod a=rwx file/dir
/ rwxr-xr-x 755
/etc/ rwxr-xr-x 755
/usr/ rwxr-xr-x 755
/var/ rwxr-xr-x 755
/tmp rwxrwxrwt 1777
/etc/shadow r-------- 400
/etc/passwd rw-r--r-- 644
/home/robin rwx------ 700
/root rwxr-x--- 750
root创建文件默认权限 rw-r--r-- 644
root创建目录默认权限 rwxr-xr-x 755
普通用户创建文件默认权限 rw-rw-r-- 664
普通用户创建目录默认权限 rwxrwxr-x 775
r------4 w------2 x-----1
777
rwxr----x 741 123--x-w--wx
r-x-wx-w- 532 456r--r-xrw-
默认权限计算方法
666 023
110110110 000010011
111101100 111101100
110100100
644
umask权限对照表
=============================================
umask值 目录权限 普通文件
0 7 6
1 6 6
2 5 4
3 4 4
4 3 2
5 2 2
6 1 0
7 0 0
=============================================
chmod -R 777 /test
修改拥有者所属组
chown robin tt.txt
chgrp uplooking tt.txt
chown robin.uplooking tt.txt
chown .uplooking tt.txt
.=:
chown -R robin.uplooking dir/
练习:
创建用户tom和jerry
1.在/tmp目录下创建文件tt.txt
要求:
tt.txt权限设置为651 在改为rwxr----x
chmod 651 /tmp/tt.txt
chmod u=rwx,g=r,o=x /tmp/tt.txt
设置tt.txt文件拥有这tom所属组jerry
chown tom.jerry /tmp/tt.txt
2.根据以下要求设置拥有者和权限
在/tmp目录下创建目录test/,在test目录下创建文件aa.txt
tom可以读写文件aa.txt 不能删除
jerry 不可以读写文件aa.txt 可以删除
mkdir /tmp/test/
touch /tmp/test/aa.txt
/tmp/test/ jerry root rwxr-xr-x
/tmp/test/aa.txt tom root rw-r-----
=============================================
= 配置视频服务器 =
= 1.将ip设置到192.168.1.0/24网段 =
= 2.showmount -e 192.168.1.201 =
= 3.mount 192.168.1.201:/source /mnt/ =
= cd /mnt/ =
= 4.cp uplayer.client.tar.bz2 /root/ =
= 5.cd /root =
= tar -jxvf uplayer.client.tar.bz2 =
= cd uplayer/ =
= ./install.sh =
=============================================
主组附加组
robin robin robin,uplooking
/tmp/test rwxrwx--- root uplooking
robin能不能进去/tmp/test? 为什么?
可以 因为附加组有uplooking
进入后创建文件aa.txt 该文件 拥有者 所属组??
robin robin
如果该用户想创建属于uplooking组的文件 怎么做?
sg uplooking
robin uplooking robin,uplooking
高级权限
1.suid
必须作用于二进制可执行文件
chmod u+s file
作用:任何用户在执行拥有suid权限的命令时,都以该命令拥有者的身份执行
********************************************************************************
实验:
在不改变/etc/shadow权限的前提下,使普通用户robin可以使用cat查看/etc/shadow文件
内容
which cat
chmod u+s /bin/cat
给相应的权限 添加 u+s 的权限
********************************************************************************
2.sgid
必须作用于目录
chmod g+s dir
作用:任何用户在拥有sgid的目录下创建的文件,都要继承该目录的组
********************************************************************************
实验:
1.在/tmp/创建下test目录 权限设定为 rwxrwxrwx root upup
使用robin用户进入该目录并且创建文件aa.txt
aa.txt 所属组?
-rw-rw-r-- 1 robin robin 0 05-24 10:59 aa.txt
2.在/tmp/test目录上添加sgid权限
使用robin用户进入该目录并且创建文件cc.txt
cc.txt 所属组?
-rw-rw-r-- 1 robin upup 0 05-24 10:59 cc.txt
3.修改/tmp/test目录的所属组为redhat
使用robin用户进入该目录并且创建文件tt.txt
tt.txt 所属组? aa.txt cc.txt 所属组?
redhat
-rw-rw-r-- 1 robin redhat 0 05-24 11:00 tt.txt
4.在/tmp/test目录下创建目录abc
abc 权限和所属于组 是什么?
redhat redhat
drwxrwsr-x 2 robin redhat 4096 05-24 11:01 abc
********************************************************************************
练习:
umask 0027
公共组 uplooking
就业部 组 job 用户 tom jerry
资讯部 组 sal 用户 zorro shrek
/stu
资讯部-----> stu.txt -----> /stu
就业部-----> 查看stu.txt
资讯部-----> 查看stu.txt
uplooking job sal
useradd -g job -G uplooking tom
useradd -g job -G uplooking jerry
useradd -g sal -G uplooking zorro
useradd -g sal -G uplooking shrek
chmod 775 stu/
chown .uplooking stu/
drwxrwxr-x 2 root uplooking 4096 05-24 11:49 stu/
aa.txt tom job
tt.txt tom uplooking rw-r-----
********************************************************************************
3.sticky(t 冒险位 粘贴位) /tmp 具有此权限
必须作用于目录
chmod o+t dir
作用:任何用户在拥有t权限的目录下创建的文件,都属于该用户自己,
其他人无权删除 (root,目录拥有者除外)
********************************************************************************
实验:
在/目录下创建/test目录 拥有者root 所属组root 权限777
用户jack rose
1.jack在/test目录创建aa.txt
rose能不能删除aa.txt?
可以删除
2.在/test目录上添加t权限
jack在/test目录下创建jack.txt
rose能不能删除jack.txt?
无法删除
rose在/test目录下创建rose.txt
jack能不能删除rose.txt?
无法删除
3.root能不能删除/test目录下的文件?
可以删除
4.添加用户robin
robin能不能删除/test目录下的文件?
无法删除
chown robin /test
robin能不能删除/test目录下的文件?
可以删除
********************************************************************************
高级权限
suid-------4
sgid-------2
sticky-----1
7
1777
2777
4777
3777
[root@localhost ~]# ll aa.txt
-rwSrwSrwT 1 root root 0 05-24 12:16 aa.txt
[root@localhost ~]# ll aa.txt
-rwsrwsrwt 1 root root 0 05-24 12:16 aa.txt
高级权限显示为大写 源文件没有执行权限
高级权限显示为小写 源文件有执行权限
特殊属性 facl
********************************************************************************
进程管理
静态查询
ps -ef
ps aux
动态查询
top
cat /proc/cpuinfo
cat cpuinfo | grep pae
cat cpuinfo | grep vmx INTER支持全虚拟
cat cpuinfo | grep svm AMD
cat cpuinfo | grep lm 是否支持64位系统
kill -9 强制结束
kill -15 正常结束
pkill httpd
killall httpd
xkill
ctrl+alt+backspace
前后台切换
xclock -update 1
xclock -update 1 &
nohup xclock -update 1 & 关闭父进程 子进程继续
xclock -update 1
ctrl+z
jobs 查询编号
bg 编号
fg 编号
kill %编号 杀掉后台进程
优先级调整(-20~~19)
nice -n -20 xclock -update 1
renice 15 -p 5316------>(pid)
PROCESS STATE CODES
D Uninterruptible sleep (usually IO)
R Running or runnable (on run queue)
S Interruptible sleep (waiting for
an event to complete)
T Stopped, either by a job control
signal or because it is being
traced.
W paging (not valid since the 2.6.xx
kernel)
X dead (should never be seen)
Z Defunct ("zombie") process,
terminated but not reaped by its
< high-priority (not nice to other
users)
N low-priority (nice to other users)
L has pages locked into memory (for
real-time and custom IO)
s is a session leader
l is multi-threaded (using
CLONE_THREAD, like NPTL
pthreads do)
+ is in the foreground process group
第一节 高级命令
cat -n /etc/passwd |head -20 |tail -1 只显示文件第20行
cat -n /etc/passwd | head -20 |tail -1 | tac 上下反序
cat -n /etc/passwd | head -20 |tail -1 | rev 左右反序
sort 按首字符排序 -n 按整个数字排序 -r反向 -u去掉重复值
uniq 去连续重复值 -d 显示重复行 -u 显示不重复行 -c 统计重复次数
grep 过滤字符
grep root /etc/passwd
grep ^root /etc/passwd
grep halt$ /etc/passwd
grep -v ^root /etc/passwd
cut 截取字符
截取行
cut -d: -f1 /etc/passwd 截取 以:分割行 第一列
cut -d: -f1,3,5 /etc/passwd
cut -d: -f1-3,5 /etc/passwd 截取 以:分割行 第1-3列 5列
截取字符
cut -c 1 /etc/passwd | head -5
cut -c 1,2,4 /etc/passwd | head -5 截取 1,2,4 个字符
cut -c 1-4 /etc/passwd | head -5
wc 统计字符
wc
wc -l /etc/passwd l 行数
wc -w aa.txt w 单词数
wc -c aa.txt c 字符数
一个汉字 3个字符
练习题:
1.统计你系统中有多少个用户可以登录(/bin/bash)
grep /bin/bash /etc/passwd | wc -l
grep -c bash /etc/passwd
grep bash /etc/passwd | cut -d: -f 7 | uniq -c
2.获取网卡ip地址 192.168.1.254
1).ifconfig eth0 | awk -F':| +' '/Bcast/{print $4}'
2).ifconfig eth0 | grep 'inet addr'| cut -d: -f2 | cut -d' ' -f 1
3).ifconfig eth0 |head -2 |tail -1 |cut -d: -f2 |cut -d' ' -f1
4).ifconfig eth0 |grep Bcast |cut -d: -f2 |cut -d' ' -f1
3.[root@localhost ~]# stat aa.txt
File: “aa.txt”
Size: 4 Blocks: 8 IO Block:
4096 一般文件
Device: 802h/2050d Inode: 554909 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) G
id: ( 0/ root)
Access: 2013-05-27 10:16:46.000000000 +0800
Modify: 2013-05-27 10:16:46.000000000 +0800
Change: 2013-05-27 10:16:46.000000000 +0800
过滤显示时间
10:16:46
10:16:46
10:16:46
stat 显示文件属性
stat aa.txt | tail -3 | cut -d' ' -f 3 | cut -d. -f 1
第二节 shell基础
history
!1015 执行第1015条命令
!! 执行上一次命令
! cat 在执行一次最后一条以cat开始的命令
!$ 引用上一个命令最后一个参数
alt + . 引用上一个命令最后一个参数
重新定向符和 文件描述符 { 0 1 2 > >> }
1> 标准正确输出,如果文件存在则覆盖,如果不存在则新建
1>> 标准正确输出,如果文件存在则追加,如果不存在则新建
2> 标准错误输出,如果文件存在则覆盖,如果不存在则新建
2>> 标准错误输出,如果文件存在则覆盖,如果不存在则新建
&> /etc/null 标准错误和标准正确同时输出
2&>1 标准错误输出定向到标准正确输出位置
shell 脚本语法 批量创建用户
================================
#!/bin/bash
#add user script
for i in {1..10}
do
#显示添加用户
echo "add user abc$i"
#执行添加用户
useradd abc$i
#等待1秒显示
sleep 1
#显示用户创建完毕
echo "add user finish"
echo "********"
#设置用户密码
echo "set abc$i password now"
#设置密码,去掉命令返回值
echo 123 | passwd --stdin abc$i &> /dev/null
sleep 1
echo "passwd finish !!!"
done
================
if脚本 显示存在文件
================
#!/bin/bash
#文件是否存在!
if [ -f /tmp/aa.txt ]
then
echo "文件存在!显示信息!!!"
sleep 1
ls -l /tmp/aa.txt
else
echo "文件不存在!创建文件!"
sleep 1
touch /tmp/aa.txt
fi
================
null 黑洞文件
zero 数据发生器
du -s 显示大小
du -sh 只显示总大小
压缩打包安装软件
winrar 和 zip
gzip bzip2
dd if=/dev/zero of=data bs=100M count=2
gzip data 压缩文件
gunzip data 解压文件
hexdump aa.txt 二进制显示文件
gzip data 压缩文件
gunzip data.gz 解压文件
bzip2 data 压缩文件
bunzip2 data.bz2解压文件
打包
tar -cvf boot.tar /boot/ c 创建 v显示过程 f file
tar -tvf boot.tar t显示包内容
tar -rvf boot.tar install.log r追加打包
tar -xvf boot.tar x解包
tar -cvf /tmp/boot.tar /boot
tar -xvf boot.tar -C /tmp
tar -zcvf /tmp/boot.tar.gz /boot/
存放位置,压缩名 压缩目标
tar -ztvf boot.tar.gz
tar -zxvf boot.tar.gz
tar -jcvf boot.tar.bz2 /boot/
tar -jtvf boot.tar.bz2
tar -jxvf boot.tar.bz2
boot.tgz boot.tbz2
软件安装
mount
mount -t iso9660 /dev/cdrom /mnt/cdrom/
umount /dev/cdrom
umount /mnt/cdrom
umount -l /dev/cdrom 强制卸载!
mount /var/ftp/ULE05-21/rhel5u8.iso /mnt/cdrom/ -o loop 挂在文件
制作镜像
*****************************************************************
cat /dev/cdrom >> rhel5-8.iso
dd if=/dev/cdrom of=/opt/rhel5-8.iso
*****************************************************************
安装软件包
rpm -ivh httpd-*.rpm i install v过程 h 百分比
rpm -q httpd 查询信息 q检索信息
rpm -qi httpd 查询安装包信息 i信息
rpm -ql httpd | cut -d\/ -f 2 |uniq 转议正常显示/ 然后去重复
rpm -qd httpd
rpm -qc httpd
rpm -qa all
rpm -qa | grep lib
rpm -qf /etc/httpd/conf/httpd.conf
rpm -qf `which mount` 查询命令 那个软件报安装的
rpm -e httpd 卸载
未安装包
rpm -qpi zip-2.31-2.el5.i386.rpm 查询未安装包的信息
rpm -qpl zip-2.31-2.el5.i386.rpm 查询包安装后位置
强制安装
rpm -ivh httpd-2.2.3-63.el5.i386.rpm --force
不检测依赖关系
rpm -ivh apr-devel-1.2.7-11.el5_6.5.i386.rpm --nodeps
导入key安装
rpm --import RPM-GPG-KEY-redhat-release
yum库
**************************************************************
光盘作为yum源
1.mount /var/ftp/ULE05-21/rhel5u8.iso /mnt/cdrom -o loop
2.vim /etc/yum.conf
gpgcheck=0
3.cd /etc/yum.repos.d/
touch yum.repo
vim yum.repo
[rhel-server]
name=server
baseurl=file:///mnt/cdrom/Server
enable=1
gpgcheck=0
******************************************************
4.测试
yum clean all
yum list
yum install httpd-devel 安装
yum remove httpd-devel 卸载
yum reinstall httpd-devel 重新安装
ls /mnt/cdrom/Server/ | grep -v rpm$ 过滤ls显示后 包含rpm$的文件并显示出来
2.建库
rpm -ivh createrepo-0.4.11-3.el5.noarch.rpm
所有软件包拷贝/yum
createrepo /yum
yum库配置文件 指向/yum
vim /etc/yum.repos.d/yum.repo
[rhel-server]
name=server
baseurl=file:///yum
enabled=1
gpgcheck=0
mv `ls |grep .rpm` /opt/server/ 过滤当前文件件中含有.rpm的文件 然后移动到/opt/server
[root@localhost ~]# lftp 192.168.1.254
lftp 192.168.1.254:~> ls
drwxrwxrwx 6 0 0 4096 May 28 02:53 ULE05-21
drwxr-xr-x 2 0 0 4096 Dec 05 2011 pub
lftp 192.168.1.254:/> cd ULE05-21/
lftp 192.168.1.254:/ULE05-21> get biji
lftp 192.168.1.254:/ULE05-21> mirror software/
lftp 192.168.1.254:/ULE05-21>
源码包安装
tar -jxvf lftp-3.5.10.tar.bz2 -C /usr/local/src/
cd /usr/local/src/lftp-3.5.10
1. ./configure --prefix=/usr/local/lftp
2. make
3. make install
修改命令搜索路径
vim /etc/bashrc
添加变量,直接在终端调用
PATH=/usr/local/lftp/bin:$PATH
添加变量位置
export PATH
刷新变量
. /etc/bashrc
应用新命令
lftp-3.5.1-2.fc6.src.rpm安装
安装 rpm -ivh rpm-build-4.4.2.3-27.el5.i386.rpm
rpm -q rpm-build
rpm -ivh lftp-3.5.1-2.fc6.src.rpm 安装半源码包
cd /usr/src/redhat/SPECS/ 切换到目录
rpmbuild -bb lftp.spec 建立rpm包
cd /usr/src/redhat/RPMS/i386/ 切换rpm包目录下
rpm -ivh lftp-3.5.1-2.i386.rpm 执行rpm包安装
安装rpmbuild包
rpm -ivh rpm-build-4.4.2.3-27.el5.i386.rpm
rpm -q rpm-build
安装半源码包
rpm -ivh lftp-3.5.1-2.fc6.src.rpm
切换到目录
cd /usr/src/redhat/SPECS/
建立rpm包
rpmbuild -bb lftp.spec
切换rpm包目录下
cd /usr/src/redhat/RPMS/i386/
执行rpm包安装
rpm -ivh lftp-3.5.1-2.i386.rpm
运行lftp
磁盘管理
df -Th
fdisk -l
硬盘最多主分区 4
硬盘最多扩展分区 1 逻辑结构(逻辑分区)
分主分区
fdisk /dev/sda
Command (m for help): m
d delete a partition 删除分区
l list known partition types 显示分区类型列表
p print the partition table 打印分区表
q quit without saving changes 不保存设置退出
t change a partition's system id 设置分区系统id类型
n add a new partition 创建新的分区
w write table to disk and exit 保存分区表
分区
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Selected partition 4
First cylinder (2691-3916, default 2691): ---- 回车
Last cylinder or +size or +sizeM or +sizeK (2691-3916, default 3916): +1000M ----- 回车
Command (m for help): w
刷新分区表
partprobe /dev/sda
格式化分区
mkfs.ext3 /dev/sda4
挂在分区
mount -t ext3 /dev/sda4 /opt/
删除分区
首先卸载挂在分区
1.umount /dev/sda4
进入编辑模式
2.fdisk /dev/sda
删除分区
Command (m for help): d
所删除分区编号
Partition number (1-4): 4
保存退出
Command (m for help): w
刷新分区表
partprobe /dev/sda ========RHEL6===> partx -a /dev/sda 执行2此刷新分区表
扩展分区和逻辑分区
1.fdisk /dev/sda
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Selected partition 4
First cylinder (2691-3916, default 2691):----回车
Using default value 2691
Last cylinder or +size or +sizeM or +sizeK (2691-3916, default 3916):-------回车
Using default value 3916
Command (m for help): w
partprobe /dev/sda
fdisk /dev/sda
Command (m for help): n
Command (m for help): p
Command (m for help): w
partprobe /dev/sda
mkfs.ext3 /dev/sda5
*********************************************************************
练习:
划分两个逻辑分区 200M
/dev/sda5 ---------> /mnt sda5.txt
/dev/sda6 ---------> /mnt 能不能挂? 看看/mnt/sda5.txt? 怎么才能看到?
/dev/sda5 -----> /mnt
/dev/sda5 ------> /opt? 能不能看到sda5.txt
*********************************************************************
解决u盘只读问题
mount -o remount,rw /dev/sdb1
umount /dev/sdb1
mount -o rw /dev/sdb1 /mnt
查询卷标
blkid -s LABEL 查询所有卷标
e2label /dev/sda1 查询
e2label /dev/sda5 disk5 设置卷标
mount /dev/sda5 /mnt
卷标使用实验:
1.分4个分区 /dev/sda5 /dev/sda6 /dev/sda7 /dev/sda8
2.mount /dev/sda7 /mnt
touch /mnt/sda7.txt
umount /dev/sda7
3.删除sda5分区 partprobe /dev/sda5
4.fdisk -l (sda5 sda6 sda7)
5.mount /dev/sda7 /mnt
查看/mnt/sda7.txt 文件是否存在? 不存在
umount /mnt
6.mount LABLE=disk7 /mnt
查看/mnt/sda7.txt 文件是否存在? 存在
磁盘满
硬盘满(1.空间100% 2.inode号%100)
pardted 超过2TB硬盘用 1024进制,厂家1000进制
Kb Bb Gb Tb Pb Eb
磁盘配额
acl.特殊属性
chattr +i aa.txt
lsattr aa.txt
i 不能删除,修改内容,移动,追加,重命名,修改属性... 可以读,cp
目录不能删除或者创建新的文件
a 不能删除,修改内容,移动,重命名,修改属性... 可以读,cp 追加
目录不能删除 可以创建新的文件
******************************************************************
facl(文件访问控制列表)
1.挂在磁盘时打开acl功能 带有 + 说明有facl 访问控制列表
mount -o acl /dev/sda5 /opt/
getfacl aa.txt
setfacl -m u:robin:rw aa.txt 设置用户权限
setfacl -m g:sal:rw aa.txt 设置组权限
setfacl -m o:rwx aa.txt 设置其他用户权限
setfacl -m m:r 设置umask权限
aa.txt
删除权限
setfacl -x u:robin aa.txt
彻底删除
setfacl -b aa.txt 删除限制权限 用户和组的权限 other保留
**********************************************************************************
作业:
1).建立三个普通用户seker,zorro,shrek.用root用户在/root目录中建立一个文件abc.txt
2).使seker用户既能读又能写abc.txt文件,但不能删除
使zorro用户只能读取,不能写也不能删这个文件
使shrek用户只能删除,不能读写这个文件.
以上三个条件同时成立
/root root root rwxr-w---
/root/abc.txt root root rw-r-----
setfacl -m u:seker:rw /root/abc.txtsetfacl -m u:seker:rx /root/
setfacl -m u:zorro:r /root/abc.txt
setfacl -m u:zorro:rx /root/
chmod o=0 /root/abc.txt
setfacl -m u:shrek:0 /root/abc.txt
setfacl -m u:shrek:rwx /root
2.删除除了/分区 /boot分区 swap分区意外 所有分区
创建逻辑分区 创建6逻辑分区 200M
交换分区扩大缩小
扩大
free -m
fdisk /dev/sda
partprobe /dev/sda
mkswap /dev/sda5
swapon /dev/sda5
free -m
swapon -s 查询交换分区信息
缩小
swapoff /dev/sda5
用文件扩大交换分区
dd if=/dev/zero of=/swap bs=200M count=5
mkswap /swap
free
swapon /swap
free
swapon -s
取消/swap
对/swap 格式化ext3 是否能mount?
ext3 1k
4 块越小 效率低 磁盘利用率高
16 快越大 效率高 磁盘利用率小
取消/swap
对/swap 格式化ext3 是否能mount?
文件系统 ext2 ext3 ext4 swap fat32 ntfs nfs cifs gfs
xfs rezirefs
**********************************************************
Reserved 保留
Maximum mount count: 磁盘检测
ext3-----super block 超级块信息
dumpe2fs /dev/sda5
tune2fs -l /dev/sda5 超看磁盘分区信息
tune2fs -c 50 /dev/sda5 最大挂载次数检测设置
tune2fs -C 10 /dev/sda5 更改已经挂载次数
tune2fs -L newdisk /dev/sda5 更改卷标名称
tune2fs -o acl /dev/sda5 自动开启acl列表功能
tune2fs -o ^acl /dev/sda5 关闭自动开启acl列表功能
**********************************************************
bl -1 小数计算参数
符号链接和硬链接
ln /root/ying.txt /root/Desktop/
ln -s /root/ruan.txt /root/Desktop/
区别
1.软链接不能对源文件执行删除或者重命名
硬链接可以对源文件执行删除或者重命名
2.软链接文件权限永远都是777和源文件权限不同
硬链接文件和源文件权限永远一致
3.软链接文件的inode号和源文件是不同的
硬链接文件的inode号和源文件是相同的
4.软链接在创建中必须写绝对路径
硬链接在创建中可以绝对路径也可以相对路径
5.软链接可以跨文件系统
硬链接不可以跨文件系统
6.软链接可以对目录做链接
硬链接不可以对目录作链接
ll显示的是硬件连接数
***************************************************************
磁盘配额(基于磁盘)
1.开启用户磁盘配额支持
mount -o usrquota /dev/sda5 /mnt
2.生成(检测)用户配额文件
quotacheck /mnt/ 生成磁盘配额配置文件
3.edquota -u robin 对用户开启磁盘配额
Disk quotas for user robin (uid 504):
Filesystem blocks soft hard inodes soft hard
/dev/sda5 0 0 0 0 0 0
大小限制 文件个数
4.quotaon /mnt
5.测试 su - robin 到/mnt
组配额
groupadd uplooking
添加用户 tom 和 jerry 属于uplooking
mount -o grpquota /dev/sda6 /opt
quotacheck -g /opt
edquota -g uplooking
设置软限 硬限
quotaon -g /opt
quota -u tom 查看用户配额
quota -g uplooking 查看组配额
测试 tom 和 jerry
配额限制是uplooking共有
还是tom和jerry分别限制
查询已激活配额的用户或者组
repquota -u /dev/sda5
repquota -g /dev/sda6
edquota -p robin zorro 复制用户配额
old new
grace time 的设置 edquota -t -g 组
**********************************************************
自动挂载
1./etc/rc.local(进去系统前最后一个执行脚本)
mount -o acl,grpquota,usrquota,rw,sync /dev/sda5 /mnt/
2./etc/fstab
/dev/sda6 /opt ext3 defaults,rw,acl 0 0
mount -a 测试
3.autofs(按需mount)不要对系统目录做该服务
/test /etc/auto.test --timeout=10 10秒钟自动卸载
分区(/dev/sda7) 格式化
修改主配置文件
1) vim /etc/auto.master
/test /etc/auto.test
挂载目录 挂载文件
2) mkdir /test 建立挂载目录
touch /etc/auto.test 创建配置文件
3) vim /etc/auto.test 编辑配置文件
disk7 -fstype=ext3,rw :/dev/sda7
(触发名-随意) 文件系统类型及参数 被挂载设备
4)service autofs restart
**********************************************************
测试:
cd /test/disk7
ls /test/disk7
mount
watch -n 1 mount 自动检测mount变化
**********************************************************
计划任务
at
[root@localhost ~]# at 15:55 定制
at> touch /tmp/at.txt
at> <EOT>
job 1 at 2013-05-29 15:55
[root@localhost ~]# at -l 查询
1 2013-05-29 15:55 a root
[root@localhost ~]# atrm 1 删除
crond 计划任务服务
service crond resatrt
crontab -e 定制计划任务
* * * * *
分 时 日 月 周
分(00-59)
时(00-23)
日(1-31)
月(1-12)
周(0-7) 0和7 代表周日
* * * * * 每分钟执行
10 * * * * 每小时10执行
10 02 * * * 每天的2点10分
10 02 13 * * 每个月的13号2点10分
10 02 13 10 * 每年10月13号2点10分
10 02 13 10 5 每年10月13号如果是周5 2点10分执行
10 02-06 10,15,25 8-10,12 5 每年的8-10或者12月10,15,25号如果是周5那么2点到6点的10
分执行
*/15 * * * * 每15分钟执行一次
计划任务保存位置 /var/spool/cron/
每个用户的计划任务都保存/var/spool/cron/ 以用户名字作为文件名
crontab -e -u robin
crontab -l 查询当前用户所有的计划任务
crontab -r 删除当前用户所有的计划任务
系统计划任务/etc/crontab
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/
/etc/amdin/.....脚本
/etc/cron.deny 拒绝普通用户执行计划任务
anacron 开机后执行为执行的计划任务
**********************************************************
5月29日作业:
1.在当前系统时间5分钟后 将install.log复制/tmp
crontab -l
05 * * * * cp /root/install.log /tmp
2.在当前系统时间的5分钟后 将/boot打包保存到/backup目录
要求:
`date +%m-%d-%H-%M-boot
月-日-时-boot.tar.gz
cat back.sh
#!/bin/bash
tar -zcvf /backup/`date +%m-%d-%H`-boot.tar.gz /boot
10 02 * * * /backup/back.sh
3.把镜像文件实现自动挂载 3种方法实现
1.vim /etc/rc.local
mount -o loop /soft/rhel5u8.iso /2tst
2.vim /etc/fstab
/soft/rhel5u8.iso /1tst iso9660 default,loop 0 0
3.vim /etc/auto.master
4.使用autofs触发挂载iso文件 和 yum结合一起使用
vim /etc/auto.master
/iso /etc/auto.iso
mkdir /iso
touch /etc/auto.iso
cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom 有时需要加上
iso -fstype=iso9660,loop :/soft/rhel5u5.iso
iso -fstype=iso9660,loop :/soft/rhel5u5.iso
auto.master
/yum /etc/auto.yum
mkdir /yum
touch /etc/auto.yum
cat /etc/auto.yum
iso -fstype=iso9660,loop :/var/ftp/ULE05-21/rhel5u8.iso
vim /etc/yum.repo.d/5rhel.repo
[rhel-opt-server]
name=server
baseurl=file:///soft/server
enalbe=1
gpgcheck=0
yum clean all
yum list
先做iso的自动
yum库
RAID(磁盘阵列冗余 提高硬盘访问速度)
raid0 raid1 raid5 raid10
条带化写 冗余 带奇偶校验的条带化 raid1+raid0
2块磁盘 2块磁盘 3块磁盘 4块磁盘
500G 500G 500G 500G
1T 500G 1T 1T
mdadm -C /dev/md0 -l 5 -n 3 /dev/sda{6,7,8} 物理硬盘sdb1,sdc1,sdd1
mdadm -C /dev/md0 -l 5 -n 3 /dev/sda{6,7,8} x 1 /dev/sda9 备用盘
-C create 创建 -l level 类型 -n number 硬盘数量
mdadm -D /dev/md0 查看Raid
mdadm -Ds 扫描查看简洁信息
mdadm -S /dev/md0 停止Raid
mdadm -A /dev/md0 /dev/sda{6,7,8} 停止后再启动
删除
mdadm -S /dev/md0
rm -rf /dev/md0
使用
mkfs.ext3 /dev/md0
模拟损坏
dd if=/dev/zero of=data bs=100M count=3
md5sum data
mdadm /dev/md0 -f /dev/sda6 损坏
mdadm /dev/md0 -r /dev/sda6 卸载
mdadm /dev/md0 -a /dev/sda9 挂载
mdadm /dev/md0 -a /dev/sda9 备用磁盘
mdadm -D /dev/md0
永久保存
touch /etc/mdadm.conf
cat /etc/mdadm.conf
DEVICE /dev/sda6 /dev/sda7 /dev/sda8
ARRAY /dev/md0 level=raid5 num-devices=3 metadata=0.90 UUID=3
302db2d:e60e1cfb:5518ba01:f353f556
(mdadm -Ds >> /etc/mdadm.conf)
/usr/share/doc/mdadm-2.6.9/mdadm.conf-example 配置模板
mdadm -S /dev/md0
mdadm -As /dev/md10 重启测试
创建raid时直接指定备盘
mdadm -C /dev/md0 -l 5 -n 3 /dev/sda{6,7,8} -x 1 /dev/sda9
彻底删除
mdadm -S /dev/md0
rm -rf /dev/md0
mdadm --zero-superblock /dev/sda6
mdadm --zero-superblock /dev/sda7
mdadm --zero-superblock /dev/sda8
mdadm --zero-superblock /dev/sda9
lvm(逻辑卷管理)作用:支持硬盘在线扩容
建立lvm过程
创建物理卷
pvcreate /dev/sda6 /dev/sda7
查看物理卷pvs
显示详细信息pvdisplay
pvscan时提示"/dev/cdrom open failed"的解决方法
1.解决方法
vim /etc/lvm/lvm.conf
将
filter = [ "a/.*/" ]
注释掉
将
filter = [ "r|/dev/cdrom|" ]
取消注释即可。
创建卷组
vgcreate vg0 /dev/sda6 /dev/sda7
查看卷组vgs
显示详细信息vgdisplay
创建逻辑卷
lvcreate -L 200M -n /dev/vg0/lv0 vg0
查看逻辑卷lvs
显示详细信息lvdisplay
格式化
mkfs.ext3 /dev/vg0/lv0
挂载
mount /dev/vg0/lv0 /mnt/
查看信息
df -Th
在线扩容
lvextend -L +100M /dev/vg0/lv0
lvs
df -Th
刷新扩展空间
resize2fs /dev/vg0/lv0 300M 刷新到300G
lv缩小
df -Th
umount /dev/vg0/lv0
e2fsck -f /dev/vg0/lv0
resize2fs /dev/vg0/lv0 150M 调整到150M
lvs
lvresize -L 150M /dev/vg0/lv0
实验:
1.创建lv0 大小200M 将lv0格式化化挂载/mnt
在该目录下创建data文件150M 并记录下md5sum值
创建pv
pvcreate /dev/sda6 /dev/sda7 /dev/sda8
创建vg
vgcreate vg0 /dev/sda6 /dev/sda7 /dev/sda8
创建lv
lvcreate -L 200M -n /dev/vg0/lv0 vg0
mkfs.ext3 /dev/vg0/lv0
mount /dev/vg0/lv0 /lvm
2.对lv0进行缩小操作,缩小到140M 可不可以?报错
缩小到160M 可不可以?可以
3.将lv0挂载起来。验证缩小操作是否完成?
在不卸载lv0的前提下将lv0在线扩容到300M
vg扩大和缩小(卷组硬盘数量)
pvcreate /dev/sda8
vgextend vg0 /dev/sda8
缩小(减少硬盘数量数量)
vgreduce vg0 /dev/sda8
数据移动
前提,使用的设备必须在同一个vg
pvmove /dev/sda6 /dev/sda8 指定sda6存储的数据移动到sda8
pvmove /dev/sda8 不指定设备移动数据
删除lv
umount /dev/vg0/lv0 卸载设备
lvremove /dev/vg0/lv0 删除lv -ff 强制删除(数据丢失)
vgremove vg0 删除vg
pvremove /dev/sda{6,7,8}删除pv
lvm快照
创建快照
lvcreate -L 50M -s -n /dev/vg0/lv0-s0 /dev/vg0/lv0
快照名称 原文件
lvm快照
创建
lvcreate -L 50M -s -n /dev/vg0/lv0-s0 /dev/vg0/lv0
1.只使用快照(原lv不挂载)只能在原lv数据基础上作出50M的修改,
一旦到了最大值该快照自动损坏所有的修改都是记录在快照里
2.只是使用原lv(快照保存,不挂载)
使用快照数据恢复原数据(快照size 大于 原lv)
作业:
1.分6个分区200M 做个raid5(400) raid0(400) sda10(200)
创建raid5
mdadm -C /dev/md5 -l 5 -n 3 /dev/sda{5,6,7}
mkfs.ext3 /dev/md5
mount /dev/md5 /raid5/
df -Th
创建raid0
mdadm -C /dev/md0 -l 0 -n 2 /dev/sda{8,9}
mdadm -Ds
mkfs.ext3 /dev/md0
mount /dev/md0 /raid0
df -Th
2.将raid5 创建成pv vg lv
扩大vg sda10
扩大lv到500M
将sda10 数据移动 raid0 移除 sda10
vgcreate /dev/sda10
pvcreate /dev/sda10
vgextend vg0 /dev/sda10
lvextend -L +200M /dev/vg0/lv0
df -Th
resize2fs /dev/vg0/lv0 500M
df -Th
pvs
pvcreate /dev/md0
vgextend vg0 /dev/md0
pvs
df -Th
pvmove /dev/sda10 /dev/md0
1.只使用快照(原lv不挂载)
写入母盘数据,然后卸载母盘,挂载快照,
查看快照内容和母盘数据一样,只能修改快照数据,母盘数据不变。
重新挂在母盘,原来数据依旧存在
2.只是使用原lv(快照保存,不挂载)
使用快照数据恢复原数据(快照size 大于 原lv)
系统启动过程(排错)
1.bois-------->启动项(光盘,硬盘,u盘,网路,软盘)------->硬盘
2.引导程序(bootloader(grub.conf))MBR(主引导记录 512字节)(446引导程序-64(分区
表)--2字节magic number aa55)
stage1(446)---> stage1.5------>stage2
3.读取grub.conf文件 找到内核 initrd文件
引导程序损坏
光盘修复模式
boot:linux rescue
在内存中打开光盘系统
mkdir /a
mount /dev/sda2 /a
ls /a -------原根目录结构
安装引导程序
grub
grub> root (hd0,0)
grub> setup (hd0)
success 安装成功
4.启动内核,启动文件------> init
5.init------>/etc/inittab
启动级别
6.执行rc.sysinit 初始化操作系统(fstab)
7.运行对应级别启动脚本目录rc[1-6].d 启动系统中定义的服务
8./etc/rc.local 进入系统前最后一个执行脚本
9.加载文本的环境(加载图形环境)
10.login----->bash环境配置文件
ts1.sh
inittab
fstab
passwd
修改启动级别
vi /etc/inittab
第18行 id:5:initdefault:
vi /etc/fstab
defaults
vi/etc/passwd
用户密码
ts2.sh
grub.conf
inittab
fstab
passwd
root (hd0,0)
kernel /vmlinuz-2.6.18-308.el5 ro root=LABEL=/ rhgb quiet 1
initrd /initrd-2.6.18-308.el5.img
vi /etc/inittab
vi /etc/fstab
vi /etc/passwd
故障3
缺少grub内核
kernel /vmlinuz-2.6.18-308.el5 ro root=LABEL=/ rhgb quiet 1
sh-3.2# grub
sh-3.2# root (hd0,0)
sh-3.2# setup (hd0)
缺少卷标识 查看 /etc/fstab 内卷标修改
e2lable /dev/sda1 /boot
e2lable /dev/sda2 /
修改启动级别
vi /etc/inittab
第18行 id:5:initdefault:
vi /etc/fstab
defaults
vi/etc/passwd
用户密码
wall " you lose "
ts1.sh
inittab
fstab
passwd
ts2.sh
grub.conf
inittab
fstab
passwd
ts3.sh
引导程序
grub.conf
卷标
inittab
fstab
passwd
ts4.sh
引导程序
grub.conf
卷标
inittab
fstab
passwd
mount被删除
光盘系统
mkdir /a
mount /dev/hdc /a/mnt
chroot /a
rpm -ivh /mnt/Server/util-linux-2.13-0.59.el5.rpm --force
rc.local
tmp目录权限被修改
crontab -e
查找命令
计划任务
系统启动过程(排错)
编译内核(模块管理)
网络管理
编译内核(模块管理)
显示加载模块
lsmod
查询模块
modinfo ext3
移出模块
rmmod 8139too
手动加载模块
insmod /lib/modules/2.6.18-308.el5/kernel/drivers/net/8139too.ko
动态加载模块
modprobe 8139too 依赖/lib/modules/2.6.18-308.el5/modules.dep 依赖库文件
重建依赖关系库
depmod -a 建立 modprobe 8139too
查看内核版本号
uname -r
2.6.18-308.el5
主版本.次版本号.修订版本号
次版本号如奇数 测试版 beta
次版本号如偶数 稳定版 release
内核参数调整
cat /proc/sys/net/ipv4/icmp_echo_ignore_all
值为1忽略所有的ping命令
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
cat /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
忽略ping广播
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
cat /proc/sys/vm/drop_caches
清楚缓存
echo 1 > /proc/sys/vm/drop_caches
cat /proc/sys/net/ipv4/ip_forward
开启路由转发功能 open route
echo 1 > /proc/sys/net/ipv4/ip_forward
编译内核
tar -jxvf linux-2.6.30.tar.bz2 -C /usr/local/src/
/usr/local/src/linux-2.6.30/Documentation/devices.txt
创建字符设备
mknod -m 640 /dev/sda11 b 8 11
权限 设备名称 类型 主设备号 从设备号
编译内核文件
make mrproper 清理以前编译痕迹
make menuconfig 执行编辑
make 编译
make modules_install 模块安装
make install 安装
修改.i�文件
解压 .img 文件
zcat initrd-2.6.30.img | cpio -i
cd /tmp
mkdir init
cp /boot/initrd-2.6.30.img /tmp
cd init
zcat ../initrd-2.6.30.img | cpio -i
打包
find . | cpio -c -o >> ../initrd
cd /tmp
gzip -9 initrd
mv initrd.gz initrd.img
测试编译 .img 文件
cp initrd.img /boot/
vim /boot/grub/grub.conf
title Red Hat Enterprise Linux Server (2.6.30)
root (hd0,0)
kernel /vmlinuz-2.6.30 ro root=LABEL=/ [rhgb quiet] "[]" 内去掉后 快速启动
initrd /initrd.img 添加行
title Red Hat Enterprise Linux Server (2.6.18-308.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-308.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-308.el5.img
***********************************************************************************
*
网络管理
设置ip
setup
service network restart 重启网卡
/etc/init.d/network restart
网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
查看网卡信息
ifconfig eth0
ifconfig eth0 10.10.10.10
ifconfig eth0 down 或 ifdown eth0 停用网卡
ifconfig eth0 up 或者 ifup eth0 启用网卡
ifdown eth0 || ifup eth0 || 前一个命令正确执行,后一个命令不执行 (逻辑或)
ifdown eth0 && ifup eth0 && 前一个命令必须正确执行,然后执行后一个命令 (逻
辑与)
ifdown eth0 ; ifup eth0 ; 不管前一个命令是否正确执行,后一个命令都
要执行
临时修改MAC地址
ifconfig eth0 down
ifconfig eth0 hw ether 00:01:22:a1:c2:3d
ifconfig eth0 192.168.1.188
ifconfig eth0 up
service network restart
永久修改 /etc/sysconfig/network-scripts/ifcfg-eth0 相应行
网卡别名
ifconfig eth0:0 10.10.10.10
永久保存
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0
DEVICE=eth0:0
BOOTPROTO=none
HWADDR=00:0c:29:d5:0b:2b
ONBOOT=yes
IPADDR=10.10.10.10
NETMASK=255.255.255.0
GATEWAY=10.10.10.1
TYPE=Ethernet
service netwrok restart
多余网卡备份网卡配置文件
/etc/modprobe.conf
/etc/sysconfig/hwconf hw配置的实际mac地址
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/networking/devices
/etc/sysconfig/networking/profiles/default
删除虚拟网卡地址
ip add del xxx.xxx.xxx.xxx dev eth0:0
添加路由
route -n 查看
route add default gw 192.168.1.254
route del default gw 192.168.1.254
traceroute www.baidu.com 路由追踪
arping 192.168.1.254 检测冲突检测
arp 检查连接本机的地址
ip addr show 显示所有网卡信息
主机名
hostname
hostname robin.com
/etc/sysconfig/network 主机名配置文件
HOSTNAME=robin.com
查找命令
1.which 查找命令位置
2.whereis
3.grep 过滤文件
4.locate(依赖 updatedb 命令) 查找昨天创建文件
vim /etc/crontab 系统自动维护
vim /etc/anacrontab 未执行任务 延期 开机65分钟维护
tmp不维护 7天后自动清空不用文件
5.find
find / -name .img 按照 名称超找
find / -type p -ls 按照 类型查找
find / -links 30 -ls 按照 硬连接数查找
find /home -user xiao -ls 按照 用户名查找
find /home -group xiao -ls 按照 组查找
find /home -nouser -ls 查找无用户名文件
find /home -nogroup -ls 查找无组名文件
find /home \(-nouser -a nogroup \) -ls 显示 无用户名与无组的文件
find /home \(-nouser -o nogroup \) -ls 显示 无用户名或无组的文件
find /home -nouser -exec rm -rf {} \; 查找无用户名的文件 然后删除 rm -rf {} \; 固定格式
find /home -nogroup -ok rm -rf {} \; 交互式删除 查找到满足条件的文件
按照 文件大小查找文件
find /home/test -size 300M 等于
find /home/test -size +150M -a -size -350M 大于小于 全满足
find /home/test -size -150M -o -size +350M 小于大于 任其一
***************************************************************************
stat
File: `mac.sh'
Size: 461 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 58425610 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2013-06-04 10:02:04.000000000 +0800
访问时间
Modify: 2013-06-04 09:50:51.000000000 +0800
修改时间
Change: 2013-06-04 09:50:51.000000000 +0800
属性权限
*****************************************************************************
修改文件时间
touch -m -d 20120101 aa.txt 创建文件带时间
touch -m -t 201010101010.10 aa.txt 创建文件日期时间
******************************************************************************
按照时间查找
find /home/test -mtime +8 查询8天以前的文件
find /home/test -mtime -8 查询8天以内的文件
find /home/test -mtime +2 -a -mtime -10 查询2天以前,10天以内文件
find /home/test -mtime +2 -o -mtime -10 查询2天以前或10天以内文件
按照 权限查找 (9个权限位置)
find . -perm 644 正好匹配
find . -perm +314 任意匹配 含有一个字符就可以
find . -perm -424 完全匹配 子集(匹配任意重合位置)
内存溢出查询
find / -type f | xargs file
横向排列查出字段
cut -d: -f 1 /etc/passwd | xargs
查找出字段创建成文件夹
cut -d: -f 1 /etc/passwd | xargs mkdir
服务管理
dhcp
安装包:dhcp-3.0.5-31.el5.i386.rpm
启动服务:service dhcpd restart 或者/etc/init.d/dhcdp restart
模板文件:/usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample
配置文件:/etc/dhcpd.conf
覆盖原来文件
cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
修改虚拟机 IP地址 host-only 模式 开启dhcp服务 否则会有启动dhcp服务失败的情况
ifconfig vmnet1 172.16.17.100
修改参数
ddns-update-style interim;
ignore client-updates;
subnet 172.16.17.0 netmask 255.255.255.0 { # 网段
# --- default gateway
option routers 172.16.17.1; # 网关
option subnet-mask 255.255.255.0; # 掩码
option nis-domain "domain.org";
option domain-name "domain.org";
option domain-name-servers 172.16.17.1,8.8.8.8; # DNS地址
option time-offset -18000; # Eastern Standard Time
# option ntp-servers 192.168.1.1;
# option netbios-name-servers 192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 172.16.17.100 172.16.17.200; # 地址池
default-lease-time 21600;
max-lease-time 43200;
# we want the nameserver to appear at a fixed address
host ns {
next-server marvin.redhat.com;
hardware ethernet 12:34:56:78:AB:CD; # 指定MAC地址
fixed-address 207.175.42.254; # 指定获取IP地址
}
}
启动服务
service dhcpd restart
netstat -anplt -a all n 去掉host解析 p pid l长格式 t tcp u udp
租约文件
动态查看分配地址 (服务端)
tail -f /var/lib/dhcpd/dhcp.leases
客户端获取文件 (客户端)
tail -f /var/lib/dhclient/dhclient-eth0.leases
杀死dhcp客户端进程 pkill dhclient
工作原理(服务端:tail -f /var/log/messages)
Client Server
-------DHCPDISCOVER------->
<------DHCPOFFER-----------
-------DHCPREQUEST-------->
<------DHCPACK-------------
DHCP多网段分配
DHCP服务器配置
vim /etc/dhcpd.conf
subnet 10.10.10.0 netmask 255.255.255.0 {
option routers 10.10.10.10;
option subnet-mask 255.255.255.0;
option domain-name "domain.org";
option domain-name-servers 202.106.0.20;
range dynamic-bootp 10.10.10.1 10.10.10.253;
default-lease-time 21600;
max-lease-time 43200;
}
subnet 100.100.100.0 netmask 255.255.255.0 {
option routers 100.100.100.254;
option subnet-mask 255.255.255.0;
option domain-name "domain.org";
option domain-name-servers 202.106.0.20;
range dynamic-bootp 100.100.100.1 100.100.100.253;
default-lease-time 21600;
max-lease-time 43200;
}
route add default gw 10.10.10.254 网关设置
DHCPRELAY服务器 (中继服务器)
安装软件:dhcp-3.0.5-31.el5.i386.rpm
ifconfig eth0 10.10.10.254
ifconfig eth1 100.100.100.254
开启转发功能
echo 1 >/proc/sys/net/ipv4/ip_forward
vim /etc/sysconfig/dhcrelay
INTERFACES="eth0 eth1" 网卡接口
DHCPSERVERS="10.10.10.10" dhcp服务器的ip
===================================
ssh服务(远程连接telnet 23)
启动服务:service sshd restart | start | stop |status
配置文件 /etc/
端口:22
nmap 192.168.1.49 扫描对方端口
远程拷贝 authorized_keys
scp install.log 192.168.1.254:/tmp 远程登录后操作
scp 192.168.1.49:/root/install.log /tmp/ 本地操作ssh远程
ssh [email protected]
端口改变后登录与远程拷贝
ssh 192.168.1.254 -p 54321
scp -P 54321 anaconda-ks.cfg 192.168.1.254:/tmp/
修改端口
vim /etc/ssh/sshd_config
Port 54321
wall 广播
write root /dev/pts/13 给某个登录用户发送
netstat -anplt
kill -9 pid号码 踢掉单一用户
whoami 当前用户身份
who i am 登录用户身份
last 登录记录
lastlog 最后登录用户日志
作业:
给虚拟机分一个在200.200.200.0/24网端的ip
指定200.200.200.200给虚拟机
ssh密钥登录
ssh-keygen
在执行该命令用户的家目录下产生.ssh目录保存密钥信息
id_rsa id_rsa.pub
私钥 公钥
scp id_rsa.pub 192.168.1.240:/root/.ssh/authorized_keys
两台服务器互相登录不需要密码。
服务器1.ssh-keygen
scp id_rsa.pub 192.168.1.240:/root/.ssh/authorized_keys
服务器2.ssh-keygen
cat id_rsa.pub >> authorized_keys
scp authorized_keys 192.168.1.254:/root/.ssh/
服务器拒绝密码验证
vim /etc/ssh/sshd_config 修改60行
PasswordAuthentication no
重启服务
service sshd restart
============================================================================
syslogd+日志轮转
日志存放位置/var/log
日志的配置文件/etc/syslog.conf
启动服务:service syslog restart
AAAAA.BBBBB CCCCC
AAAAA产生日志的对象
mail
authpriv
cron
news
uucp
syslog
BBBBB日志级别(8)
debug
info
notice
warning
err
crit
alter
emerg(panic)
mail.info 从info以上信息显示
mail.=err 只要err信息
mail.=!err 除了err 其他记录都显示 !取反的意思
定义到 /etc/syslog.conf 内显示错误信息
CCCCC 保存日志的位置
*********************************************************************
所有用户信息
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure 认证信息全部保存
*.emerg * 所有紧急信息都存放 可存放位置
**********************************************************************
CCCCC 保存日志的位置 gpm 鼠标进程
1.保存文件 要有可读写权限
*.info;mail.none;authpriv.none;cron.none * /tmp/log.log
2.发送终端 tty 查询位置
*.info;mail.none;authpriv.none;cron.none /dev/pts/0
3.发送给用户
*.info;mail.none;authpriv.none;cron.none robin
自定义日志
例子:
vim /etc/ssh/sshd_config 自定义日志位置
SyslogFacility local6 定义位置
vim /etc/syslog.conf 添加自定义日志文件位置
local6.* /tmp/ssh.log
重启服务生效
service sshd restart
service syslog restart
日志将存放在/tmp/ssh.log
=========================================================================
远程日志
服务端 vi /etc/sysconfig/syslog
# Options to syslogd
# -m 0 disables 'MARK' messages.
# -r enables logging from remote machines
# -x disables DNS lookups on messages recieved with -r
# See syslogd(8) for more details
SYSLOGD_OPTIONS="-m 0 -r -x"
客户端 vi /etc/syslog.conf
*.info;mail.none;authpriv.none;cron.none @192.168.1.254
service syslog restart
过滤日志信息 grep 192.168.1.188 var/log/message
iptables -L 查看防火墙
getenforce 查看selinx状况
/etc/selinux/config 关闭disable
setenforce 0
chkconfig --level 2345 服务名称 off/on
ntsysv 图形化管理服务
====================================================================
下午课程
日志切割
主配置文件:/etc/logrotate.conf
子配置文件:/etc/logrotate.d/
touch /etc/logrotate.d/test
/var/log/test.log {
missingok
daily
notifempty
rotate 7
create 0700 root root
}
touch /var/log/test.log
强制切割日志
logrote -f /etc/logrotate.d/test
练习:
#!/bin/bash
while :
do
cat /root/install.log >> /var/log/test.log
sleep 2
done
1./var/log/test.log 对该文件进行日志轮转
每天一次 空文件不切割 每天切割一次 保留7分 文件权限700
/etc/logrotate.d/test
/var/log/test.log {
missingok
notifempty
daily 天 时间 主要
rotate 7 7份
create 0700 root root
}
2./var/log/test.log 每分钟切割一次 大小如果大于10k ?
/etc/logrotate.d/test
/var/log/test.log {
missingok 丢失不提示
notifempty 空文件
size 10K 文件大小
rotate 7
create 0700 root root 创建文件权限
}
crontab -e
* * * * * logrotate /etc/logrotate.d/test
===========================================================
文件服务器搭建nfs samba vsftpd
nfs服务器
配置文件 /etc/exports
启动服务:service portmap restart(rpcbind)
service nfs restart
端口:2049
查看端口 /etc/services
配置
vim /etc/exports
/nfs *(rw,sync,no_root_squash)读写,同步 没有root切换
/nfs 192.168.1.0/24(rw) 10.10.10.0/24(ro) 网段划分权限
/nfs 192.168.1.240/32(rw) 单机用户
service portmap restart
service nfs restart
exportfs -a 直接刷新 生效配置
chmod o=rwx /nfs
客户端
showmount -e 192.168.1.254
mount 192.168.1.254:/nfs /mnt
作业:
1.raid+lvs+nfs nas服务器
服务器端设置:
fdisk -l
partprobe /dev/sdb
partprobe /dev/sdd
partprobe /dev/sde
mkfs.ext3 /dev/sdb1
mkfs.ext3 /dev/sdd1
mkfs.ext3 /dev/sde1
创建raid5
mdadm -C /dev/md5 -l 5 -n 3 /dev/sdb1 /dev/sdd1 /dev/sde1
mkfs.ext3 /dev/md5
mdadm -Ds
echo DEVICE /dev/sdb1 /dev/sdd1 /dev/sde1 > /etc/mdadm.conf
mdadm -Ds >> /etc/mdadm.conf
创建lvm
pvcreate /dev/md5
vgcreate vg0 /dev/md5
lvcreate -L 10G -n /dev/vg0/lv0 vg0
mkfs.ext3 /dev/vg0/lv0
mount /dev/vg0/lv0 /lv0
df -Th
编辑 nfs 配置文件
vim /etc/exports
添加
/lv0 *(rw,sync,no_root_squash)
启动服务
service portmap restart
service nfs restart
动态刷新配置
exportfs -a
查看连接用户
showmount -a
查看共享目录
showmount -e
客户端设置
service portmap restart
2.mount lv0时 自动挂载3方式(autofs 随意触发挂载)
方法1
编辑 vim /etc/rc.d/rc.local
添加
mount 10.8.8.8:/lv0 /nfs1
实现开始自动挂载到nfs1目录下 nfs1目录存在情况下
方法2
编辑 vim /etc/fstab
添加
10.8.8.8:/lv0 /nfs8 nfs rw 0 0
实现开始自动挂载到/nfs8目录下 nfs8目录存在情况下
方法3
编辑自动挂载配置文件
vim /etc/auto.master
添加挂载点
/nfs88 /etc/auto.nfs88 --timeout=20
创建挂载配置文件
vim /etc/auto.nfs88
任意挂载
* -fstype=nfs,rw 10.8.8.8:/lv0
重启自动挂载服务
service autofs restart
触发挂载
cd /nfs88/nfs8
查看效果
df -Th
samba
安装包:
samba-3.0.33-3.37.el5.i386.rpm
samba-client-3.0.33-3.37.el5.i386.rpm
samba-common-3.0.33-3.37.el5.i386.rpm
启动服务:
service smb restart
配置文件:
/etc/samba/smb.conf
匿名配置
security = share
[smb]
comment = test server
path = /smb 共享目录
public = yes 共享
writable = yes 可写
browseable = no (no 为不可见共享)
chmod 777 /smb
测试
linux
smbclient -L //192.168.1.254
smbclient //192.168.1.254/smb
挂载smb
mount //192.168.1.254/smb /opt
用户验证
security = user
[nfs]
comment = nfs
path = /nfs
writable = yes
valid users = tom @tom 所有组用户添加进samba数据库
write list = tom
read list = @tom
认证可写用户
comment = nfs
path = /nfs
valid users = tom @kkk所有组用户添加进samba数据库
write list = kkk
认证可读用户
comment = nfs
path = /nfs
writable = yes
valid users = tom @kkk 所有组用户添加进samba数据库
read list = @kkk
#windows创建文件和目录的权限掩码
directory mask = 0555
create mask = 0444
#访问控制
hosts allow = 192.168.1.240
hosts deny = 192.168.1.240 exect 192.168.1.5 先拒绝 后允许
useradd tom
smbpasswd -a tom
pdbedit -L 查询samba用户
测试
smbclient -U tom%123 //192.168.1.254/nfs
mount -o cifs username=tom,password=123 //192.168.1.254/nfs /opt
===================================================================
练习:
在/tmp目录下创建两个目录/tmp/u1 /tmp/u2
用户jack 组upup(abc1 abc2)
jack 可以rw /tmp/u1目录 upup组 只读
upup 可以rw /tmp/u2目录 jack 只读
useradd jack
groupadd upup
useradd -g upup abc1
useradd -g upup abc2
smbpasswd -a jack
smbpasswd -a abc1
smbpasswd -a abc2
pdbedit -a -u jack
pdbedit -a -u abc1
pdbedit -a -u abc2
pdbedit -L
vim /etc/samba/smb.conf
security = user
[u1]
comment = u1
path = /tmp/u1
valid = jack @upup
write list = jack
[u2]
comment = u2
path = /tmp/u2
writable = yes
valid = jack @upup
read list = jack
====================================================================
下午课程
vsftpd 服务
安装包:
vsftpd-2.0.5-24.el5.i386.rpm
lftp-3.7.11-7.el5.i386.rpm
端口: 20 数据 21 控制
配置文件位置:/etc/vsftpd/vsftpd.conf
启动服务:service vsftpd restart
服务主目录:/var/ftp 只能为 755
配置匿名服务(ftp)
默认vsftpd服务器只能下载
允许上传
anon_upload_enable=YES 27行