home 家目录
dev 设备挂载目录
mnt 临时挂载目录
media 媒体
cd 切换目录
cd .. 退出 返回上一级目录
ls 列出当前目录内容
-a all 所有文件 包括隐藏文件
-l d/r-x/r-x/r-x
1、代表文件的类型 d目录 l 链接文件 -普通文件
2 3 4、文件的权限 rwx read write x执行 -代表没有
2、文件的所属者的权限
3、文件所属组的权限 wjw class11
4、其他用户的权限
创建文件夹:man 帮助
mkdir [参数] 文件夹名字
参数:-m 创建文件的同时为文件设置权限
u=rwx g o user(所属者) group(所属组) other(其他用户)
删除文件夹:
rmdir 删除空目录
-p 逐级删除
-v 显示删除状态
复制文件或目录
cp 源文件名 复制后的文件名
-a 连同文件的属性一起复制
移动文件
mv
mv a b //将a重命名为b
mv a b/ //将a移动到b里
mv a b/c //将a移动到b里,并重命名为c
删除文件或目录:对比 rm rmdir
rm remove
-r 删除文件夹 逐级进入 逐级删除
-f 强制 不询问
查看文件:/etc/passwd
创建文件 touch
查看文件:
cat + 文件名 正向查看 tac+文件名 倒序查看
more + 文件名 显示一部分 空格显示剩余的 Q 退出
less + 文件名 逐行查看 方向键 Q退出
head + 文件名 显示文件的前10行
tail + 文件名 显示文件的后10行
编辑文件
vim a.txt 编辑a.txt这个文件
解释:如果a.txt事先是存在的 继续编辑这个文件
如果事先不存在,先创建a.txt在编辑
vim编辑器:
三种模式:
命令模式
输入模式:先按i 可以输入
末行模式
先按i进行输入 (进入的是输入模式)
输入完了按esc键 (退出输入模式,进入命令模式)
在输入: (末行模式)
在输入wq就保存退出了
vim编辑器
:末行模式
:set nu 设置行号
:set nonu 取消行号
:q 退出 q! 强制退出
:w 保存 wq 保存并退出
:r /mnt/b.txt 将文件读入到当前文件的最后一行(tab补齐可以使用)
:/关键字 查找 找到的内容高亮显示 n(next)向下查看
:s/要替换的/替换成的 --只替换一次 找到一个替换完成后面不管
% s/要替换的/替换成的 --每行都执行 在这一行找到一个替换完就不管了
% s/要替换的/替换成的/g 全部替换
:2,7 co 7 复制2到7行的内容粘贴到底7行后面
命令模式:
dd 剪切 3dd 从当前光标向下剪切3行
yy复制 3yy 从当前光标向下复制3行
p 当前光标所在位置向下粘贴
P(大写)当前光标所在位置向上粘贴
gg快速回到首行 G 快速回到末行(最后一行) 26G 快速定位到26行
x 删除当前光标覆盖的内容
r 在输入其他内容 替换当前光标覆盖的内容
d^删除当前光标前的内容
d$ 删除当前光标后的内容
ctrl + 方向键 空格的跳 以空格为分界跳
数字+方向键 10 -> 向左跳10的字符
u 撤销上一次的行为
grep过滤
grep “root”a.txt --在a.txt;里查找root关键字
-n 带行号显示
--color 关键字高亮显示
-v 反选 不看关键字所在的行
-c 统计关键字出现的次数
“^root” 过滤关键字开头的行
“root$”过滤关键字结尾的行
不单单可以过滤文件里的内容还可以过滤别的
ls | grep shadow -- | 管道符 将前面的内容作为后一项得到参数
linux中用户和组:
windows创建一个用户 默认将用户添加到users组
linux创建一户 默认创建一个同名组
linux中有几个特殊文件(etc文件夹下)
passwd 存放的是用户信息
shawod 存放用户的密码信息
group 存放组的信息
passwd文件:用户信息
wjw:x:500:500:jw:/home/wjw:/bin/bash
1、用户名
2、密码占位符
3、uid user id 用户id
0 永远是超及用户 root
1-499 程序用户(没有登录权限的用户)
500以上 普通用户
4、gid group id
5、用户信息
6、家目录所在位置 wjw root
7、用户的登录权限 /bin/bash有登录权限
/sbin/noligin 没有登录权限
命令解释器(软件) ls grep useradd
登录权限和没登录权限?
执行程序
shadow文件 密码信息
wjw:xxxxxxx:18216:0:99999:7:::
1、用户名
2、加密后的密码信息
3、密码最后修改时间 天数(举例1970年1月1日)
4、密码最短有效期 5密码在五天内不能修改
5、密码最长有效期
6、密码过期前7天提示
7、密码不活跃期 5密码过期五天以内还可以修改
8、密码失效期
group文件: 组信息
bin : x : 1 : bin,daemon
1、组名
2、组密码占位符
3、gid group id
4、组成员
创建组:
groupadd [选项] 组名
选项: -g 指定gid
-o 创建可重复gid组
-f 强制执行 有就用原来的 没有就创建(重复不报错)
groupdel + 组名 删除组
修改组信息:groupmod + 组名
上面的
g
o
n 重命名 groupmod -n 新名 旧名
创建用户:
useradd [选项] 用户名
创建用户的同时 会创建家目录和邮箱文件
家目录所在位置 /home
邮箱文件所在位置 /var/spool/mail/
选项:
-u uid 制定用户id
-g 制定用户的组 gid 组名
-G 附加组(一个用户可以存在多个组中)
-M 不创建家目录
-s 指定用户登录权限 没有登陆权限-s /sbin/nologin
-o uid可重复
删除用户:
userdel +用户名 (只是删除用户 用户家目录和邮箱文件还存在)
-r将用户彻底删除
-f删除一个正在登录的用户
修改用户信息:
usermod +用户名 (上面的参数还都能用)
查看用户信息:
id+用户名
查看文件权限 ls -l 所有文件权限
ls -dl 查看当前文件权限
ls -dl kaso 查看指定文件权限
文件权限修改:change modify
chmod 用户 选项 权限 文件名
举例: 用户:u g o
选项:+ - =
权限:rwx
chmod u+x kaso5
chmod g-r kaso5
chmod o=rw- kaso5
rwx r=4 w=2 x=1 6/6/6 4/4/4 5/5/5 r-x/r-x/r-x
十六进制 f 15
十进制 9
八进制 7
二进制 1
八进制 二进制 666 110/110/110
rw-rw-rw-
r/w/x
0 000 --- 0没有 1是有
1 001 --x
2 010 -w-
3 011 -wx
4 100 r--
5 101 r-x
6 110 rw-
7 111 rwx
修改文件的所属者 所属组 root wjw
修改文件所属者:
chown 要改成谁 文件名
修改文件所属组:
chgrp 要改成的组 文件名
源码包安装: GUN 源码压缩上传
1、查找
find 查找某一个目录下是否存在某个具体文件
制造大文件“
dd if=/dev/zero of=/mnt/bigfile1 bs=1M count=10
input file从哪输入
output file 输出到哪
bs size =1M count 10
find 查找范围 查找类型 查找条件 (模糊查询)
查找类型:按名字 -name 查找条件:
按类型 -type d 文件夹 f 普通文件 l 连接
按大小 -size 5M 左右 +5M 大于 -5M小于
grep ls | C*
(find /路径/ -d 名
find /路径/ -name 名
ls /路径/ | grep 名
cd /路径/名 按两次tab键 列出显示)
2、压缩
gzip + 文件名
bzip2 + 文件名
只能压缩文件
tar 能压缩文件夹的
tar -cf kaso5.tar kaso5(并不能改变文件的大小,但是可以将一个文件夹进行归档,形成一个文件)
将kaso5文件夹下的所有文件进行压缩,压缩成新创建的文件叫kaso.tar
解释:tar 压缩命令
-cf 新创建一个文件 (新文件的后缀必须是.tar,否则虽然能压缩,但是解不开)
create创建 f file文件
解压缩
gunzip + 压缩文件名.gz
bunzip + 压缩文件名.bz2
tar -xf 压缩文件 -C(大)要解压到的位置
编译:
自己写这一个脚本
vim test.c
#include <stdio.h>
main(){
printf("hellow word");
}
对脚本进行编译:
gcc test.c -o test // 编译test.c这个脚本,out生成test可执行文件
解释:gcc 一个编译器
-o out
源码包安装:
vim README ----> vim INSTALL
1、./configure --prefix=安装路径 //检测安装路径是否具备安装条件
2、make //开始编译 执行大量的gcc
3、make install //正式安装
4、安装路径下 /bin/apachectl start 启动软件了
stop 关闭
restart 重启
修改配置文档:
安装路径下: conf/httpd.conf
末行模式下: /ServerName 91行
加一行: ServerName localhost:80 (解决启动警告问题)
网页存放位置:
安装路径下/htdocs/index.html
关闭防火墙:service iptables stop
验证:浏览器 localhost 127.0.0.1 欢迎界面 It works
如果没有出现:
netstat -antpl | grep httpd 查看所有httpd
killall httpd 杀死所有httpd
./apachectl start 重启httpd
编译后的软件包安装:
软件所在位置:
/media/cenos_6.9_final/packages
#######.rpm .rpm结尾的文件 都是编译后的软件包
rpm (Redhat package manger)
第一步:确定这个软件有没有被安装过
rpm -qa //q报 错提示 a all 列出所有已经安装过的软件包
第二步:确定软件的功能
rpm -qpi //p package 包 i infromation 显示信息
第三步:确定包的安装位置
rpm -qpl //list 列出包的安装位置
第四步:安装
rpm -ivh //i install 安装 v 显示详细信息 h 以#作为进度条
使用: tree 树状显示当前文件夹的内容
tree+文件名 树状显示制定文件夹内容
卸载:rpm -e 包名 (软件名) 不用版本号
// e erase (橡皮)
查看某一个文件或文件属于谁
rpm -qf +文件或文件夹的名称
yum安装:
软件依赖:A->B->C->D
rpm -e vim-common 被vim-enchanced需要
先卸载enchanced 再卸载common
依赖关系表:存在光盘中
/media/centos_6.9_final/repodata (本地路径)
yum源文件:作用安装软件时,帮助有依赖关系的软件找到依赖关系表
依赖源关系表:有点指向网络
有的指向本地
自己编写yum源文件,将依赖关系指向本地
编写位置:/etc/yum.repos.d
vim xxxx.repo
【标签】 //标签任意 不要有空格
name=xxxxxxxxx //描述 任意 不能有空格
baseurl=file://路径 //路径本地依赖关系表所在位置
gpgcheck=0 //公钥验证 0不验证 1验证
清缓存: yum clean all
安装:yum install 要安装的软件名 -y //直接自动安装 不询问
卸载:yum erase 软件名 -y //不询问直接卸载 不建议 有些关联的软件还有用
添加硬盘
实验步骤:
1.添加一个硬盘
2.查看磁盘信息 /dev目录下可以查看 sda sdb sdc sde
3.root身份 fdisk -l
4.用到的分区工具 parted (软件)
1.parted /dev/sdb 启动分区工具
2.mklabel gpt make lable 确定分区表
3.mkpart primary 1 200
在sdb硬盘上从1M到200M区间进行分区
quit 退出分区工具
查看分区信息
ls dev/sdb1 sdb2
lsblk
cat /proc/partition
parted /dev/sdb -s print
5.使用分区
1.建立文件系统
mkfs.ext4 -b 1024 /dev/sdb1
//make file system -b 指定单元格大小
2.挂载:才能存放文件
mount /dev/sdb1 /mnt/kaso
//mount 挂载 将sdb1 挂载在kaso文件夹上 在kaso文件夹存放数据就等于在sdb1上存数据
3.卸载:
umount /dev/sdb1 /mnt/kaso
//卸载后,文件不会丢失,还在sdb1中,只是在目录中没有了,从新挂载就恢复了
6.查看磁盘使用情况
df -Th
7.删除分区
parted /dev/sdb1 -s rm 序号
永久挂载:
mount /dev/sdb1 /mnt/kaso 挂载在临时 重启后失效
永久挂载:修改挂载列表 /etc/fstab (file system table)
设备名 挂载点 文件系统类型 属性 0开机检测级别 0宕机记录
1记录
0不记录
在vim编辑器中 末行模式下:
:r /文件路径
:r !Linux命令 将命令返回值写入到文件的最后一行
命令模式下:ctrl+v+方向键 实现区域选择
blkid /dev/sdb1 查看设备uuid
添加一个vfat32系统
mkfs.vfat -F32 /dev/sdb2
建立加密分区
前提: 空白分区
1、对空白分区建立加密系统:
cryptsetup luksFormat 分区名 //建立加密系统 YES 两次密码
2、建立映射问文件:
cryptsetup luksOpen 设备名 映射名 //输密码 建立好的映射在dev/mapper
3、对映射做文件系统
mkfs.ext4 映射名
4、挂在映射使用
5、卸载 关闭映射
umount
cryptsetup luksClose 映射名
6、再次使用
1、再次开启映射 需要密码的
2、映射的名字的可以不一样
3、再次开启的映射直接使用就行 不需要再建立文件系统
4、加密分区没必要永久挂载 没意义
逻辑卷:
物理 physical 组 group 卷 volume 逻辑 logical 创建 create 扫描 scan 显示 display
1、创建物理卷 pv
pvcreate /dev/sd[bcd]
查看:pvsacn pvdisplay
2、创建卷组:
vgcreate 卷组名字 -s 16M 物理卷(dev/sdb /dev/sdc)
查看:
3、创建逻辑卷:
lvcreate -n 逻辑卷名 -L 200M 卷组名
查看:
4、在逻辑卷上可以建立文件系统 挂在使用 建立加密系统
5、逻辑卷扩容:
lvextend -L +200 逻辑卷名 物理卷
// -L +200 在原来的基础上增加200M
// -L 400 增加到400M
扩充文件系统:
resize2fs + 逻辑卷名字 (安装原来的文件系统,在没有文件系统的部分重新建立文件系统)
删除磁盘:
严格按着顺序:
卸载--》lvremove--》vgremove--》pvremove
逻辑卷缩减:
1、e2fsck -f 逻辑卷名字 //对文件系统进行强制检查(不进行这步,后面没法进行)
2、缩减文件系统:
resize2fs 逻辑卷名字 200M //将文件系统缩减到200M
3、lvreduce -L 200M 逻辑卷名字 //将逻辑卷缩减到200M
数据转移,拔出硬盘:
1、pvscan 扫描 查看硬盘使用情况
2、数据转移
pvmove /dev/sdb /dev/sdc //将sdb上的数据转移到sdc上
3、缩减卷组
vgreduce kaso_vg /dev/sdb
4、这时候可以直接将sdb进行热插拔(开机状态),放在别的地方不能用
因为这个sdb还建立者物理卷 要把物理卷删除
pvremove /dev/sdb
磁盘加密:
crypsetup luckFormat /dev/sdb1 建立加密
crypsetup luckopen /dev/sdb1 kaoso 建立映射
mksf.ext4 dev/mapper/kaoso 映射到文件
mount /dev/mapper/kaoso /mnt/kaoso 挂载
逻辑卷的缩减:
resize2fs lv 500M 缩减文件系统
lvreduce -L 500M /lv 缩减逻辑卷
pvmove /dev/sdb /dev/sdc 转移数据
vgreduce /vg /dev/sdb 缩减卷组
pvremove /dev/sdb 删除物理卷
创建磁盘阵列:
1.mdadm -C /dev/md0 -l5 -n3 /dev/sd[bcd]
-C create 创建 -l5 level 5 -n3 num3 使用了3块磁盘
2.查看磁盘创建状态:
watch -n1 cat /proc/mdstat
watch -n1 1秒执行一次后面的命令
3.创建逻辑卷,挂载使用
创建磁盘阵列的配置文件:/etc/mdadm.conf
ARRAY /dev/md0 UUID=*******
uuid:mdadm -D /de v/md**
模拟一个坏硬盘:
1.标记:
mdadm /dev/md0 -f /dev/sdb -f failut
2.移除:
mdadm /dev/md0 -r /dev/sdb -r remove
3.增加一个:
mdadm /dev/md0 -a /dev/sdd -a add
开机启动流程:
1、 开机读秒时按任意键(回车不行)进入brub菜单
2、选择系统界面: 方向键上下 回车选择
3、root(hd0,0) //根分区位置 hd0,0 第一个硬盘的第一个分区
karnal xxxxxxxxxxxxxxxxxx //内核信息
initxxxxxxxxxx //驱动信息
实验:单用户破解密码
实验步骤:
1、选择内核哪一行 按e键 进行编辑 添加一个单词 single/s/1(数字)
2、回车 退出
3、按键b 重启了 直接进入字符界面(全过程不需要密码)
root身份进入的字符界面
实验二:
修改grub菜单的配置文件:/boot/grub/grub.conf
1、timeout //倒计时时间
2、splashimage= //修改grub菜单背景
3、为grub菜单添加密码:
password=123456 //使用明文密码
加密: grub 两次tab键 会有很多的加密方式
使用加密后的密码:--encrypt
root(hd0,0) 根分区 hd0第一块硬盘 0第一个分区 系统位置
kernel 内核信息
initrd 驱动信息
硬盘前512字节是inode区 后半的是block区
模拟grub菜单损坏:
修改grub菜单的后缀,使Linux开机时找不到grub配置文件,导致开机时找不到根分区、内核信息、驱动信息。
截屏/boot/grub/grub.conf文件
reboot重启-->输入刚刚截屏的信息-->boot重启(完了将配置文件后缀改回来)
破坏sda硬盘:(pwd 查看当前在那个文件夹中)
要先添加一块硬盘 备份sda硬盘的grub.conf文件:要创建物理卷,挂载文件,备份文件 如果是逻辑卷一会就比较麻烦了
备份sda invde分区到sdb block分区:
dd if=/dev/sda of=/mnt/kaoso/sda.bak bs=512 count=1
破坏sda:dd if=/dev/zero of=/dev/sda bs=512 count=1(hexdump 查看乱码后的文件)
将sda文件填充为0 也备份一份 dd if=/dev/sda of=/mnt/kaoso/sda.now 重启-->正常关机-->
虚拟机设置-->找到镜像-->开机-->第三个 救援模式-->选语言(English)-->键盘类型(us)-->
设置网络(no)-->救援模式(cont inue 可以做任何改变)-->ok-->(shell 命令解释器 reboot 重启 fakd 运行诊断模式)
shell 按tab键选择或-->如果是分区直接挂载,如果是逻辑卷要激活(给逻辑卷组激活逻辑卷也会跟着激活
激活逻辑卷组的方式:vgchange -a y //active 开始)-->挂载到文件夹kaoso(mount /dev/kaoso_vg/kaoso_lv/ mnt/kaoso)-->
将刚刚备份的文件复制回/dev/sda(dd if=/mnt/kaoso/sda.bak of=/dev/sda bs=512 count=1)-->reboot重启
init 6:在/etc下 inittab是开机启动级别的配置文件
0 halt 关机
1 single user mode 单用户模式
2 multiuser,without nfs 字符型界面 有网络 多用户
3 full 没网络 全用户
4 unused 未使用
5 x11 默认级别
6 reboot 重启
init.conf :开机启动级别的配置文件
init.d目录中,可执行程序
vim NetworkManager
-23 84 - 开机启动级别 23 开机启动顺序 84 关闭顺序
default start 2 3 4 5 该程序在 2 3 4 5 级别启动
default stop 0 1 6 该程序在0 1 6 级别启动
5级别在/etc/rc0.d---rc6.d目录 存放了很多的连接文件
k kill 不开启 s start 开启
s23NetworkManager (连接文件) 网络管理器
11 s23NetworkManager 查看连接文件指向的是谁
管理开机自启动的管理:
在etc/
临时关闭:servicce 服务名字stop | start | restart
例:service Networkmanager stop
永久关闭:chkconfig --level 开机级别 服务名 off | on
例:chkconfig --level 45 Networkmanager off | on
解释:对于Networkmanager服务在4 5 级别中默认开机时关闭
pid进程号:进程号有限(僵尸进程会占用pid,导致后面的进程无法启动)
查看进程命令:ps aux //all user 程序名
user pid %cpu vsz rss tty(CTRL+alt+f2进入中端) stat
使用者 进程号 cpu占用率 虚拟内存 路由内存占用 终端‘?’表示不占用 状态
状态:S sleeping 休眠状态 R runing 运行状态 + 表示前台运行 Ss 有子进程 Z Zombie 僵尸进程(开发不完善的程序在关闭时造成的)
I 还有有这个进程开启的其他进程
pstree //树状显示
top //动态实时监测性显示进程
输入h显示帮助 输入M 按内存占用率降序排序 输入P显示CPU占用率 q退出
关闭进程:kill pia killall 程序名
ctrl+z将前台程序调入后台 fg # 将后台序号为#的程序调回前台
jobs 显示所有程序
创建一个程序模拟占用大内存:
1.创建文件vim test.sh
2.#/bin/bash 使用当前命令解释器
while [ 5 -gt 3 ] 当5>3时
do
echo“kaoso” 输出kaoso
done
3.保存退出
4.添加执行权限
chmod +x test.sh
5.开启另外一个终端
top输入p:发现test.sh占用率比较高,输入k 提示输入要杀死的pid 输入pid后提示按什么级别杀死 输入9最高级别
6、回到另一个终端查看 输出结束了