作者:卖兔子的萝北
分类:学习笔记
根目录:
bin: 可执行文件
dev:硬件设备文件
etc: 系统配置文件
boot:开机启动文件
usr/bin:可执行文件
/var/log: 日志文件
/usr/share/doc: 程序文档
/usr/share/man: man手册
Linux扩展:
执行命令:Linux在执行命令时先去查询是不是别名,然后再去查看是不是内部命令,最后才去PATH路径中查询命令
在/root/.vimrc配置文件中set tabstop=4 是设置tab键为4个空格
linux内核的版本规定第二位为偶数是稳定版,奇数是测试版
运行级别:运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
/tmp目录一般用来存储临时文件。
/etc/init.d是/etc/rc.d/init.d的一个连接文件,linux中服务的启动脚本存放在/etc/rc.d/init.d下
df –h以易读的形式显示目录的容量。
IP地址
作用:用来标识一个节点的网络地址(点分十进制)
32个二进制数
A类:1-127 网+主+主+主
B类:128-191 网+网+主+主
C类:192-223 网+网+网+主
Linux
常见版本:
Red Hat Enterprise Linux 5/6/7/8
Suse Linux Enterprise 12
Debian Linux 7.8
Ubuntu Linux 14.10/15.04
Linux 系统命令:
uname -r :查看内核版本
lscpu:查看cpu信息
examples:例子,man帮助
Linux常见命令
关机: poweroff,init 0,shutdown -h now(root使用),run level 0,halt
重启: reboot,shutdown -r now,run level 6 ,init 6
bash-completion #tab键安装包
pwd:查看当前所在位置
hostname:重命名 hostname 名字
ifconfig:查看网卡信息
head:查看文件头几行 head -n
tail:查看末尾几行 tail -n
grep:grep ^ grep * grep 直接加信息 grep ^$ 过滤空行
grep -v 取反 可与管道连用
cat:cat -n显示行数
which:查看命令相对应的程序
alias:别名 alias a='ls' #单引号
unalias: 取消别名 unalias a
mkdir:mkdir -p 递归创建目录
cp:cp -r 复制目录 \cp 当次取消cp别名
cp -p 复制文件时保持该文件的权限
快捷方式: ln
ln -s /opt/A.txt /opt/B.txt #软连接 有-s
ln /opt/A.txt /opt/C.txt #硬链接 没有-s
ls:ls -a 查看全部文件 //不怎么用
ls -A 查看隐藏文件 (大写A)
ls -l 长格式显示信息
ls -d 查看目录信息
ls -h 查看大小
find: find 目录/文件 -[选项]
查找 可以是目录、文件 多个查找条件可通过管道一起使用,来达到精确查找的目的
-i:忽略大小写查询
-- 按类型查找(f,d,l)
-d 查找目录 find /etc/ -type d
-l 查找快捷方式 find /etc/ -type l
-f 查找文件 find /etc/ -type f
--按名称查找
find /etc/passwd -name "名称注意用双引号"
例子:find /etc/passwd -name "zhangsan"
--按照大小查找
find /目录 -size +(-) 1024(b/k/M/G) //大小尽量别用1,会有bug不显示
例子:find /etc/ -size +10M
--按照所属用户查找
find /目录路径 -user 用户
find / -user zhangsan
--按照修改时间查找
find /目录路径 -mtime +-天数 //+表示多少天以外 -表示多少天以内
find /etc/ -mtime -10 //查找10天以内创建的所有文件
--exec 查找的后面可加其他操作
find 范围 条件 -exec 附加操作命令 {} \; // {}是查找后所匹配的内容,\;是该
命令固定的结束格式
例子:find - f /var/www/html -exec cp {} /test/var \;
//把/var/www/html目录下的文件复制到/test/var 下面
vim: 3种模式:命令模式,末行模式,输入模式
x :删除当前光标的字符
复制:yy 或 数字+yy
粘贴:p //小写
光标跳转:gg到文件第行 G最后一行 数字+G 跳转到指定行首
删除:dd 数字+dd d^删除至行首 D删除至行尾
查找: /查找内容
撤销:u
取消撤销:Ctrl+r
整行行内替换::s/查找内容/替换内容/g
区域内替换: :% s/查找内内容/替换内容/g
指定行替换::n,m s/查找内内容/替换内容/g
显示行号:set nu
读入其他文件内容: :r /文件路径
history: history -c #清空历史记录
date: 查看日期 可多个命令连用
date +%Y #查看年
date +%m #查看月 小写
date +%d #查看日 小写
date +%H #查看小时
date +%M #查看分钟
date +%S #查看秒钟
date +%F #查看年月日
date +%R #查看时分
#例子:date +%F+%R 查看年月日时分
du: du -sh #查看文件大小
#例子:du -sh / 查看根目录的大小
计划任务:crontab
crontab -e #进入编写周期任务模式,默认用户root
crontab -e -u 用户 :指定用户
* * * * * 执行的命令
分 时 日 月 周
例子:
*/5 * * * * /bin/echo "hi harry" >>/crontab.txt
#每5分钟向根下ceontab.txt 追加一个"hi harry"
1 1 * * * /bin/echo "hi harry" >>/crontab.txt
#每天1:1向根下ceontab.txt 追加一个"hi harry"
passwd:修改密码
交互式修改密码
passwd birunlin1
非交互式修改密码
echo '123' | passwd --stdin birunlin1 //只用root用户才可以使用非交互式修改密码
yum与rpm
yum仓库
[随意]
name='随意'
baseurl=file:///mnt/cdrom/
enabled=1 #是否启用此仓库
gpgcheck=0 #0不检查红帽认证
yum基本命令:
yum remove httpd #卸载httpd服务
yum list httpd #在yum仓库里查询这个软件(是否安装)精准查找
yum search 关键词 #粗略查找
yum info httpd #查看关于httpd的描述
yum provides /etc/passwd #查看哪些软件可以提供passwd文件(目录/程序)
rpm软件包的基本命令:
rpm -e httpd #卸载软件
rpm -q httpd #查询httpd(软件名)是否安装 必须是软件全名
rpm -qa #当前系统中所有已安装软件包 (建议后面接less命令)
rpm -qi httpd #查看软件包的详情信息
rpm -ql #查看指定软件安装清单
rpm -qf /usr/bin/vim # 查看是哪个包产生了vim程序 (软件删除了也可以查询)
rmp -qpl /mnt/cdrom/vsftpd-3... 查询指定安装包的安装清单 (未安装的软件)
rpm -qpi /mnt/cdrom/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm #查看指定软件的详情信息
rpm -i #安装软件包文件
rpm -iv #安装软件包文件 显示详情信息
rpm -ih #安装软件包文件 以#显示安装进度
rpm -ivh --force #强制安装该软件(覆盖安装)
rpm --test #测试安装软件
rpm -e #卸载软件
yum与rpm相对应的命令:
卸载: yum remove httpd rpm -e httpd
查询是否已安装这个软件: yum list httpd rpm -q httpd
查看关于软件的描述: yum info httpd rpm -qi httpd
zip与tar (压缩 解压)
zip: #归档工具 创建压缩包
#zip -r 归档文件名 被归档文件路径
#例子:zip -r passwd.zip /etc/passwd
unzip:释放归档 解压缩
unzip 已归档的文件包 -d 解压缩的目录
#例子:unzip passwd.zip -d /etc
tar: -c(小写的c)创建压缩包 -f 指压缩包名称(放在最后) -tf 再不解压缩的情况下显示压缩包里面的压缩文件
#例: tar -tf /test/ceshi.tar.gz
压缩命令: tar -zcf 压缩包 目标文件 目标文件
-J xz 格式 例:tar -zcf /test/ceshi.tar.gz /etc/passwd /var/www/html
-z gz 格式 例: tar -jcf /test/ceshi.tar.bz2 /etc/passwd /var/www/html
-j bzip2 格式 例: tar -Jcf /test/ceshi.tar.xz /etc/passwd /var/www/html
解压命令:tar -xf 压缩包路径 -C(大写的C) 目录路径
#例:tar -xf /test/ceshi.tar.gz -C /test2/
tar -xf /test/ceshi.tar.bz2 -C /test2/
tar -xf /test/ceshi.tar.xz -C /test2/
用户与用户权限常见命令(属主、属组)
用户部分常见命令:
用户账户:1.登录操作系统 2.资源访问控制(不同用户,不同权限)
UID:用户id GID:组id
组账户分类:基本组,附加组(从属组)
基本组:由系统创建,与用户同名
附加组:由管理员创建,由管理员 管理 组成员
id 已存在用户 //查看用户的详情信息
# id birunlin1
# uid=12345(birunlin1) gid=1236(xiaoming1) 组=1236(xiaoming1),1125(stugrp)
useradd -选项 用户名 (useradd的选项只能在创建用户是使用)
useradd zhangsan 直接添加用户
useradd -u -d -G -s
useradd -u 指定用户uid 用户名
#例子:useradd -u 1234(1001-60000) zhangsan
useradd -d 指定用户家目录 用户名
#例子:useradd -d /var/preserve/ xiaoming2
useradd -G 指定用户附加组 用户
#例子:useradd -G stugrp(自定义的组) xiaoming3
useradd -s 指定用户解释器 (/sbin/nologin 该解释器用户无法登陆)
#例子:useradd -s /sbin/nologin xiaoming4
usermod -选项 用户名 (更在已存在用户的信息)
usermod -l 想要改的名 已存在用户
#例子:usermod -l birunlin1 xiaoming1
usermod -u 想要改的uid 已存在用户
#例子:usermod -u 12345 birunlin1
usermod -s 解释器 已存在用户
#例子: usermod -s /sbin/nologin birunlin1
usermod -d 指定家目录 已存在用户 (不会自己主动创建家目录,需要手动创建不存在的目录)
#例子: usermod -d /root birunlin1
usermod -G 已存在的附加组 已存在的用户
#例子:usermod -G stugrp birunlin1
userdel:删除
userdel 用户 //仅删除用户
userdel -r 用户 //用户及所有用户的信息一并删除,包括家目录
/etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:密码占位符:UID:基本的GID:用户描述信息:家目录:解释器
/etc/shadow,保存密码字串/有效期等信息
nsd01:$6$.....Da4Vo.:18512:0:99999:7:::
用户名:密码加密字符串:上一次修改密码的时间
上一次修改密码的时间:从1970-1-1到达上一次修改密码时间,经历的天数
字段1:用户帐号的名称
字段2:加密后的密码字符串
字段3:上次修改密码的时间
字段4:密码的最短有效天数,默认0
字段5:密码的最长有效天数,默认99999
字段6:密码过期前的警告天数,默认7
字段7:密码过期后多少天禁用此用户账号
字段8:帐号失效时间,默认值为空
字段9:保留字段(未使用)
/etc/group,保存组帐号的基本信息
root:x:0:birunlin1
用户名:密码占位符:组的id(gid):本组成员列表
/etc/gshadow 组长 组成员
tarena:!:gelin01:gelin02,gelin01
组名 密码占位符 组长 组成员
grep tarena /etc/gshadow //查看组成员信息
groupdel命令
格式:groupdel 组名
删除的目标组不能是用户的基本组
groupadd stugrp //添加stugqp组
groupdel stugrp //删除stugqp组
gpasswd命令管理组成员 -a -d -M -A 补充:gpasswd -0 用户名 #强制用户第一次登录修改密码
gpasswd [选项] 用户 组
grep stugrp /etc/group //查看stugrp基本信息
groupadd stugrp //创建附加组
-a 添加组成员 每次只能添加一个
例子:gpasswd -a natasha stugrp
-d 删除组成员 每次只能删除一个
例子:gpasswd -d kenji stugrp
-M 定义组成员用户列表 可定义多个
例子:gpasswd -M kaka,kenji stugrp
gpasswd -M '' stugrp #定义组成员列表为空 类似全部删除
/etc/gshadow,保存组帐号的管理信息–每个组记录一行,以:分割为4个字段
gpasswd -A natasha stugrp #定义组管理员为natasha
groupdel stugrp //删除组 不能删除用户的基本组
用户家目录的配置文件
/etc/skel/ 这个目录下面有什么创建新用户是都会直接到新用户的家目录下面
.bash_profile:每次登录时执行,定义初始化变量 仅限于当前用户使用
.bashrc:每次开启新的终端时执行,定义永久的别名 仅限于当前用户使用
全局配置文件
/etc/profile //定义初始变量 所有用户都生效
/etc/bashrc //自定义别名 所有用户都生效
基本权限与归属
读取权限 r : cat、head、tail、less、grep 查看目录内容
写入权限 w :vim保存退出、>、>> 可以新建、删除、改名目录的内容,对目录本身没有修改权限
执行权限 x :shell脚本,Python脚本 可以切换到该目录下(切换目录至于x权限有关)
归属关系
所有者:属主 拥有此文件/目录的用户,-user用u表示
所属组:属组 拥有此文件/目录的组,-group用g表示
其他用户: 除属主,属组外的其他用户 -other 用o表示
r4w2x1 默认目录权限755,文件644 取决于umask的设置,777减去文件里面的值为目录的默认权限,再减去一个执行的权限为文件权限(默认文件没有执行权限)
chmod 命令:修改文件目录权限
chmod [ugoa] [+-][rwx] 文件(目录)
chmod -R [ugoa]=[rwx] 需要递归的目录
chmod u+r(w,x) /test
chmod u=r(w,x) /test
chmod u=rwx,g=rx,o=--- /test
chmod -R 0=--- /test/ceshi/aaa/bbb 递归设置权限
Linux对用户权限的判断: acl > 属主>属组>其他用户
chown:修改属主属组权限
chown 属主 文件(目录)
chown 属主:属组 文件(目录)
chown :属组 文件(目录)
chown -R 属主(属组) 目录
附加权限 :
粘滞建 Sticky Bit权限 t权限 (适用目录)
占用其他人(other)位的x位,显示t/T,取决他人是否有x键
适用目录 防止他人滥用写入权限,有写入权限时也无法删除、修改其他文件名
chmod o+t /home/pub
drwxr-xr-t. 2 root root 6 9月 9 03:22 /home/pub/
SGID 权限 占用属组的x位 (适用目录)
显示为s/S,取决属组是否有写入权限
在一个目录有SGID权限时,新建的文档会自动继承次目录属组的身份
chmod g+s /home/pub
drwxr-sr-x. 2 root root 6 9月 9 03:22 /home/pub/
ACl权限
能够对个别用户个别组设置独立权限
setfacl [选项] u:用户名:权限 文件
[选项] g:属组:权限 文件
选项: -m 添加一条ACL策略
-x 清除制定的ACL策略
-b 清除所有已设置的ACL策略
-R 递归设置ACL策略
setfacl -m u:birunlin:rwx /etc/passwd
setfacl -m g:xiaoming:rwx /
getfacl /目录(文件) 查看当前目录(文件)已设置的ACL策略
将某个用户拉黑(制作黑名单)
setfacl -m u:zhangsan:--- /home/pub
-R 递归设置ACL策略
setfacl -Rm u:zhangsan:rx /aaa/bbb
只会递归已经设置好的目录,以后在创建的不会继承
SUID权限:
占用属主的x位,显示为s/S,取决于属主是否有x权限
仅对可执行程序有意义,其他用户使用带有SUID的程序是,具有此执行的默认属主
chmod u+s /usr/bin/mkdir
磁盘分区
磁盘分区-格式化磁盘-挂载点挂载
partprobe 刷新磁盘分区
磁盘分区:
lsblk:查看当前系统所能识别的所有硬盘
分区模式:MBR与GPT,不能出现在同一磁盘上
MBR/msdos分区模式:最大容量2.2TB
分区类型:主分区、拓展分区、逻辑分区
最多只能有4个主分区,拓展分区至多有一个,逻辑分区不限
一般情况下:3个主分区+1拓展分区+n个逻辑分区
拓展分区不能存储,不能格式化
fdisk 硬盘设备
m 帮助
p 查看现有分区表
n 新建分区
d 删除分区
q 放弃并推出
w 保存并退出
例子:lsblk
fdisk /dev/sdb
主 n 回车 回车 回车 +10G
主 n 回车 回车 回车 +10G
主 n 回车 回车 回车 +10G
拓展 n 回车 回车 回车 回车
逻辑 n 回车 +15G
n 回车 +15G
w
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 60G 0 disk
├─sdb1 8:17 0 10G 0 part
├─sdb2 8:18 0 10G 0 part
├─sdb3 8:19 0 10G 0 part
├─sdb4 8:20 0 1K 0 part
├─sdb5 8:21 0 10G 0 part
└─sdb6 8:22 0 20G 0 part
sdc 8:32 0 60G 0 disk
sr0 11:0 1 8.8G 0 rom
GPT分区模式:
全局唯一表示分区表
突破固定大小64字节的分区表限制
最多可支持128个主分区,最大支持18EB磁盘
1EB=1024PB=1024*1024TB
parted 常用GPT分区模式指令
例子:
[root@localhost ~]# lsblk
sdc 8:32 0 60G 0 disk
[root@localhost ~]# parted /dev/sdc #parted的使用方式 parted /硬盘的绝对路径
(parted) mktable gpt #设置GPT分区模式
(parted) p #查看硬盘信息
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 64.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
(parted) unit GB #设置按照GB显大小
(parted) mkpart #划分新的分区
分区名称? []? hhsdc1 #分区名称随便改
文件系统类型? [ext2]? #文件类型可以直接回车 后面格式化时可自行修改
起始点? 0 #起始点默认为0 (可用%表示)
结束点? 10G #结束点减去起始点为硬盘大小 (可用%表示)
忽略/Ignore/放弃/Cancel? i #第一次设置硬盘时会弹出警告,直接按i忽略就行
parted) mkpart
分区名称? []? sdc2
文件系统类型[ext2]?
起始点? 10G
结束点? 30G
(parted) p
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 64.4GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 0.00GB 10.0GB 10.0GB hhsdc1
2 10.0GB 30.0GB 20.0GB sdc2
(parted) q #退出
lsblk #查看当前系统所能识别的所有硬盘
sdc 8:32 0 60G 0 disk
├─sdc1 8:33 0 9.3G 0 part
└─sdc2 8:34 0 18.6G 0 part
分区的格式化:
ext4(RHEL6)优势 :存放文件多,小
xfs (RHEL7)优势: 文件数量少,大
格式化:赋予空间文件系统的过程(赋予硬盘一个存放数据的规则)
文件系统:空间存放数据的规则
mkfs.xfs -f /dev/sdb1 #强制格式化为.xfs
windows默认文件系统:NTFS FAT
Linux默认文件系统:ext4(RHEL6) xfs(RHEL7) FAT
mkfs.ext4 /dev/sdb1 #格式化为ext4格式
mkfs.xfs /dev/sdb2 #格式化为xfs格式
blkid /dev/sdb1 #查看分区文件系统类型
/dev/sdb1: UUID="92b591df-4b5f-49ae-98fb-9148eb6319bc" TYPE="ext4"
blkid /dev/sdb2 #查看分区文件系统类型
/dev/sdb2: UUID="680f2eb1-c3ce-42b0-ba00-f71208932d54" TYPE="xfs"
分区的挂载使用:
df -h 查看当前虚拟机已挂在的文件
和挂载yum一样 ,建个目录为挂载点
mount /dev/sdb1 /mysdb1
df -h 查看正在使用挂载的设备
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdb2 10G 33M 10G 1% /mysdb2
开机自动挂载
vim /etc/fstab
/dev/sdb1 /mypart1 ext4 defaults 0 0
/dev/sdb2 /mypart2 xfs defaults 0 0
mount -a #检测开机自动挂载是否正确
制作交换空间的第一种方式(磁盘)
利用分区制作交换空间
free -m #交换空间的信息
swapon #交换空间的成员信息
mkswap /dev/sdc1 #格式化交换系统
blkid /dev/sdc1 #查看文件系统的类型
swapon /dev/sdc1 #启用交换分区
swapon #交换成员的空间信息
free -m #交换空间的信息
vim /etc/fstab #设置开机自动挂载
/dev/sdc1 swap swap defaults 0 0
swapoff /dev/sdc1 #停止使用交换空间
swapon #交换空间的成员信息
swapon -a #检测交换分区书写
swapon
制作交换空间的第二种方式(直接使用空间)
利用文件所占用的空间,制作交换空间 dd:主要就是占用空间用的命令
dd if=源设备 of=目标设备 bs=块大小 count=块数
ls /dev/zero #永远都在产生数据的设备
dd if=/dev/zero of=/opt/swap.txt bs=1M count=2048
du -sh /opt/swap
2.0G /opt/swap.txt
mkswap /opt/swap.txt #格式化交换文件系统,格式化后文件类型表位swap
blkid /opt/swap.txt #查看文件系统类型
/opt/swap.txt: UUID="75e8c3d7-6fd3-4640-bace-958a409ad424" TYPE="swap"
swapon /opt/swap.txt #启用交换分区
swapon: /opt/swap.txt:不安全的权限 0644,建议使用 0600。
swapon #查看交换空间的成员信息
free -m #查看交换空间信息
vim /etc/fstab #设置开机自动启动交换分区
/opt/swap.txt swap swap defaults 0 0
swapoff /opt/swap.txt #停止使用交换空间
swapon
swapon -a #检测交换分区书写(交换分区专用)
逻辑卷 (虚拟磁盘技术)
物理卷(pv)-卷组(vg)-逻辑卷(lv)-逻辑卷创建挂载点(使用)
基本概念:
组成成员:未挂载 未格式化的磁盘分区(磁盘)(可以是多个)
作用:1.可以整合分散空间 2.支持空间在线扩大(不影响数据存储)
制作过程:多个物理卷(PV)(硬盘)组成卷组(VG),再从卷组中换分出逻辑卷(LV) //准备硬盘(硬盘分区也可以)-制作卷组-制作逻辑卷
pvs #显示系统所有的物理卷信息
LVM:管理工具集
功能 物理卷管理 卷组管理 逻辑卷管理
Scan 扫描 pvscan vgscan lvscan
Create 创建 pvcreate vgcreate lvcreate
Display 显示 pvdisplay vgdisplay lvdisplay
Remove 删除 pvremove vgremove lvremove
Extend 扩展 / vgextend lvextend
制作卷组:
格式: vgcreate 卷组名 设备路径
# Successfully:成功
lsblk /dev/sdb[1-2] (/sdb{1-2})
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb1 8:17 0 9.3G 0 part
sdb2 8:18 0 18.6G 0 part
sdb3 8:19 0 18.6G 0 part
vgcreate myvg /dev/sdb1 /dev/sdb2 #把sdb1,sdb2制作成名为myvg的卷组
vgs #查看卷组
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0 #系统自带
myvg 2 0 0 wz--n- 27.93g 27.93g #刚刚制作的卷组
制作逻辑卷:
格式:lvcreate -L 逻辑卷大小 -n 逻辑卷名字 基于卷组
lvcreate -L 15G -n mylv myvg #制作一个15G大小,逻辑卷名字mylv,基于卷组myvg
lvs 查看逻辑卷信息
mylv myvg -wi-a----- 15.00g
逻辑卷的使用:
ls -l /dev/myvg/mylv #查看逻辑卷的信息
lrwxrwxrwx. 1 root root 7 9月 12 02:52 /dev/myvg/mylv -> ../dm-2 #/dm-2是Linux系统所识别的逻辑卷名字
mkfs.xfs /dev/myvg/mylv #格式化逻辑卷为xfs类型
blkid /dev/myvg/mylv #查看逻辑卷类型 也可以这样blkid /dev/dm-2
mkdir /mylv #创建逻辑卷的挂载点
vim /etc/fstab #设置开机自动挂载
/dev/myvg/mylv /mylv xfs defaults 0 0
mount -a #检查自动挂载
df -h #查看已挂载设备
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/myvg-mylv 15G 33M 15G 1% /mylv
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
└─sdb2 8:18 0 18.6G 0 part
└─myvg-mylv 253:2 0 15G 0 lvm /mylv
逻辑卷的扩展: 卷组有足够空间
直接扩展逻辑卷大小,然后刷新一下逻辑卷
1.扩展空间大小 lvextend -L 想要扩展到的大小 逻辑卷
lvextend -L 27G /dev/myvg/mylv
lvs
mylv myvg -wi-ao---- 27.00g #显示逻辑卷以扩展
df -h | tail -1
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/myvg-mylv 15G 33M 15G 1% /mylv #显示还是原来的大小,因为要刷新空间系统(赋予规则)
2.扩展文件系统
resize2fs:刷新ext4文件系统
xfs_growfs:刷新xfs文件系统
xfs_growfs /dev/myvg/mylv #刷新逻辑卷
lvs
mylv myvg -wi-ao---- 27.00g
df -h | tail -1
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/myvg-mylv 27G 33M 27G 1% /mylv #逻辑卷已经成功挂载并扩展为27G大小 实验完成
逻辑卷的扩展:卷组无足够空间
先扩展卷组大小,在扩展逻辑卷大小,刷新逻辑卷
1.扩展卷组空间
vgextend 想要扩展的卷组 赋予空间的硬盘
vgextend myvg /dev/sdb3 #把sdb3的空间给myvg卷组
Physical volume "/dev/sdb3" successfully created.
vgs
VG #PV #LV #SN Attr VSize VFree
myvg 3 1 0 wz--n- <46.56g <19.56g
2.扩展逻辑卷空间大小
lvextend -L 逻辑卷想要扩展到多大 逻辑卷路径
lvextend -L 46G /dev/myvg/mylv #把mylv扩展到46G大小
lvs
mylv myvg -wi-ao---- 46.00g
df -h | tail -1
/dev/mapper/myvg-mylv 27G 33M 27G 1% /mylv #需要扩展文件系统才能把使用空间提升至46G
3.扩展文件系统 (具体解释上面有)
xfs_growfs /dev/myvg/mylv
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/myvg-mylv 46G 33M 46G 1% /mylv #试验完成
逻辑卷的知识点补充:
1.逻辑卷的大小也可以缩减,可能会丢失数据 没什么用
2. vgdisplay myvg #查看卷组详细信息
PE Size 4.00 MiB #大小只能是4的倍数 可修改(面试)
(1) lvcreate -L 250M -n test myvg #创建一个250M的逻辑卷
lvs
test myvg -wi-a----- 252.00m #大小为252M,只能是4的倍数
vgchange -s 1M myvg #修改PE的大小
lvcreate -L 250M -n test myvg #再次创建一个250M的逻辑卷
lvs
test2 myvg -wi-a----- 250.00m #大小为250M
(2) lvcreate -l 50 -n test3 myvg # 按照个数创建一个逻辑卷(小写l表示按照PE个数创建逻辑卷)
lvs
test3 myvg -wi-a----- 50.00m #50个1M 所以大小为50M
3.删除逻辑卷
(1)删除正在使用的逻辑卷
umount /mylv/ #先取消挂载逻辑卷
lvremove /dev/myvg/test3 #删除逻辑卷
vim /etc/fstab #取消自动挂载
lvs
(2)删除卷组,基于次卷组出案件的所有逻辑卷全部删除
lvremove /dev/myvg/test2 #卸载逻辑卷
lvremove /dev/myvg/test
lvremove /dev/myvg/mylv
vgs
myvg 3 0 0 wz--n- <46.56g <46.56g
vgremove myvg # 卸载卷组
vgs #自己的卷组已经没有了
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
myvg 3 0 0 wz--n- <46.56g <46.56g
进程管理
程序:静态 没有运行的代码 只占用硬盘空间
进程:动态 正在运行的代码 占用CPU与内存的资源
进程唯一表示:PID
父进程与子进程: 树形结构 systemd是所有进程的父进程,也叫上帝进程
查看进程: 最小化安装的虚拟机要先安装 yum -y install psmisc
格式: pstree [选项] [PID 或用户名]
-a 显示完整命令行
-p 列出对应PID编号
pstree 查看正在运行的进程信息
pstree birunlin 按照用户名查询进程
bash───vim
pstree -p birunlin #显示进程的PID
bash(6838)───vim(6874)
pstree -a lisi #显示完成的命令
bash
└─vim a.txt
ps aux 列出正在运行的进程(显示的信息非常详细)
用户 进程ID %CPU %内存 虚拟内存 固定内存 终端 状态 起始时间 CPU时间 程序指令
ps -elf 列出正在运行的所有进程(可以显示父进程PID)
进程动态排名 top : top [-d 刷新秒数] [-U 用户名]
输入top进入时 P 按照CPU进行排序
M 按照内存进行排序
检索进程 pgrep [选项] 查询条件
-l 输出进程名,而不仅仅是PID
-U 检索制定用户的进程
-X 精确匹配完整的进程名
pgrep -l aaa
pgrep -l ccc
进程的前后台调度
Ctrl+z 组合键 挂起 暂停当前的进程并转入后台
jobs #查看后台进程的信息
fg 将后台任务恢复到前台运行
bg 激活后台被挂机的任务
firefox & #进程正在运行的状态放入后台
[1]+ 已停止 firefox
jobs -l #显示后台进程信息,显示PID
bg 1 #将后台编号为1 的进程恢复运行
fg 1 #将后台编号为1的进程恢复到前台
•干掉进程的不同方法
–Ctrl+c 组合键,中断当前命令程序
-kill 进程 #直接杀死进程
–kill [-9] PID... 、kill [-9] %后台任务编号
–killall [-9] 进程名... #杀死所有进程
–pkill [-9] 查找条件,包含就可以
-killall -9 -u birunlin #强制踢出一个用户
-xkill #会出现一个鼠标,点哪个杀哪个
例子:yum -y install xorg-x11-apps
[root@localhost ~]# xeyes
^Z #按ctrl +z 暂停放入后台
[1]+ 已停止 xeyes
[root@localhost ~]# jobs #查看后台进程的信息
[1]+ 已停止 xeyes
[root@localhost ~]# bg 1 #将后台编号为1 的进程恢复运行
[1]+ xeyes &
[root@localhost ~]# jobs
[1]+ 运行中 xeyes &
[root@localhost ~]# fg 1 #将后台编号为1的进程恢复到前台
xeyes
^C #按ctrl +c 结束进程
RAID 磁盘整列
•廉价冗余磁盘阵列
–通过硬件/软件技术,将多个较小/低速的磁盘整合成一个大磁盘
–阵列的价值:提升I/O效率、硬件级别的数据冗余
–不同RAID级别的功能、特性各不相同
提高可靠性(相对来说很可靠,人品不爆炸就没问题。最稳妥的方法还是备份数据)
•RAID 0,条带模式
–同一个文档分散存放在不同磁盘
–并行写入以提高效率,没有容错功能
–至少需要两块磁盘
•RAID 1,镜像模式
–一个文档复制成多份,分别写入不同磁盘
–多份拷贝提高可靠性,效率无提升,有容错功能
–至少需要两块磁盘
•RAID5,高性价比模式 (企业)
–相当于RAID0和RAID1的折中方案
–需要至少一块磁盘的容量来存放校验数据
–至少需要三块磁盘
•RAID6,高性价比/可靠模式 (银行)
–相当于扩展的RAID5阵列,提供2份独立校验方案
–需要至少两块磁盘的容量来存放校验数据
–至少需要四块磁盘
•RAID 0+1/RAID 1+0
–整合RAID 0、RAID 1的优势
–并行存取提高效率、镜像写入提高可靠性
–至少需要四块磁盘
对比项 RAID 0 RAID 1 RAID 10 RAID 5 RAID 6
磁盘数 ≧ 2 ≧ 2 ≧ 4 ≧ 3 ≧ 4
存储利用率 100% ≦ 50% ≦ 50% n-1/n n-2/n
校验盘 无 无 无 1 2
容错性 无 有 有 有 有
IO性能 高 低 中 较高 较高
九、VDO
yum -y install vdo kmod-kvdo #所需软件包
重复数据删除
–输入的数据会判断是不是冗余数据
–判断为重复数据的部分不会被写入,然后对源数据进行更新,直接指向原始已经存储的数据块即可
•压缩
–对每个单独的数据块进行处理
vdo基本操作:参考man vdo 全文查找/example
vdo create --name=VDO卷名称 --device=设备路径 --
vdoLogicalSize=逻辑大小
–vdo list
–vdo status -n VDO卷名称
–vdo remove -n VDO卷名称
–vdostatus [--human-readable] [/dev/mapper/VDO卷名称]
•VDO卷的格式化加速(跳过去重分析):
–mkfs.xfs –K /dev/mapper/VDO卷名称
–mkfs.ext4 -E nodiscard /dev/mapper/VDO卷名称
前提制作VDO需要2G以上的内存
例子: vdo create --name=vdo0 --device=/dev/sdc --vdoLogicalSize=200G
mkfs.xfs -K /dev/mapper/vdo0
mkdir /nsd01
mount /dev/mapper/vdo0 /nsd01
df -h
vdostats --hum /dev/mapper/vdo0 #查看vdo设备详细信息
vim /etc/fstab
/dev/mapper/vdo0 /nsd01 xfs defaults,_netdev 0 0
网卡配置
逻辑:修改网卡命名规则-删除错误网卡名-添加新的网卡名-配置网卡ip地址
route -n #查看路由表(查看网关信息)
修改网卡命名规则:
ifconfig | head -2
ens33: flags=4163 mtu 1500
inet 192.168.81.12 netmask 255.255.255.0 broadcast 192.168.81.255
vim /etc/default/grub #内核引导文件
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet" #在后面添加 ...quiet net.ifnames=0 biosdevname=0 固定格式(企业化) 修改后不会立即生效
grub2-mkconfig -o (哦) /boot/grub2/grub.cfg #该命令会使网卡命名规则立即生效,需要重启
Generating grub configuration file ... #屏幕返回值
ifconfig | head -2 #重启后网卡名称变为eth0 会自动有一个ip,但是还是需要其他ip配置
eth0: flags=4163 mtu 1500
inet 192.168.81.128 netmask 255.255.255.0 broadcast 192.168.81.255 #此ip无效
nmcli命令网卡命名,删除错误网卡名
nmcli connection show
NAME UUID TYPE DEVICE(设备)
virbr0 878e26c0-2301-47e7-8a6d-5e68bd83b783 bridge virbr0 #绿色,已生效
有线连接 1 855815b6-acd7-37d3-b6fc-0d6a5b5ac3c9 ethernet eth0 #绿色,已生效
ens33 ce9e9c23-7700-4a59-94cd-e4d8e3d87e3a ethernet -- #白色,已失效
nmcli connection delete ens33 #删除网卡,前面的网卡命名后该名字已失效
成功删除连接 'ens33'(ce9e9c23-7700-4a59-94cd-e4d8e3d87e3a)。
nmcli connection delete 有线连接\ 1 #删除原有命名,一会自行命名新的网卡名
成功删除连接 '有线连接 1'(855815b6-acd7-37d3-b6fc-0d6a5b5ac3c9)。
ifconfig | head -2 #删除后自动生成的ip会一并删除
eth0: flags=4163 mtu 1500
ether 00:0c:29:27:52:b8 txqueuelen 1000 (Ethernet)
nmcli命令网卡命名,添加网卡名
nmcli connection add type ethernet ifname eth0 con-name eth0
添加 类型 ifconfig显示的名字 nmcli所能识别的名字
连接“eth0”(6a72a966-c469-4550-9510-9c16b64f27f7) 已成功添加。
ifconfig | head -2
eth0: flags=4163 mtu 1500 #重新命名成功
inet 192.168.81.128 netmask 255.255.255.0 broadcast 192.168.81.255
nmcli connection show
NAME UUID TYPE DEVICE
eth0 6a72a966-c469-4550-9510-9c16b64f27f7 ethernet eth0
virbr0 878e26c0-2301-47e7-8a6d-5e68bd83b783 bridge virbr0
nmcli:配置ip地址 [配置文件]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
nmcli connection modify eth0 ipv4.method auto
配置方式 dhcp自动获取 #一般不用 都是manual自行修改
ipv4.addresses 192.168.4.7/24 #配置ip地址
ipv4.gateway 192.168.4.254 #配置网关,本次不会生效,因为没有
connection.autoconnect yes #每次开机都会生效
nmcli connection up eth0 #激活网卡,立即生效
例子:nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.7/24 ipv4.gateway 192.168.4.254 connection.autoconnect yes
nmcli connection up eth0
源码编译安装
RPM: rpm -ivh yum install
源码包:
主要优点:
1.获得软件最新版,及时修复bug 2.软件功能可以按照需求选择/定制,有更多软件可供选择
3.源码包适用于各种平台
源码编译安装步骤:1.安装开发工具 gcc,make 2.解压tar包 3.运行configure脚本配置 4.make进行编译,产生可执行的程序 5.make install安装
例子:安装tools.tar.gz
1.安装开发工具
yum -y install gcc make
2.解压tar包
tar -xf /root/tools.tar.gz -C /usr/local/ (这个路径比较专业)
tar -xf /usr/local/tools/inotify-tools-3.13.tar.gz -C /usr/local/
3.运行configure脚本配置(1.检查系统是否安装gcc 2.可以指定安装位置)
cd /usr/local/inotify-tools-3.13/ #必须cd到配置文件程序的目录
./configure --prefix=/opt/myrpm #指定安装位置
4.make进行编译,产生可以执行的程序
cd /usr/local/inotify-tools-3.13/
make
步骤五:make install进行安装
cd /usr/local/inotify-tools-3.13/
make install
[root@localhost ~]# ls /opt/myrpm/
bin include lib share #成功
远程管理
(openssh包)
软件包的安装:
rpm -qa | grep openssh
openssh-7.4p1-16.el7.x86_64
openssh-server-7.4p1-16.el7.x86_64
openssh-clients-7.4p1-16.el7.x86_64
远程登录ssh
> /etc/resolv.conf #清空dns
ssh [email protected]
………necting (yes/no)?
[email protected]'s password:
cat /root/.ssh/known_hosts #记录曾经远程管理的机器
实现ssh远程管理无密码验证
虚拟机A:
1.生成公钥(锁)与私钥(钥匙)进行验证
ssh-keygen #一路回车
…….save the key (/root/.ssh/id_rsa): #保存位置
……..assphrase): #设置密码为空
…….. again: #设置密码为空
ls /root/.ssh/
id_rsa(私钥) id_rsa.pub(公钥) known_hosts
2.把公钥(锁)传送给虚拟机B
ssh-copy-id [email protected] #传送公钥(锁)
ssh [email protected] #测试无密码
虚拟机:B
ls /root/.ssh/
authorized_keys(别的机器传递过来的公钥) known_hosts
安全复制工具 scp=ssh+cp
–scp [-r] 用户名@服务器:路径 本地路径 #有目录加r,没有不用加
–scp [-r] 本地路径 用户名@服务器:路径 #有目录加r,没有不用加
虚拟机A:
scp /etc/passwd [email protected]:/root
scp -r /home [email protected]:/root/
scp [email protected]:/etc/passwd /mnt/
虚拟机B:
ls /root
网络工具
1.ip命令
ip address show #查看ip地址
ip address add 192.168.8.1/24 dev eth0 #给eth0再添加一个ip地址
ip address show
inet 192.168.4.7/24 brd 192.168.4.255 scope global noprefixroute eth0
inet 192.168.8.1/24 scope global eth0
2.ping ping -c 2 192.168.8.1 #ping 两次
自定义yum
YUM组成: 1.众多软件包 2.仓库数据文件
例子:tar -xf tools.tar.gz -C / #把提前准备的tar包解压到/下
ls /tools/other
boxes-1.1.1-4.el7.x86_64.rpm
cmatrix-1.2a-1.i386.rpm
ntfs-3g-2014.2.15-6.el6.x86_64.rpm
oneko-1.2-19.fc24.x86_64.rpm
sl-5.02-1.el7.x86_64.rpm
createrepo /tools/other/ #生成自定义的yum仓库
vim /etc/yum.repos.d/2.repo
[myrepo]
name=2
baseurl=file:///tools/other
enabled=1
gpgcheck=0
清理缓存并查看
源标识 源名称 状态
centos7 birunlin 9,911
myrepo 2 5
repolist: 9,916
日志管理
•系统和程序的"日记本"
–记录系统、程序运行中发生的各种事件
–通过查看日志,了解及排除故障
–信息安全控制的“依据”
•由系统服务rsyslog统一记录/管理
–日志消息采用文本格式
–主要记录事件发生的时间、主机、进程、内容
•常见的日志文件
日志文件 主要用途
/var/log/messages 记录内核消息、各种服务的公共消息
/var/log/dmesg 记录系统启动过程的各种消息
/var/log/cron 记录与cron计划任务相关的消息
/var/log/maillog 记录邮件收发相关的消息
/var/log/secure 记录与访问限制相关的安全消息
•通用分析工具
–tail、tailf、less、grep等文本浏览/检索命令
–awk、sed等格式化过滤工具
tailf:实时跟踪文件内容
防火墙策略管理
作用:隔离,严格过滤入站请求,放行出站
硬件防火墙:保护网络中的所有主机
软件防火墙:本机
系统服务:firewalld
管理工具:firewall-cmd、firewall-config
根据所在网络场所区分,预设保护规则集
public:仅允许ssh、dhcp、ping服务
trusted:允许任何访问
block:阻塞任何来访请求,给客户端回应
drop:丢弃任何来访请求,不给客户端回应
防火墙判定规则:
1.首先防火墙查看访问请求中来源ip地址,然后查看所有区域中哪个区域该源ip地址规则,则进入该区域
2.进入默认区域(默认情况下public)
修改默认区域:
firewall-cmd --get-default-zone #查看默认区域
public #仅允许ssh、dhcp、ping服务
firewall-cmd --set-default-zone=trusted #修改默认区域为trusted,可以访问http、ftp....
success
firewall-cmd --get-default-zone #再次查看默认区域
trusted
在区域中添加允许协议:
firewall-cmd --set-default-zone=public #再次修改默认区域
success
firewall-cmd --zone=public --list-all #查看区域规则
services: ssh dhcpv6-client
firewall-cmd --zone=public --add-、,了service=http
success #给public添加http协议
firewall-cmd --zone=public --add-service=ftp
success #给public添加ftp协议
给public添加制定的协议后其他用户可以访问
在区域中添加允许协议(永久配置)
添加永久协议前先把临时协议删除(避免冲突)
firewall-cmd --zone=public --remove-service=ftp
success #
firewall-cmd --zone=public --remove-service=http
success
firewall-cmd --permanent --zone=public --add-service=ftp
success #添加永久ftp协议
firewall-cmd --permanent --zone=public --add-service=http #添加永久http协议
success
firewall-cmd --zone=public --list-all #查看协议
services: ssh dhcpv6-client #现在并没有显示已经添加的永久协议
firewall-cmd --reload #加载防火墙永久策略
success
firewall-cmd --zone=public --list-all #再次查看显示已经添加的永久协议
services: ssh dhcpv6-client http ftp
单独拒绝192.168.4.207的所有访问
firewall-cmd --zone=block --add-source=192.168.4.207 #阻塞任何请求,并给客户端回应
success
firewall-cmd --zone=block --list-all #查看block的防火墙策略
sources: 192.168.4.207 #禁止这个ip的所有请求
服务的管理
上帝进程:systemd
Linux系统和服务管理器
是内核引导之后加载的第一个初始化进程(PID=1)
负责掌控整个Linux的运行/服务资源组合
一个更高效的系统&服务管理器
开机服务并行启动,各系统服务间的精确依赖
配置目录:/etc/systemd/system/
服务目录:/lib/systemd/system/
主要管理工具:systemctl
对服务的管理:显示Failed 失败
systemctl -t service -all #列出所有的服务
systemctl restart 服务名 #重起服务
systemctl start 服务名 #开启服务
systemctl stop 服务名 #停止服务
systemctl status 服务名 #查看服务当前的状态
systemctl enable 服务名 #设置服务开机自启动
systemctl disable 服务名 #设置服务禁止开机自启动
systemctl is-enabled 服务名 #查看服务是否开机自启