rhel 7/centos 7
2020-09-04 10:25:51 1 举报
AI智能生成
红帽/centos 7系统 全面笔记,有详细的实施过程,可以根据笔记做实验
作者其他创作
大纲/内容
重要目录
/use
安装软件 共享的库,包括文件和静态只读程序数据
/use/bin 应用程序工具的必备执行文件
/use/sbin 网路管理的必备程序
/use/local 本地自定义软件
用于多台机器分享的内容,比如整个系统范围的配置文件等
/libs/
/firewalld/
/firewalld.conf
存放了一些防火墙的配置文件
/lib/
/iptables/
/zone
系统的配置文件
/passwd
存储有关本地用户的信息
信息内容
1 username 是 UID 到名称的一种映射
2 password 以前是以加密格式保存密码的位置。
3 UID 是用户id 即爱及基本的级别标识用户的编号
4 gid 是用户的主要组id 编号
5 gecos 字段是任意文本,通常包含用户的实际姓名
6 /home/dir 是用户的个人数据和配置文件的位置
7 shell 是用户登陆时运行的程序 。 对于普通用户,这通常时提供用户命令行提示符的程序
/shadow
/hostname
存放主机名
存储加密后的密码
/hosts
配置域名解析
/sudoers
存放 允许以root或其他用户身份运行命令信息
/login.defs
存放创建组时使用的信息
/system-release
查看系统当前的版本
/group 存储组信息
/profile
存放umask
/bashrc
存放umask
rsyslog.conf
/services 文件列出了标准端口的常用名称
/selinux/
config
selinux 配置文件
/sysconfig/
/network-scripts/
ifcfg-ens**
存放对应网卡名的配置文件
/yum.conf
yum的主要配置文件
/yum.repos.d/
存放其他yum源的配置文件
/fstab
存放永久挂载信息
/firewalld/
存放 防火墙的一些配置文件
/named.conf
bing服务(dns)的主配置文件
/exports
nfs配置共享的目录
/exports.d/
存放nfs 配置文件的目录 配置文件名以 .exports结尾
/iscsi/initiatorname.iscsi
iscsi的主配置文件
/my.cnf
marindb 的主配置文件
/httpd/
/conf/
/httpd.conf
http的主配置文件
/conf.d/
存放用户自定义的配置文件
ssl.conf
存放ssl加密文件的配置信息
/shell/
存放了系统中可以使用的shell
zone的配置文件
/etc
/var
存放可变的系统文件
/log 存放系统日志
/secure
存放了通过sudo执行的所有命令
/yum.log
存放 yum的日志文件
/named
存放DNS地址库文件
/lib/
/mysql/
存放marindb的数据目录
/www/
/http/
存放 http默认网址根目录
/run
系统启动以来 启动的进程的运行数据 包括进程id文件和锁定文件
注:此目录在重启时重新创建
/home
普通用户存储其个人数据和配置文件的主目录
/root
超级用户的主目录
/.bash_history
存放 bash所执行过的历史命令
/tmp
存储临时文件 全局可写
若10天内未对此文件执行任何操作 将从该目录删除
还有个var/tmp 如果30天内为操作 将从该目录删除
/boot
如光盘 、硬盘等
特殊设备文件
/null
黑洞
启动过程所需的文件
/dev
/proc
内核的相关信息,内存,cpu等
/cpuinfo
查看cpu 信息
/bin
系统必备的可执行文件
/sbin
放置系统管理的必备程序
/lib64
64位的库文件,类似windows下面的各种dll文件
/mnt
习惯性的挂载点,非强制
/srv
系统存储的各种数据文件的地址
/lib
32的库文件
/media
传统的媒体挂载点
/opt
软件包的附加文件
虚拟控制台
linux支持多个虚拟控制台
如果提供图形界面则
无图形界面
则控制台为1至5
通过ctrl + alt +f1-f6 切换控制台
第一个控制台为图形界面
第二至第六个位控制台
编辑命令行
tab补全
tab补全 在用户在提示符下键入足够的内容使其唯一后 快速补全命令 或文件名 若 键入字符不唯一 可以按两次tab显示键入字符开头的所有命令
history 命令历史记录
默认保存1000条
history -c 清楚历史记录,但是文件中还会存在
物理路径 /root/.bash_history
显示之前执行过的命令列表 ,带有命令编号作为前缀
!感叹号字符 是元字符 用于扩展之前的命令不必重新键入他们
!number 执行与指定编号匹配的命令
!String 执行最近一个以字符串开头的命令
上下键
上键
历史记录中的上一个命令
下键
下一个命令
Esc+ 。或alt+。
可以将上一个命令中的最后一个单词复制到当前光标所在处
快捷键 ctrl +
a 或 Home 跳的命令行开头
e 或 end 跳到命令行末尾
u 将光标处到命令行开头的内容清楚
k 将光标处到命令行末尾的内容清楚
向左箭头 跳的前一个词的开头
向右箭头 跳到后一个词的开头
r 在记录列表中搜索某一模式的命令
通配符
* 代表任意多个或0个字符
? 代表一个字符
~代表用户主目录
~+ 当前工作目录
~- 上一个工作目录
【abc..】括起类中的任一个字符
{a..c}执行从a 到 c
【!abc..] 不在括起类中的任一个字符
【^abc】同上
【:alpga:】 任何字母字符
【:lower:】 任何小写字符
【:upper:】 任何大写字符
命令替换
$() 或者 `comman` 时会 执行命令
\ 可以防止命令替换 或用 ‘’单引号 或 ”“ 括起来
查看硬件信息
查看cpu
cat /proc/cpuinfo
lscpu
查看主机内存
cat /proc/meminfo
查看当前主机内核
cat /etc/redhat-release
网络
linux 网络
字符表示适配器的类型
o表示 板载
s 代表热插拔
p 代表pci地理位置
x 用于融入 MAC地址
N d 代表 索引、id 或端口
如果无法确定固定名称 使用 ethN 传统名称
/sbin/ip 命令 可用于显示设备和地址信息
ip addr show eth0
也可用来显示路由信息
ip route
ping 命令用来测试连通性
端口和服务故障排除
/etc/services 文件列出了标准端口的常用名称
ss 命令用于显示套接字统计信息。他与 netstat 命令相似
ss 和 netstat 选项
-n 显示接口和端口编号,而不显示名称
-t 显示 tcp 套接字
-u 显示 udp 套接字
-l 仅显示侦听中的套接字
-a 显示所有(侦听中和已建立的)套接字
-p 显示 使用套接字的进程
使用nmcli 配置网络
networkmanager 是监控和管理网络设置的守护进程
GNOME通知区域小程序 提供网络状态信息
命令行和图形工具networkmanger通信,并将配置文件保存在 /etc/sysconfig/network-scripts目录中
通过 nmcli 查看网络信息
nmcli 命令摘要
dev status
列出所有设备
con show
列出所有连接
con up"<ID>"
激活连接
con down "<ID>"
取消激活连接,如果是自动重新连接,则该连接将重新启动
dev dis<dev>
中断接口,并暂时禁用自动连接
net off
禁用所有管理接口
con add ..
添加新连接
con mod "<ID>"
修改连接
con del "<Id>"
删除连接
nm-connection-editor
可使用图形界面
网络配置文件
/etc/sysconfig/network-scripts/ifcfg-name
配置选项
静态
TYPE=Ethernet
BOOTPROTO= staict
NAME= eth1
ONBOOT=yes
IPADDR=ip地址
NETMASK=255.255.255.0
GATEWAY=ip前三网段.2
DNS1=ip前三网段.2
动态
BOOTPROTO = dhcp
TYPE=Ethernet
NAME = eth1
DEVICE= eth1
ONBOOT=yes
注:若按照上面配置成功后 地址改变了 但是无法ping 通 请查看网络首选项 中 nat模式的子网为多少,将它改为与ip地址网络相对应的网段
配置主机名
/etc/hostname
永久更改
hostname 主机名
临时更改
配置域名解析
/etc/hosts
添加 ip地址 对应的主机名称
RPM 软件包和 yum
软件包和RPM
安装模式 -i
-h 安装时输出 hash记号
--test 只对安装进行,测试并不实际安装
--percent 以百分比形式输出安装的进度
--excludedocs
-U 升级一个包
查询模式 -q
查询一个包是否安装
i 得到被安装包的信息
l 列出该包中有哪些文件
f 列出服务器上的一个文件属于哪一个RPM包
a 列出被安装的所有包
验证模式 -v
删除模式 -e
参数
--force
即使覆盖属于其它包的文件也强迫安装
--nodeps
如果该RPM包的安装依赖其他包,即使其他包没有安装,也强迫安装
yum 软件包管理器
yum的主要配置文件 /etc/yum.conf
yum其他存储库配置文件在 /etc/yum.repos.d 目录中
配置存储库文件
1、 【库名称】
2、name=库名_repo
3、baseurl=file:// 或 ftp:// 或 http://
4、enabled= 0 不可用 1 可用
yum-config-manager
启用和禁用存储库
5、gpgcheck = 0 不验证 1 验证
可省略 gpgkey=file://数字密钥路径
若gpgcheck为1 可添加此选项 也可从外部导入密钥
createrepo 软件包路径
自定义源仓库时需手动生成repo
createrepo --update
添加文件后需 升级 文件内容
yum repolist all
查看yum源是否更新
yum 命令摘要
yum install 软件包名
获取并安装软件包,包括所有依赖
yum remove 包名
删除软件包,包括所有支持软件包
yum list
显示已安装的和可用的软件包
yum repolist
重新加载yum软件包
yum clean all
清除所有缓存
yum search 字段
列出和字段匹配的软件包
yum info 包名
提供与软件包相关的详细信息,包括安装所需的磁盘空间
yum provides 路径名
显示与指定的路径名匹配的软件包,可使用通配符
yum update 包名
更新软件包版本,包括所有依赖项。
yum group list 或 yum grouplist
将列出已安装和可用的组的名称
有些组 一般通过环境组安装,默认为隐藏。
yum group list hidden
可用列出隐藏的组
添加 ids 选项 会显示组id
yum group info 或 yum groupinfo
显示组的相关信息
标记
=
软件包已安装,已作为该组的一部分安装
+
软件包未安装,将在安装或更新该 组时安装
-
软件包为安装,不会再安装或更新该组时安装
无标记
软件包已安装,但不是通过该组安装的。
yum group install 或 yum groupinstall
安装一个组,同时安装其必选和默认的软件包,以及它们的依赖包
yum-config-manager
可创建yum配置文件
--add-repo= “网址”
可自动生成与网址或路径所对应的配置文件
-enabled
可更改enabled属性
yum localinstall 软件包
可直接安装本地软件包文件
yum 日志记录
/var/log/yum.log中
yum history 查看安装和删除事务的摘要
yum history undo
撤销事务
linux 文件系统
文件系统和设备 概述
存储设备由一个特殊文件类型表示,其称为块设备。块设备存储在 /dev 目录中
常见的文件系统
- ntfs 、fat32、ext3、ext4(rhel6)、xfs(rhel7)
命名规则
第一个硬盘设备为a 以此类推
n:第一个分区为 1 以此类推
scsi 、 PATA 或 USB 硬盘驱动器 sd
ide设备是 hd
虚拟设备 vd
/dev/sda 第一个主分区为 sda1 第二个为 sda2 一次类推
MBR 主引导记录
主分区+扩展分区最多为4个 扩展分区中可以创建 15个逻辑分区
所格式化的磁盘容量不超过 2TiB
GPT 全局唯一标识磁盘分区表
128个分区(可以都是主分区)可以支持2T以上的大容量磁盘
逻辑卷管理 LVM
通过LVM,一个或多个块设备可以汇集为一个存储池,称为卷组
df
查看所有已挂载的普通文件系统的总磁盘空间、已用磁盘空间和可用磁盘空间
-h
以 kb mb gb 为单位
-H
商用单位 以1000换算
lsblk
查看文件系统树结构
-l 以长列表方式显示
-S 查看scsi设备
-s 以颠倒的顺序打印依赖 等同于 lsblk --inverse
-b 设备路径
列出指定设备信息
-m 设备的所有者 显示设备的权限信息
blkid
查询所有的文件系统类型
可指定设备路径
挂载和卸载文件系统
若挂载点目录不为空,则挂载后 原目录中的文件将不可访问
注:文件挂载点 默认挂载到 /mnt目录中,建议在 /mnt下创建子目录,并将子目录作为挂载点
mount 手动挂载文件系统
第一个参数指定要挂载的文件系统
第二个参数指定挂载点
mount 参数 挂载文件 挂载点
-a 挂载全部
永久挂载
配置 /etc/fstab 文件
设备/UUID
blkid 或 lsblk -f 可查看uuid
挂载点
文件系统
xfs
swap
选项
defaults
备份
1 备份 0不备份
检测
1 备份 0不备份
umount卸载文件系统
注:要卸载文件系统,需要使用挂载点作为参数
例 umont 挂载点路径
注:若挂载点正在某一进程访问,将无法卸载。
lsof 列出所给目录中所有打开的文件以及访问他们的进程
lsof 选项 文件名
若不加参数运行将列出所有被打开的文件
可指定文件名 来查看 此文件被谁使用
+D 对应目录下的所有子目录和文件都会被列出
-u username 列出指定用户打开的文件信息
-c 程序名 列出指定程序打开的文件信息
-p pid 列出某进程打开的文件信息
可使用多个pid 用,隔开
-i 列出网络连接
可指定协议名或端口
-N 列出网络文件系统
-U 域名socket文件
-g gid 用户组所打开的文件信息
访问可以的存储设备
usb闪存设备和驱动器等可移动介质在插入后便由图形桌面环境自动挂载
挂载点 是 /run/media/<用户名>/<label>
label 是文件系统创建时所取的名称
交换空间 swap
创建分区 类型为 linux swap
格式化 mkswap
挂载swap分区
配置 /etc/fstab
swapon -a 挂载
swapoff 路径
卸载
swapon -s 查看
free
显示系统内存的使用情况,包括物理内存,交换内存和内核缓冲区内存
fdisk /dev/硬盘号
注 硬盘容量最大不超过2Tib
n 新建磁盘
主分区+扩展分区 最多只能创建4个
扩展分区中最多可创建15个逻辑分区
m 帮助
p 打印
d 删除
t 更改分区类型
l 查看硬盘类型
w 保存退出
q 不保存退出
gdisk /dev/硬盘号 专用于GPT分区
操作同 fdisk
不能创建mdr
parted 分区
1 parted /dev/硬盘名
2 mklabel 分区类型
gpt 类型
msdos MBR类型
3 mkpart primary(主分区)或 extended(扩展分区) 0% 100% 0 分区开始位置 100 结束位置
4 print 打印当前分区 p 也可以
5 mkfs,ext3 /dev/sdb1 格式化分区
非交互式添加
parted /dev/sdb mkpart primary 1 1000M
parted /dev/sdb mkpart primary 1001 3000M
修改分区表
parte -s /dev/sdb mklabel msdos
parted -s /dev/sdb mklabel gpt
格式化分区
mkfs.文件类型 /dev/sdb1
-V 显示详细模式
-t 给定档案系统的形式
-f 强制格式化
例 mkfs.xfs /dev/sdb2
制作文件间的链接
硬链接
ln 为现有文件创建硬链接,可创建多个硬链接,只要它们与现有文件在同一个文件系统中
ln 现有文件 链接文件 链接文件可指定目录
硬链接 即使源文件被删除 连接文件仍可使用
硬链接是创建一个新文件名,将它的inode指向源文件的inode,所以硬链接的inode和源文件是相同的,源文件删除后硬链接仍然有效
软连接
ln -s 创建软连接也称为符号连接
软连接可指向不同文件系统
当源文件被删除后 软连接将不可用
指向缺失的文件的软连接称为 悬挂的软链接
软链接可指向目录
查找系统中的文件
locate 根据名称查找文件
locate 命令根据 locate数据库中的文件名或路径返回搜索结果
以普通用户搜索条目时,调用locate 搜索的用户必须包含匹配元素的目录树拥有读取权限,才会返回结果
-i 不区分大小写
-n 限制返回搜索结果的数量
数据库每日更新,可使用 updatedb 命令更新数据库
find 搜索文件
find 命令在本地文件系统中执行实时搜索,查找符号命令行参数条件的文件
调用find命令必须具有要查看其内容的目录的读取和执行权限
find 第一个参数是要搜索的目录 省略 默认为当前目录
-name 文件名 查找匹配所给文件名的文件,并返回完全匹配项
可使用通配符
find 可根据所有权或权限搜索文件
选项
-user
-group
-uid
-gid
-perm 查找具有特定权限集的文件
权限可以描述为 八进制值
权限前面客可加
/
匹配文件 用户,组,其他人权限集中的至少一位
-
所有的三个实例都必须存在
注:所有匹配 是拥有即可 不是精确匹配 例如 匹配w 权限 文件拥有rw权限 或wx权限或rwx权限都满足匹配
-size 大小
k 表示千字节
m 表示兆字节
G 表示千兆字节
搜索指定大小的文件 例如 find -size 10m
-mmin 分钟
查找从指定时间更改的所有文件
+分钟
代表指定时间以前修改的
-分钟
代表 不到150分钟以前修改的
-type 类型 限制为给定的文件类型
f 普通文件
d 目录
l 软连接
b 块设备
-links n 查找具有特定硬链接数的文件
+ 代表超过
- 代表小于
管理逻辑卷管理(LVM)存储
卷
什么是逻辑卷管理
逻辑卷管理(LVM)指系统将物理 卷管理抽象到更高的层次,与物理磁盘和分区不同,逻辑卷展现给我们的是逻辑上的存储结构。LVM可以将分区和磁盘聚合成一个虚拟磁盘,从而用小的存储空间组成一个统一的大空间。这个虚拟磁盘在 LVM术语中称为卷组。
在磁盘列表中添加磁盘和分区,对现有的文件系统进行扩展
逻辑卷的结构
卷
物理卷 PV
是物理磁盘或物理磁盘分区(比如 /dev/sdb1 或 /dev/sdc)
卷组 VG
物理卷的集合
卷组是实现将n个pv 映射成 m个LV的关键
逻辑卷 LV
卷组可以划分多个逻辑卷
区段
为实现n到pv到LV的映射,pv和VG划分的基本数据块必须要大小一致,我们就将这些基本的数据块称为区段
也就是物理区段(PE)和逻辑区段(LE),虽然是n个PV到m个LV的映射,但是PE和LE 总是一对一映射的
在LVM2中,默认的区段大小是4M,也就是说在划分LV的时候,会以4M为基本单位进行划分
设备映射器
在创建VG和LV的时候,如果我们不指定名字的话,设备映射器就会默认生成名称,并指定到物理设备 /dev/mapper/目录下
卷的管理
创建物理卷
注:当物理卷添加到系统之后,我们可以对物理设备进行分区,也可以直接拿过来使用
如果要用分区去构建逻辑卷的话,在创建该分区的时候,分区类型应该是Linux LVM(8e)
pvcreate 磁盘路径
例 pvcreate /dev/sdb
注 此时磁盘大小以 pe为单位,一个pe约为 4mib
pvs
查看
pvdisplay
查看物理卷的详细信息
创建卷组
创建卷组中,可以指定卷组的名称和物理区块(PE)的大小 也可省略
vgcreate 卷组名称 物理卷路径
例 vgcreate VG0 /dev/sdb
pvs
查看
pvdisplay
查看物理卷的详细信息
vgdisplay
查看卷组的详细信息
创建逻辑卷
注: 没有逻辑卷和文件系统,用户并不能直接使用
lvcreate
-n 指定名称
-l 指定大小
指定pe的个数
-L 指定大小
例 lvcreate -n name -L 2G vg...
lvs
查看
lvdisplay
查看逻辑卷的详细信息
删除逻辑卷
lvremove 设备名称
运行此命令之前必须卸载 LV文件系统。
删除卷组
vgremove 卷组名称
删除物理卷
pvremove 物理卷路径
给逻辑卷创建文件系统
逻辑卷创建成功后,就可以将其作为一个分区来使用,就像物理分区,我们先对逻辑卷创建文件系统
mkfs.xfs 逻辑卷物理路径
扩展卷组
vgextend
扩展逻辑卷
lvextend -L 50G 逻辑卷物理路径
-L 指定大小
例如 +50G
lvs 查看
同步文件系统
xfs_gowfs /mnt/lv0(挂载点)
其他文件系统命令是 resize2fs
缩减逻辑卷
1 取消逻辑卷的挂载
umount 挂载点
2 检查文件系统 -f表示强制性检查
e2fsck -f /dev/VG0/LV1
3 直接将文件系统的大小缩减到50 G
resize2fs /dev/VG0/LV1 50G
4将逻辑卷的空间缩减到 50G
lvreduce -L 50G /dev/VG0/LV1
重新挂载 就可以了
缩减卷组
1 移动物理区段
使用pvmove 将物理卷上使用的任何五路区段重新分配给 VG中的其他PV
例 pvmove /dev/vdb2
此命令会将PE从 /dev/vdb2 移动到同一VG中具有空闲PE的PV
2 缩减卷组
vgreduce 将物理卷从卷组中删除。使用vg名称和pv设备名称作为该命令的参数
vgreduce vg-alpha /dev/vdb2
对RHEL启动过程进行控制和故障排除
linux 启动系统过程
RHEL6 系统的7种运行级别与用途
0 关机状态
1 单用户模式
2 字符界面的多用户模式
3 字符界面的完整多用户模式
4 未分配使用
5 图形界面 的多用户模式
6 重新启动
界面切换
切换字符界面
systemctl isolate multi-user.target
切换到图形界面
systemctl isolate graphical.target
查看当前界面
graphical.target
设置界面默认值
systemctl set-default multi-user.target(设置默认为图形界面)
进入 rescue.target 或 emergency.target
在启动选项倒计时结束前 按 e
找到 linux16 开头行 按end 到结尾处
添加 systemd.unit=rescue.target
Ctrl +x
恢复root 密码
在启动选项倒计时结束前 按 e
找到 linux16 开头行 在行尾 添加 rd.break console=tty0(看情况添加)
ctrl +x
mount -o remount,rw /sysroot
chroot /sysroot
echo 123 |passwd --stdin root
exit
开启调试shell
systemctl status debug-shell.service
systemctl enable debug-shell.service
systemctl start debug-shell.service
systemctl status debug-shell.service
ctrl+alt+f9 进入调试shell 默认以root登录
调试完后 禁用调试shell
systemctl stop debug-shell.service
systemctl disable debug-shell.service
修改网卡 ensX 为 ethX
vim /etc/sysconfig/grub
/etc/sysconfig/grub 下的GRUB_COMLINE_LINUX="" 中添加 net.ifnames=0 biosdevname=0 ” //禁用eno16777736
grub2-mkconfig -o /boot/grub2/grub.cfg
更新 grub2文件
vim /etc/udev/rules.d/70-persistent-ipoib.rules
编辑 /etc/udev/rules.d/70-persistent-ipoib.rules 文件, 复制一行注释掉的内容,去掉#注释,修改NAME=eth0, 同时修改 ATTR{address}==“你的mac地址”
重启
nmcli connection show
查看
nmcli connection delete ens33
删除连接
nmcli connection delete ens37
nmcli connection add type ethernet ifname eth0 con-name eth0
创建连接
nmcli connection add type ethernet ifname eth1 con-name eth1
nmcli connection modify eth0 ipv4.method auto autoconnect yes
自动获取
systemctl restart network
重启网络
使用firewalld 限制网络通信
防火墙分类
软件防火墙
硬件防火墙
包过滤防火墙
代理防火墙
firewalld 简介
对于传入系统的每个数据包,将首先检查其源地址(source)。如果该源地址没有关联某个区域,则将传入网络接口(interface)区域
如果网络接口也未关联某个区域,则将使用默认区域,默认区域一般为 public 区域
firewalld配置文件 存储在 /etc/firewalld和 /usr/lib/firewalld
预定义区域
共9个 这里重点记4个
trusted
允许所有传入流量
public
除非与传出流量相关,或与 ssh或 dhcpv-client 预定义服务匹配,否则拒绝传入流量
block
除非与传出流量相关,否则拒绝所有传入流量
drop
除非与传出流量相关,否则丢弃所有传入流量(甚至不产生包含ICMP错误的响应)
配置防火墙设置
三种主要方式
直接编辑 /etc/firewalld/firewalld.conf 中的配置文件
使用 firewall-config 图形工具
使用 firewall-cmd 命令行
ZONE 是firewalld的单位 firewalld默认有9个ZONE,默认ZONE为public,以下命令大部分未指定ZOEN将或指向默认ZONE
ZONE 的配置文件 /usr/lib/iptables/zone
--get-default-zone
查询当前默认区域
--set-default-zone=<ZONE>
设置默认区域。
--get-zones
列出所有可用区域
--get-active-zones
列出当前正在使用的所有区域(具有关联的接口或源)及其接口和源信息
--add-source=<CUDR> [--zone=<ZONE>]
将来自IP地址或网络/子网掩码<CIDR>的所有流量路由到指定区域。
--remove-source=<CIDR> [--zone=<ZONE>]
从指定区域中删除用于路由来自IP地址或网络/子网掩码<CIDR>的所有流量的规则。
--add-interface=<INTERFACE> [--zone=<ZONE>]
将来自<INTERFACE>的所有流量路由到指定区域。、
--change-interface=<INTERFACE>[--zone=<ZONE>]
将接口与<ZONE>而非其当前区域关联。
--list-all [--zone=<ZONE>]
列处<ZONE>的所有已配置的接口、源、服务和端口。
--list-all-zones
检索所有区域的所有信息。(接口、源、端口、服务等)
--add-service=<SERVICE>[--zone =<ZONE>]
允许到<SERVICE>的流量。
--add-port=<PORT/PROTOCOL>[--zone=<ZONE>]
允许到<PORT/PROTOCOL>端口的流量
--remove-service=<SERVICE>[--zone=<ZONE>]
从区域的允许列表中删除<SERVICE>
--remove-port=<PORT/PROTOCOL> [--zone=<ZONE>]
从区域的允许列表中删除<PORT/PROTOCOL>端口
--reload
丢弃运行时的配置并应用持久配置
域名解析DNS
域名系统(DNS)
什么是DNS
DNS(Domain Name System)是‘域名系统’的英文缩写,是一种组织成域层次结构的计算机和服务器命名系统,使用的是UDP协议的53号端口,
它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作
域的分类
顶级域(TLD)
是仅有一个组成部分的域。通常TLD最初按主题组织并包括
根域(.)
根域标识为(.)点,全球13组根域名服务器已英文字母A到M依序命名,域名格式为“字母 .root-servers.net”
其中有11个是以任播技术在全球多个地点设立镜像站。比如中国大陆在北京 编号为 L的镜像,编号为 F I J 的镜像各一台,共5台;香港有编号为 D J 的镜像各两台,编号为 A F I L 的镜像各一台共8台,台湾则有编号为 F I J 个一台共3台
顶级域
顶级域(TOP Level Domain 简称 TLD)分为三类
通用顶级域
如 .com (商业机构) .org(非营利性组织) .net(网络服务机构)等
国家顶级域
如 .cn (中国) .uk (英国) .us(美国) .jp(日本)等
反向域(基础建设顶级域)
.arpa 即从IP到FQDN的反向解析
DNS服务器查询的类型
递归
客户端仅发出一次请求,让DNS服务器去查询返回结果
迭代
要发出多次请求去分别查询不同的DNS服务器
DNS名称解析方式
FQDN:完全合格的域名
1 正向解析
即将 FQDN 转化为 IP
2 反向解析
即将 IP 转化为 FQDN
DNS服务器类型
主 DNS 服务器:负责解析至少一个域
辅助(从)DNS服务器:负责解析至少一个,是主DNS服务器的辅助
缓存DNS服务器:不负责解析域,只是缓存域名解析结果
DNS返回的结果类型
肯定答案
查询的域,会被缓存下来
否定答案
不存在查询的域名,因此不存在与其擦好像的域名对应的IP;会被缓存下来
权威答案
所查询的域名的结构是由负责解析这个域的DNS服务器所返回的答案
非权威答案
在缓存中查询的结果
DNS的监听端口
tcp的53号端口,udp的53号端口
DNS解析原理
第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。
第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域) 的主域名服务器的地址。
第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。
第五步:重复第四步,直到找到正确的纪录。
第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。
DNS资源记录
一个资源记录包含以下元素
owner-name
该资源记录的名称
TTL
资源记录的生存时间(秒)
class
记录的“类”,几乎总是IN(Internet)
type
类型表示此记录存储的信息的排序。A代表IPv4 AAAA代表 IPv6
date
此记录存储的数据(如 IP地址)
bind 服务
安装
yum -y install bind bind-chroot
bind 域名服务包
bind-chroot 虚拟根支持
bind服务器端程序
主要执行程序
/usr/sbin/named
系统服务
named
默认端口
TCP/UDP 53
运行时的虚拟根环境
/var/named/chroot/
配置文件
主配置文件
/etc/named.conf
options 用来定义一些影响整个 DNS服务器的环境
listen-on port 53 {any;};
监听所有地址的53端口
directory “/var/named”
用来指定在本文件指定的文件的路径
allow-query {any;};
允许查询 any 表示所有
recursion yes
代表 允许 递归查询
zone “参数”in(正向)/in-addr.arpa(反向) 一个zone关键字定义一个区域
type 这里type有三种类型
master:表示定义的是主域名服务器
slave:表示定义的是辅助域名服务器
hint: 表示是互联网中根域名服务器
file “文件”
用来指定具体存放DNS记录的文件
地址库文件
/var/named/.. ..
自定义地址库
/var/named/named.localhost 是系统自带的模板,复制此文件修改为自定义地址库
cp -a /var/named/named.localhost /var/named/自定义库名 -a 保留属性
详解
@ 代表在子配置文件中 zone后“”中所写的内容
NS 名称服务器
A(ipv4) 将主机名映射到对应的主机IP地址上
例 baidu.com. NS soft
soft A 192.168.99.173
www A 2.2.2.2
soft A 192.168.99.173
www A 2.2.2.2
检查语法
named-checkzone baidu.com /var/named/baidu.com
DNS轮询及泛域名解析
通过DNS轮询,可以针对大量客户机对同一个域名的解析轮流反馈不同的解析结果,从而实现了负载均衡的效果,减轻了目标站点的压力
配置如下
目标域名 IN A 第一个节点的ip地址
目标域名 IN A 第二个节点的IP地址 等等
对于泛域名来说,如果目标站点未知,可以在主配置文件中的解析记录最后添加如下内容
* IN A 任意站点名导向到的指定IP地址
如果目标站点名已知且有整数规律,例如 station10-80.tedu.cn 解析为 192.168.4.10-80则可在tedu.cn地址库文件中加入以下内容
$GENERATE 10-80 station$ IN A 192.168.4.$
扩展
/etc/hosts
ip与域名快速解析的文件
也包含了 ip与主机名之间的映射
格式 ip地址 主机名/域名(主机别名)注 可跟多个域名,用空格隔开
host 命令
把一个主机名解析到一个网际地址或把一个网际地址解析到一个主机名
host [-n [-a][-c Class][-d][-r][-t Type][-v][-w][-z]] Hostname|Address[Server]
-a 等价于使用 -v-t*
-c Class 当搜索非网际数据时要指定要查找的类。有效类为:
in 网际类
CHAOS chaos类
HESIOD MIT Althena Hesiod 类
ANY 通配符
* 通配符
-d 打开调试
-n 等价于发布 /usr/bin/hostnew命令
-r 禁用递归处理
-t Type 指定要查询的记录类型
A 主机的网际地址
CNAME 别名的规范名称
HINFO 主机CPU与操作系统类型
KEY 安全密钥记录
MINFO 邮箱或邮件列表信息
MX 邮件交换器
NS 指定范围的名称服务器
PTR 如果查询的是一个网际地址则为主机名;否则为其他信息的指针
SIG 签名记录
SOA 域的 授权开始 信息
TXT 文本信息
UINFO 用户信息
WKS 所支持的众所周知的服务
- v 详细方式
-w 永远等待 DNS服务器的一个回答
-z 使用显示资源记录信息的新输出
参数
Address 说明是用来解析主机名的主机的网际地址。Address参数必须是一个有效的网际地址,以加点的十进制格式表示
HostName 说明要用来解析网际地址的主机名称。
Server 指定要查询的名称服务器
例
要显示主机名为 mephisto 的主机地址
host mephisto
提供远程块存储
存储分类
封闭系统的存储
开放系统的存储
DAS直连式存储
存储系统被直连到应用的服务器中
NAS网络接入存储
存储设备通过标准的网络拓扑结构(例如以太网)添加到一群计算机上
SAN存储区域网络
设备通过光纤通道交换机连接存储阵列和服务器主机,最后成为一个专用的存储网络。
iSCSI 简介
从技术实现上来讲,iSCSI是基于IP协议的技术标准,它允许网络在TCP/IP协议上传输SCSI命令,实现SCSI和TCP/IP协议的连接,这样用户就可以通过TCP/IP网络来构建SAN,只需要不多的投资,就可以方便、快捷地对信息和数据进行交互式传输和管理
扩展
FC SAN 与 IP SAN
在iSCSI技术出现后,通过IP技术搭建的存储网络也应运而生,SAN技术也就出现了两种不同的实现方式,即FC SAN与IP SAN。简单来说,以光纤搭建的存储网络就是FC SAN.以iSCSI技术搭建的存储网络叫做IP SAN。
iSCSI协议的允许方式 类似于客户端(C)-服务器(S)
iSCSI 组件术语
术语
描述
启动器
一个iSCSI客户端,通常以软件提供,但是也可以作为iSCSI HBA 来实施。必须为启动器授予唯一名称
目标
一个iSCSI存储资源,针对来自 iSCSI 服务器的连接而配置。必须为目标授予唯一名称。目标提供一个或多个带有编号的块设备,称为逻辑单元。一个iSCSI服务器可以同时提供多个目标
ACL
访问权限控制列表,一种使用节点 IQN(通常是iSCSI启动器名称)来验证启动器的访问权限的访问限制
发现
查询目标服务器以列出配置的目标。目标使用要求其他的访问步骤
IQN
iSCSI 限定名称,全球唯一名称,用于以强制命名格式来识别启动器和目标
格式 iqn.YYYY-MM.com.reversed.domain[:optional_string]
iqn : 表示此名称将使用域作为其标识符
YYYY-MM 拥有域名的第一个月
com.reversed.domain 此 iSCSI名称的创建组织的逆向域名
optional_string 以冒号为前缀的可选字符串,由域所有者根据需要进行分配,但也是全球唯一。它可以包含冒号以分隔组织边界
登录
向目标或LUN进行身份验证以开始使用客户端块设备
LUN
逻辑单元号,带有编号的块设备,连接到目标并且通过目标来使用。可以有一个或多个LUN连接到单个目标,但通常一个目标仅提供一个LUN
节点
任何 iSCSI启动器或iSCSI目标由其 IQN来标识
门户
目标或启动器上用于建立连接的IP地址和端口。一些iSCSI实施将门户和节点互换使用
TPG
目标门户组,某个特定iSCSI目标将要侦听的接口IP地址和TCP端口的集合。可以将目标配置(如ACL)添加到TPG以协调多个LUN的设置
targetcli 配置iSCSI服务器
简介
targetcli 即是命令行实用程序,也是一个交互式shell,在其中可创建、删除和配置 iSCSI目标组件,目标堆栈对象分组为对象的层级树,以便能够轻松进行浏览和上下文配置。
iscsiadm命令详解
-m discovery
显示有关已发现目标的信息
-m node
显示有关已知目标的信息
-m session
显示有关活动会话的信息
配置服务器(target)
1、安装 targetcli
yum -y install targetcli
2 运行 targetcli 已进入交互模式
targetcli
3 创建后备存储,有几种类型的后备存储
block:服务器上定义的块设备。磁盘驱动器、磁盘分区、逻辑卷、多路径设备以及服务器上定义的任何b类型的设备文件。
/backstores/block/ create block1(名称) /sdv/sdb1(物理磁盘路径)
fileio:在服务器的文件系统中创建一个指定大小的文件。此方法类似于使用映像文件作为虚拟机磁盘映像的存储
dd if=/dev/zero of=/root/disk1_file bs=1M count=10 (bs*count=文件大小)
/backstores/fileio create file1 /root/disk1_file
remdisk
在服务器内存中创建一个指定大小的ramdisk设备
4 为目标创建 IQN。同时创建了一个默认TPG
/iscsi create iqn.2019-08.com.neuedu:remotedisk
同时创建了一个默认门户(0.0.0.0:3260 )
5 在TPG中创建一个ACL以供客户端节使用
/iscsi/iqn.2019-08.com.neuedu.remotedisk/tpg1/acls create iqn.2019-08.com.neuedu:client0
6 为后备存储创建LUN 用来激活后端存储
iscsi/iqn.2019-08.com.neuedu:remotedisk/tpg1/luns create /backstores/block/block1(后备存储路径)
7添加门户,首先删除默认门户
/iscsi/iqn,2019-08.com.neuedu:remotedisk/tpg1/portals delete ip_address=0.0.0.0 ip_port=3260 (删除默认门户)
/iscsi/iqn.2019-08.com.neuedu:remotedisk/tpg1/portals create ip地址 (ip地址为自己的 ,端口号默认添加 3260)
8 退出自动保存
exit
9 启动服务
systemctl start target
用 status 查看服务启动状态
客户端访问(iscsi)
注:需先关闭 服务端的 防火墙 并 关闭SELinux
1 安装客户端
yum -y install iscsi-initiator-utils.i686
2 修改 initatorname
vim /etc/iscsi/initiatorname.iscsi
initiatorName=服务端的ACL
3 启动服务
systemctl restart iscsi 会提示警告 并会为你提供一个命令
systemctl daemon-reload
systemctl restart iscsi
systemctl restart iscsid
4 发现设备
iscsiadm -mode discoverydb --type sendtargets --portal 服务器ip --discover
5 登录设备
iscsiadm -mode node --targetname iqn.2019-08.com.neuedn:remotedisk (发现设备发现到的IQN) --portal 192.168.99.173:3260(服务器ip及端口) --login
登录成功后 服务器共享的 硬盘就会出现在客户机上 若要使用 ,客户机需格式化分区(mkfs)并挂载才可以使用。
6 退出登录
将登录命令中的 login 换成 loginout
7 删除门户信息
将登录命令 中的--login 换成 -o delete
注 4 -7 步可查看 man帮助获得命令 man iscsiadm
补充
查看有关已发现目标的信息:-p 显示详细程度
iscsiadm -m discovery -p 0或1
存放节点信息的文件
/var/lib/iscsi/nodes/服务端IQN标识/ip地址\,3260\,1/default
nfs:网络文件系统
1装包
yum -y install nfs-utils
2 配置
配置文件
/etc/exports
共享的目录
可以访问的主机(选项)
/etc/exports.d/*.exports
自定义的配置文件
ro 只读
rw 读写
sync 同步
async 异步
在/etc/exports 中添加 /myshare 192.168.99.0/24(rw)
3 启动服务
systemctl restart nfs-server.ervice
exportfs -r 修改完配置文件后,重新加载
exportfs -rv 查看本机导出的内容
客户端 挂载使用 mount ip:/共享目录 /本地挂载点
客户端永久挂着
修改 /etc/fstab
服务端ip:路径 本机路径 nfs default 0 0
注此时客户端并不能操作服务端共享文件,是因为 服务端共享的文件中,其他人的权限为 r-x 没有写权限,需在服务端更改 为其他人添加写权限
扩展
查看服务器导出了哪些目录
showmount -e 服务器ip
使用自动挂载器挂载 nfs 共享:autofs 没做好呢
1 装包
yum -y install autofs
2 添加主映射文件
/etc/auto.master
/etc/auto.master.d/*.autos
samba文件共享
配置smb文件共享
1 装包
yum -y install samba
2 创建需要共享的文件
注:此文件不能是nfs 共享的 否者 会导致文件系统损坏
mkdir /文件名
并赋予它对应的权限
3 配置smb文件
vim /etc/samba/smb.conf
[共享名称]
此名称用于客户端挂载使用
path=所共享文件路径
hosts allow = ip/24
此ip为允许访问的用户 再此以网段形式表示
此三项为必写
comment 注释消息
此选项用于客户端发现时所显示的注释
public no/yes
能否被guest 访问 默认为 no
browsable yes/no
是否允许所有用户浏览此共享,默认为 yes ,no为隐藏
writable = yes/no
可以被所有用户读写,默认为no
read only = no /yes
默认为yes,是否只读。注 和writable=yes等价,若设置冲突则生效后面的
write list 三种形式
用户名,@组名,+组名 用,分隔 如writable=no 列表中的用户或组可读写,不在列表中用户只读
valid users 用户列表
特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔
4 创建 samba 用户
useradd -s /sbin/nologin 用户名
注:-s /sbin/nologin 代表此用户不能登录
smbpasswd -a 用户名
为smb用户创建密码
pdbedit 也可以添加samba用户
pdbedit -a 用户名
pdbedit -L
查看samba 用户
5 重启服务
systemctl restart smb nmb
注 服务端需关闭防火墙 需要为 文件设置对应的权限 需关闭SELinux 或为SMB设置逻辑值
客户端挂载并使用
1 创建挂载点
mkdir /挂载点
2 配置永久挂载
vim /etc/fstab
//服务器ip/共享文件名 挂载点 cifs username=smb用户名,password=smb密码,sec=ntlmssp,multiuser,_netdev 0 0
3 挂载
mount -a
df -h 查看是否挂载成功
若 服务端指定用户访问
先切换为普通用户身份
使用 cifsreds add -u smb用户 服务器ip
配置 mariadb 数据库
数据库分类
mariadb数据库和 mysql数据库 是同一人开发 所以命令相似
关系型数据库
mysql
oracle
非关系型数据库
redis
mongodb
memcached
数据库基础知识
安装数据库
yum -y install mariadb mariadb-server.x86_64
配置文件
/etc/my.cnf
数据目录
/var/lib/mysql
起服务(初始化)
systemctl start mariadb
会在 数据目录下创建初始文件
端口号为 3306
mysql 可进入数据库
数据库 默认没有密码
提高mariadb安全性
执行 mysql_secure_installation
1 输入当前root密码
2 设置 mysql 密码
3 移除匿名用户
4 移除 test库
5 刷新授权表
跳过网络,本地访问(无需修改)
vim /etc/my.cnf
修改为 skip-betworking =1
mysql
简介
mysql数据库是一些关联表的集合
数据表
表是数据的矩阵
列:一列(数据元素)包含了相同类型的数据
行:一行(=元祖,或记录)是一组相关的数据
冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性
主键:主键是唯一的;一个数据包中只能包含一个主键。
外键
外键用于关联两个表
复合键
复合键(组合键)将多个列作为一个索引键,一边用于复合索引
索引
使用索引可以快速访问数据库表中的特定信息。
参照完整性
参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性
SQL 语句
数据定义语言(DDL)
创建和管理数据库,包括创建修改表,定义索引,管理约束条件。DDL操作对象为数据库内部的对象
数据操纵语言(DML)
查询和更新数据库中的数据,用于添加,删除,更新,查询。DML 的操作对象是表的内部数据。而不会涉及到表的定义,结构的修改
数据控制语言(DCL)
对用户的权限控制
数据查询语言(DQL)
对数据库查询
常用数据类型
数值型
int
float
double
日期型
date
日期值
YYYY-MM-DD
3字节
time
时间值或持续时间
HH:MM:SS
子主题
year
datetime
字符串类型
char
定长
0-255字节
varchar
变长
0-65535字节
命令
登录mariadb
mysql -u root -h localhost -p密码
注 -h 选择登录的mysql 默认本地 可远程 将localhost 改为ip地址
注登录mysql 后 所有内置命令 以;(分号)结尾
show命令
show databases
显示所有的库
show tables
显示指定库中的表
create 创建命令
http服务
http
http是互联网上应用最广泛的一种网络协议,是一个客户端和服务器请求和应答的标准(TCP),用于从www服务器传输超文本到本地浏览器的传输协议,它可以使用浏览器更加高效,使网络传输减少。
端口80
https
是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSl,因此加密的详细内容就需要SSL
简单来说 https就是 http+ssl
ssl协议,依靠证书来验证服务器的身份,并为浏览器和服务器之间通信加密
https协议需要到ca申请证书
端口443
HTTPS分为两种
建立一个信息安全通道
确认网站的真实性
配置 apache httpd
安装 yum -y install httpd httpd-manual(http用户手册) http tools(http工具包)
firefox localhost/manual 可查看
主配置文件
/etc/httpd/conf/httpd.conf
默认网站的根目录
/var/www/html
配置虚拟主机
1 在 /var/www/下建立自己的网网站根目录
在根目录添加自己的网站
默认访问 index.html 可在主配置文件中指定先访问 index.php
例 mkdir /var/www/neuedu 可在neuedu目录下创建index.html 在里面添加些内容作为测试所用
2 在 /etc/httpd/conf.d/ 下创建自己的配置文件 文件名称任意但结尾需要有 .conf
最简单的配置
此内容可单独存放于别处也可以使用
<Directory "/var/www/neuedu">
对根目录的一个权限设置
Require all granted
访问权限 all 代表全部都可以访问
Allowoverride none
表示不允许这个目录下的访问控制文件来改变这里的配置
</Directory>
<VirtualHost 192.168.52.129:80>
DocumentRoot /var/www/neuedu
网页文件存放的目录
ServerName www.neuedu.com
域名
</VirtualHost>
其他选项
可在 VirtualHost中添加
Errorlog "/var/log/httpd/www.neuedu.com-error_log"
将创建一个存放错入日志的文件
CustomLog “/var/log/httpd/www.neuedu.com-access_log” combined
日志文件
可将 combined 修改为 common 两者作用为 日志的格式 , 前者格式更详细,common格式简略
网站别名 ServerAlisas
ServerAlias www.soft.com
配置了网站别名
基于ip访问
若virtualHost 中把所有内容都上略 那么可以通过ip地址访问 注此时 virtualHost格式为
<VirtualHost 10.25.133.87:80>
</VirtualHost>
通过 curl 10.25.133.87访问
将访问 /var/www/html/index.html
基于端口
可在 virtualHost 前 添加
Listen 8080
此时需将 virtualhost 中 ip地址后面的端口改为 8080
<VirtualHost 10.25.133.87:8080>
访问 域名:8080 就可以了
通配符
ip地址可改为 *:80
此时访问你的任意ip 都可以达到访问网页的目的
3 配置 hosts 映射关系(若有dns服务器可配置dns服务器)
在hosts 中添加 ip地址 主机名
这是一个简单的域名解析,若 不添加 将无法识别你的域名
配置https
安装yum -y install mod_ssl
重启服务系统时会自动生成证书
生成自签名证书
yum -y install crypto-utils.x86_64
genkey (wwww.abcd.com)自定义域名
输入后进入图形界面配置证书
需修改配置文件中的两项内容
vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/pki/tls/certs/wwww.abcd.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/wwww.abcd.com.key
SSLCertificateKeyFile /etc/pki/tls/private/wwww.abcd.com.key
vim /etc/httpd/conf.d/site1.conf(site1存放了 wwww.abcd.com的配置)
需要在Directory 下添加 <RequireAll> 配置内容</RequireAll>
重定向 http -->> https
vim /etc/httpd/conf.d/site1.conf
在 VirtualHost 内 添加 RewriteEngine on
Rewriterule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
shell脚本
BASH SHELL 基础知识
创建BASH SHELL
脚本开发规范,开头加版权等信息
#Date: 2017-04-11
#Auth: Created by Lee
#Mail: xxx@163.com
#Function: This scripts function is ...
#Version: 1.1
#Auth: Created by Lee
#Mail: xxx@163.com
#Function: This scripts function is ...
#Version: 1.1
需要写 基于什么脚本运行此shell命令
#!后跟shell物理路径
/etc/shells 下存放了支持的shell
cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
PATH 环境变量
PATH中存放了 脚本的绝对路径,这样可以通过调用脚本名 来执行脚本
which 在 环境变量中查找
例 which hi.sh
添加脚本内容
echo
在屏幕输出
将标准输出,转化为标准错误输出
>&2 将标准输出转换为标准错误输出
2> 将标准错误输出 写入到某处
转义字符
\: 转意
单引号:全屏蔽
双引号:部分屏蔽
不屏蔽 $
变量
声明变量
变量名=值 (此声明不是全局声明)
扩展变量值
a=$[a]20
命令替换
`` 可以将命令替换出来
例如 a= `ls /shell`
$(变量)
可替换出变量的值
算术扩展
$[a+b] 将a 和b 前面都加上$符号 可得出a+b的和
let a+b
得出 变量a与变量b的和
i++
i在前 先赋值在加1
i 在后 先加1在赋值
% 取余
** 次方
结束循环语句
exit n
强制退出 并指定命令返回的值
例如 exit 2 执行$?就会返回2
Break:跳出循环,执行循环后的语句
Continue:跳过本次循环,执行下一次循环
For 变量名 in 值列表
do
命令
。。。
done
do
命令
。。。
done
for 变量 in 值列表;do;命令;done
值列表
多个值可用空格隔开 如 a b c
seq 初值(默认1) 步长(默认1) 终值
{1....10}
也是读取1-10
可用 ·· 将命令内容替换出来
替换文件内容, 一次读取一行
If [条件];then
命令。。。
elif [条件];then
命令
else
命令。。。
fi
命令。。。
elif [条件];then
命令
else
命令。。。
fi
条件详解
数值比较
-eq 等于
equal 等于
-gt 大于
greater than
-ge 大于等于
greater equal
-lt 小于
less than
-le 小于等于
less equal
-ne 不等于
not equal
字符串比较
等于: = ==
不等于: !=
-z 字符串长度为0(空)
-n:字符串非空
逻辑 AND(&&) 和 OR (||)
-a 也表示逻辑与
-o 表示 逻辑或
逻辑与和逻辑或 会有短路现象
例如 逻辑与在 第一个条件为假时 不执行后面条件
逻辑或在第一个条件为真时 不执行后面条件
也可以用命令来当 条件
当一条命令运行 成功时 $?显示为 0 运行不成功时 $?显示为其他数值
在 条件中 0 表示为真 其他数值表示为假
case 值 in
值1)
命令
;;
值2)
命令
;;
esac
值1)
命令
;;
值2)
命令
;;
esac
满足一条语句就退出
While [条件]
do
命令
……
done
do
命令
……
done
死循环的方式
while true
while :
实例
1-100的和
1-100的和
[root@server shell]# cat 100.sh
#!/bin/bash
sum=0
for i in {1..100}
do
let sum=sum+i
done
echo $sum
方法2
[root@server shell]# cat ./100_1.sh
#!/bin/bash
sum=0
for i in {1..100}
do
sum=$[sum+i]
done
echo $sum
[root@server shell]# cat 100.sh
#!/bin/bash
sum=0
for i in {1..100}
do
let sum=sum+i
done
echo $sum
方法2
[root@server shell]# cat ./100_1.sh
#!/bin/bash
sum=0
for i in {1..100}
do
sum=$[sum+i]
done
echo $sum
99乘法表
[root@server shell]# cat 99.sh
#!/bin/bash
for i in `seq 9`
do
for j in `seq $i`
do
echo -ne "$i*$j=$[i*j]\t"
done
echo
done
#!/bin/bash
for i in `seq 9`
do
for j in `seq $i`
do
echo -ne "$i*$j=$[i*j]\t"
done
echo
done
重要: 特殊变量
$1
$2 $3 ... 他们代表 运行脚本时传入的参数 $1代表第一个参数 以此类推
$0
表示脚本本身
$#
传递到脚本的参数个数
$*
以一个单字符串显示所有向脚本传递的参数
若用 【】括起来将以 $1 $2 。。。形式输出
$@
若使用时不加引号,会将所有参数视为整体
若用 【】括起来将以 $1 $2 。。。形式输出
$$
脚本运行的当前进程ID号
$-
显示 Shell 使用的当前选项。与 set命令功能相同 注:set 命令 查看 命令扩展
$?
显示最后命令的退出状态,0表示没有错误,其他任何值表明有错
执行脚本的几种方式
1 为文件添加执行权限,然后可用通过绝对路径(相对路径也可以)执行
chmod +x ./hi.sh
./hi.sh
2 将脚本直接添加到环境变量 PATH下,可直接通过脚本名运行
在PATH 下添加后
hi.sh
3 没有可执行权限 可以使用 bash 或(.)点脚本名(相对路径会绝对路径)来执行
bash /shell/hi.sh 或 ./shell/hi.sh
bash -v 可进入详细模式
脚本错误故障排除
调试模式:-x
bash -x 脚本名
文件添加 #! /bin/bash -x
脚本内 错误故障排除
set -x
set +x
配置shell环境
查看环境变量
env
set
声明环境变量
export 变量名=值
此声明为全局声明
取消变量
unset 变量名
alias 别名
type 命令名
可查看命令 的别名设置
/命令名
可跳过别名设置,直接执行原命令
临时定义别名
alias 别名(类似变量名)= ·命令·
别名永久化
将别名写入 ~/.bashrc 内
或将 别名写入 /etc/bashrc 中
提示符变量
$PS1
[\u@\h \W]\$
$PS2
>
可用 echo查看
shell中的函数定义
[ function ] name [()]
{
statements
[return value]
}
{
statements
[return value]
}
在定义函数时 ()中不写 参数
传参 name param1 param2 。。。用空号隔开
参数通过 $1 $2...调用
说明
function 是shell中的关键字,专门用来定义函数,可省略
name是函数名
statements 是函数要执行的代码
return value 表示函数的返回值 可省略
文件操作
linux不需要文件扩展名分类文件
绝对路径
自根目录(/) 指定到达且唯一代表单个文件所遍历的每个子目录
相对路径
仅指定从工作目录到达该文件所需的路径
查看文件/目录
cat 文件路径
查看文件内容
head 参数 路径
查看文件头
-n 数字 显示数字对应的行数 默认为10 n可以省略
tail 参数 路径
查看文件尾
其他同 head
ls -参数 [路径]
查看当前/指定 目录下的文件
注 (.)代表当前目录 (..)代表父目录 每个目录都有
注 : 以(.)开头的文件为隐藏文件
-l 以长列表的形式显示
- a 显示所有文件包含隐藏文件
-R 递归方式 包含所有子目录的内容
-d 显示当前目录
-h 以易读的方式显示文件大小 加上合适的单位
wc 参数 路径
-l 显示文件的行数
-w 显示文件的字数
-c 统计文字数量
注 空格算1个长度
注 一个中文 gbk为两个字符 utf-8 为 三个字符
pwd
查看当前位置的绝对路径
tree 命令
创建文件列表,将所有文件以树的形式列出来
linux 没有自带此命令 需手动安装
ps 命令
显示程序进程 默认为仅显示当前shell中的
a 选项可查看与某一终端相关的所有进程
u 选项可以查看与进程相关联的用户
例如 ps su
管理文件及目录
创建文件
touch 参数 文件名
在执行 vi /vim 时 若文件名不存在 将创建与文件名对应的文件
复制文件
cp file1 file2
或将多个文件复制到指定目录中
cp file1 file2.... dir
移动文件
mv file1 file2
将多个文件移动到指定目录
mv file1 file2 ... dir
删除文件
rm file1
删除多个文件
rm -f file1 file2 ..
创建目录
mkdir 参数 路径
复制目录
cp -r dir1 dir2
复制多个
cp -r dir1 dir2 ....
移动目录
mv dir1 dir2
移动多个
mv dir1 dir2..
删除目录
rm dir1
删除过个
rm -rf dir1 dir2
查找
which 文件名
查找那些我们已经安装好的可以直接执行的命令
主要查找系统 PATH 目录下的可执行文件
若文件没在PAth 路径下 不能被查询到
whereis 文件名
查找 二进制(命令) 源文件 man文件
此命令与which 不同 此命令可以通过文件索引数据库来查找
cd
切换目录
cd 或 cd ~ 家目录
cd / 根目录
cd .. / cd ../.. 上一层/上上层
注 - p 若父目录在创建中缺失,将创建父目录
-f 强制删除 不提示
-i 与f 相反 提示删除
-r 进行递归操作
远程文件操作
scp在系统间安全复制文件
在启动传输前,用户必须通过密码或ssh密钥与ssh服务器进行身份验证
scp 本机文件 ip或主机名:/路径
-r 拷贝目录
-p 保留文件原有属性
rsync 在系统间安全同步文件
rsync 功能
作为命令
实现本地-远程文件同步
作为服务
实现本地-远程文件同步
rsync特点
可以镜像保存整个目录树和文件系统
可也保留原有的权限、时间、软硬链接、文件acl、文件属性信息等
传输效率高、使用同步算法,只比较变化的
支持匿名传输,方便网站镜像
rsync 同类服务
sync 同步:刷新文件系统缓存,强制将修改过的数据块写入磁盘,并且更新超级快
async异步:将数据先放到缓冲区,在周期性(一般是30s)的去同步到磁盘
rsync远程同步:remote synchronous
rsync
文件内容改变也可以同步
通过ssh方式同步
推文件
rsync -av /etc/passwd ip:/tmp/cc.txt
拉文件
rsync -acP ip:/tmp/cc.txt /tmp/123.txt
-a 存档模式
-v 输出过程
-r 以递归方式同步整个目录
-l 同步符号链接
-p 保留权限
-t 保留时间戳
-g 保留组所有权
-o 保留文件所有者
-D 同步设备文件
-z 以压缩的方式传输
rsync 通过服务的方式同步
1 编辑配置文件 /etc/rsyncd.conf
rsyncd.con 样例
rsyncd.conf配置文件详解
更改端口后需要使用-port指定端口
2 启动服务rsync --daemon
3 格式:rsync -av test1/ test@192.168.36.130::test/
查看文件大小
du
-a 显示目录中文件的大小 单位kb
-b 显示目录中文件的大小 单位 byte
-c 显示目录中文件的大小,同时也显示总和 单位kb
-k -m 显示目录中文件的大小 k单位kb m 单位 mb
-s 仅显示目录的总值,单位 kb
-h 提高可读性
文件权限
注:权限无论如何更改 root用户都拥有读写权限
r 读取
可读取文件内容
可列出目录的内容
w 写入
可以更改文件内容
可以创建或删除目录中的任一文件
x 执行
可以作为命令执行
可以访问目录的内容(取决于目录中文件的权限)
权限 的顺序
属主 u user
属组 g group
其他人 o other
a 所有人
+ 添加 - 删除 = 赋值
change mode 更改模式
chmod whowhatwhich file|directory
who 指 u g o a
what 指 + - =
which 指 r w x
chgrp
修改属组
chown
更改文件或目录的属主或属组
chown 【属组】:【属组】 文件或目录
-R 递归操作
特殊权限
u +s setuid
以拥有文件用户的身份运行,而不是以执行文件用户的身份运行
无影响
g+s setgid
以拥有文件组的身份执行文件
在目录中创建的新文件 其所有者设置为与目录组的所有者相匹配
o+t sticky
无影响
对目录具有写入权限的用户 尽可以删除其所拥有的文件,而无法删除或强制保存到其他用户所拥有的文件
设置特殊权限
用符号表示
setuid = u+s
setgid = g+s
sticky = o +t
用数值表示
setuid =4
setgid=2
sticky=1
例
为dir文件添加 组权限
chmod g+s dir
默认权限
umask 存放在 /etc/profile 和 /etc/bashrc 文件中
系统每个进程都有 umask 他是一个八位进制的掩码,用于清除由该进程创建的新文件和目录的权限
例
umask 为 007
它将清除其他用户的所有权限
新文件默认权限 644 新目录默认权限 755
用户/组操作命令
组
存储在 /etc/group
主要组
每个用户只有一个主要组
通常用户创建的新文件归主要组所有
通常新建用户的主要组是名称与用户相同的新建组,用户是此用户组专用组的唯一成员
补充组
用户可以是零个或多个
用于帮助确保用户具有对系统文件及其他资源的访问权限
管理组
groupadd 创建组
默认使用 /etc/login.defs
-g 用于指定具体的gid
-r 将使用 / etc/login.defs 文件中有效的gid 编号 范围内的gid 创建系统组
groupmod 修改现有的组
-n 选项用于指定新的名称
-g 选项 用于指定新的gid
groupdel 删除组
如果组是任何现有用户的主要组,则它不能被删除
向组中添加用户
gpasswd 选项 组
-a 添加用户
-d 删除用户
-M 设置组的成员列表
-A 设置组的管理员列表
注 除非使用 -A - M 其他不能结合使用
主机名
查看主机名
hostname
临时修改修改主机名
hostname 主机名
永久修改
修改 /etc/hostname
用户
存放用户信息
/etc/passwd
新建用户
useradd 选项 新用户名
若不添加选项 将使用 /etc/login.defs 文件中读取
- c 向 gecos 字段添加值
-g 为用户账户指定主要组
-G 为用户账户指定一组补充组 不与-a 一同使用将覆盖
-a 与-G 搭配使用 将以追加的形式添加补充组
-d 为用户账户指定新的主目录
-s 为用户账户指定新的登录shell
-l 锁定用户账户
-u 解锁用户账户
-M 不创建宿主目录
删除用户
userdel 选项 用户名
user username 将从 /etc/passwd 中删除用户 但保留物理路径
user -r username 同时删除用户和其主目录
修改用户
usermod 选项 用户名
-g 更改用户账户主要组
-aG 追加补充组
查看用户信息
id 用户名
id 查看当前用户信息
passwd
更改当前用户密码
/etc/shadow
格式如下
1 name 登录名称
2 password已加密的密码
3 lastchange 最近一次更改密码的日期
4 minage可以更改密码前的最少天数
5 maxage 必须更改密码前的最多天数
6 warnig密码即将到期的警告期
7 inactive 账户在密码到期后保持活动的天数
8 expire账户到期日期
9 blank 这一字段为预留字段
密码过期
chage 参数 用户
-m 更改密码的最小天数,0表示任何时候都可以就更改
-M 密码保持有效的最大天数
-W 密码到期前多少天提醒
-E 账号到期时间,过了这天 账号不可用
-d 上一次更改的日期
-i 停滞日期
-l 列出当前的设置
root用户可指定用户更改密码 且无视密码规则
root 用户下可指定 用户更改密码 且无视用户原密码
普通用户修改密码长度至少8个字符
切换用户
su 用户名
root 用户下切换 可无视密码
su - username
会上shell 环境设置为如同以该用户身份登录完全一样
su username
仅以该用户身份使用当前环境设置的shell
以root身份运行命令
sudo
sudo 命令可以使用用户根据 /etc/sudoers 文件中的设置,而被允许以root或其他用户身份运行命令
通过 sudo 执行的所有命令都默认为将日志记录到 /var/log/secure 中
uid
普通用的uid 在 1000+
获取帮助信息
使用help帮助
ls --help
man 帮助
man 页数 命令
man 1 passwd
-k 查询包含命令的帮助信息
info pinfo
/usr/share/doc
ls /usr/share/doc/nane-2.3.1
vim /usr/share/doc/nano-2.3.1/install
firefox file:///usr/share/doc
重定向
> file 会覆盖之前内容 可用来清空文件内容
>>file 会追加 到文件后面
2> / 2>> file 标准错误 输出
&> 标准输出 和标准错误会合并输出
/dev/null 可以理解为黑洞 若 重定向到这里 将看不到任何输出
合并输出的另一种
ls a.txt > a1.txt 2>&1
将标准错误输出 接入到1号管道
管道
将前一个命令的输出作为后一个命令的输入
cat /etc/passwd | head -5
命令扩展
vim
命令模式
输入 : 进入末行模式
x 删除单个字符
dd 删除一行
number dd 删除多行
gg 到行首
1G
G 到行尾
数字+G 到达指定行
查找字符串 : / strign
yy 复制
数字+yy
p 向下粘贴
P 向上粘贴
ctrl +k
u 撤销
ctrl + r 回滚
删除光标后的内容 shift + c 会进入插入模式
ctrl + v 进入可视块 可以进行批量操作
x zz 退出
输入模式
进入输入模式
i
在光标前输入
s
替换输入
a
在光标后输入
o
在下一行输入
esc 进入命令模式
末行模式
w : 保存
q: 退出
wq:保存并退出
q! :强制退出
可视模式
基于字符
v
基于行
V
基于块
ctrl + V 启动
搜索
按 / 键从光标处向前搜索,?从当前光标位置向后搜索
enter 跳到第一个匹配项
n 下一个 N 上一个
i 是当前的搜索区分大小写
* 立即向前搜索光标处的单词
替换
g 替换一行中的多个位置
%当前文档的所有行
s 替换当前行的第一个
例
行号
set nu 显示行号
set nonu 取消行号
vim 寄存器
vim 有26个寄存器
批量注释
ctrl+v
shift+i 进入插入模式
在第一行输入#
esc退出
ssh
什么是ssh
openssh secure shell 用于在远程系统上安全运行shell
如果在远程linux 系统上拥有用户账户,则ssh 是通常用来远程登录到该系统的命令
ssh命令也可用于远程系统中运行各个命令
配置 ssh 免密登录
1、生成密钥对
ssh-keygen
2、拷贝公钥到要登录的主机
ssh-copy-id 目标ip
3、测试
ssh 目标ip
创建远程交互
ssh 目标主机ip或(主机名)
若使用 主机名连接
需要在 /etc/hosts 添加
ip地址 与相对应的主机名称
exit 退出程序
以其他身份登陆
ssh 用户名@目标主机ip
通过远程主机执行命令 并返回输出到本地
ssh 用户名@目标主机 命令
-v 选项 用于显示连接过程,可用于排错 可用多个v 增加显示内容详细度
配置与保护ssh
服务端文件 /etc/ssh/sshd_config
修改 端口
Port 22 默认
注 修改端口后访问需关闭防火墙
阻止以root用户登陆
PermiRootLogin no
阻止以密码身份验证登陆
PasswordAuthentication no
需提前配置免密登陆
客户端文件 /etc/ssh/ssh_config
限制ssh登陆
AllowUsers 用户名@IP地址
可使用通配符来限制网段登陆
允许特定的用户或者 ip地址访问
DenyUsers 用户名@ip地址
限制特定的用户或者ip地址访问
使用ssh远程运行命令
ssh [主机名@ip地址] 命令
执行多条命令用;隔开,有些系统在运行多条命令时会只执行第一天,需用 引号 括起来
-t 提供虚拟tty 终端,加上这个参数我们就可以在远程服务器的虚拟终端上输入自己的提权密码。有时命令不能运行时添加此参数也有效
将本地脚本在远程主机上执行
ssh [主机名@ip] < 本地脚本路径
注:如需为脚本传输参数,需在 <号前添加 'bash -s'
例 ssh [主机名@ip] ‘bash -s’ < 脚本 参数
为保证变量被正确解释 输入 -C 参数
执行远程服务器脚本
注:需要被执行脚本的绝对路径
ssh [主机名@ip] "脚本绝对路径 参数"
cut [] [file]
从文件的每一行剪切 字节、字符和字段
如果不知道File参数,cut 命令将读取标准输入,必须指定 -b -c 或 -f 标志之一
参数选择
-b 以字节单位分割
-c 以字符单位分割
-d 自定义分隔符
-f 与-d 一起使用,指定选取 那一列
-n 取消分割多字节字符。仅和 -b 一起使用
awk
是一种处理文本文件的语言,是一个强大的文本分析工具
参数
-F fs or --field-separator fs
指定输入文件的分隔符,fs是一个字符串或者是一个正则表达式
-v var=value or --asign var=value
赋值一个用户定义变量
-f scripfile or --file scriptfile
从脚本文件中读取awk命令
语法
awk [选项参数] ‘script’ var=value file(s)
awk [选项参数] -f scriptfile var=value file(s)
用法一
awk '{[pattern] action}' {filenames}
行匹配语句 awk '' 只能用单引号
log.txt文本内容如下:
2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo
2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo
执行 $awk '{print $1,$4}' log.txt
输出log 中的 第一列 和 第 四列
2 a
3 like
This's
10 orange,apple,mongo
3 like
This's
10 orange,apple,mongo
格式化输出 $awk '{printf "%-8s %-10s\n",$1,$4}'
2 a
3 like
This's
10 orange,apple,mongo
3 like
This's
10 orange,apple,mongo
用法二
awk -F -F相当于内置变量FS,指定分割字符
使用 , 分割
awk -F, '{print $1,$2}' log.txt
太难了 自己看网页吧
https://www.runoob.com/linux/linux-comm-awk.html
tr
从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备
参数
-c 反选设定字符
-d 删除指令字符
-s 缩减连续重复的字符成指定的单个字符
-t 消减 SET1指定范围,使之与SET2设定长度相等
实例
tr a-z A-Z
将小写转换为大写
字符串截取
第一种
#*子字符串
删除从左边开始直到第一个子字符串
##*子字符串
删除从左边开始 直到最后一个子字符串
%*子字符串
删除从右边开始 直到第一个子字符串
%%*子字符串
删除从右边开始 直到最后一个子字符串
实例 ${str#*i}
str = 123i45i6 运行结果 45i6
${#字符串}
可以获得字符串的长度
第二种
:起始位置:总个数
从左边第几个字符开始即截取指定的长度
截取位置不包括起始位置,例如起始为 7,那么将从第八个开始截取
:开始位置
从左边第 n 个位置开始 截取到最后
:0-开始位置:长度
从右边第n个位置开始的 截取指定长度的内容,是截取起始位置右边的内容 包含起始位置
:0-开始位置
从右边开始,截取到最后 包含起始位置
basename
用于打印目录或文件的基本名称
用法1
显示文件名不显示目录
例:basename /home/deng/scott_date.sql
结果: scott_data.sql
用法2
显示文件名,不包含目录,不显示后缀
例:basename /home/deng/scott_data.sql
结果 scott_data
用法3
显示文件名,不显示目录和后缀
-s 指定移除的后缀
basename -s .sql /home/deng/scott_data.sql
结果 scott_data
进程
监控和管理linux 进程
进程是已启动的可执行程序的运行中实例
进程环境
本地和全局变量
当前调度上下文
分配的系统资源
所有进程都是第一个系统进程(system(1) )的后代
每个进程都分配有一个唯一进程 pid
进程状态
运行
r
睡眠
s d k
已停止
t
僵停
z x
列出进程
ps
aux
显示所有包含其他使用者的行程
-ef 显示所有进程
-e 显示所有进程
-f 全格式
pstree
查看进程树
-p 显示 pid
top
实时更新进程
显示内容
进程id
用户名称
虚拟内存
常驻内存
进程状态
d 不可中断睡眠
r 运行中或可运行
s 睡眠中
t 已停止或以跟踪
z 僵停
cpu时间
进程命令名称
q 退出
负载平衡
uptime
查看当前系统负载情况
在后台运行作业
jobs
查看会话
jobs [-lnprs] [任务声明 ...] 或 jobs -x 命令 [参数]
- l
-p 列出进程号
fg %(job number) 将后台作业带到前台
ctrl + z 将命令放入后台 并暂停
ps j 显示作业信息
bg + 作业id 重新启动进程
信号控制进程
kill 选项 pid
kill命令用来删除执行中的程序或工作
选项
-u 指定用户
-l 列出所有信号的名称
-p 指定kill
信号
15 默认 term 终止 导致程序终止
9 kill 强制终止,无法忽视,其他信号可被忽视
18 cont 继续 发送至进程使其恢复(若已停止)无法拦截
1 hup 终端短信
2 int 中断 同 ctrl +c
3 quit 退出 同 ctrl + \
killall 选项 进程名
killall 通过进程名来杀死进程
选项
-e 对长名称进行精确匹配
-l 忽略大小写的不同
-p 杀死进程所属的进程组
-i 交互式杀死进程
-u 杀死指定用户的进程
pkill 命令 与 killall 相似
可包含以下条件组合
uid 由某一linux 账户拥有的进程
gid 某一组拥有的进程
父级 特定父进程的子进程
终端 运行于特定控制终端的进程
以管理员身份注销账户
w
显示目前登入系统的用户信息
选项
-f 开启或关闭显示用户从何处登入系统
-s 使用简介的格式列表
监控进程活动
负载平均值
负载数是默认每5秒一次的计算例程,它累计所有cpu的活动请求数并计算出一个平均值
负载平均值 分为 1分钟 五分钟 和十五分钟 内系统活动数据的是哪个显示值的平均值
将负载平均值 除以系统中的逻辑cpu数,值低于1 表示资源利用率较好,值高于1表示资源饱和
空闲cpu队列的负载数为0
实时监控进程
top
详情 看 列出进程
识别自动启动的系统进程
systemd 简介
系统启动和服务器进程由 systemd 系统和服务管理器进行管理
守护进程是在执行各种任务的后台等待或运行进程,一般情况下在系统启动时自动启动并持续运行至关机或被手动停止
按照惯例 许多守护进程名称以字母 d 结尾
守护进程
daemon
套接字
socket (ip/端口)
扩展名 .soket
为了侦听连接,守护进程使用套接字
这是本地或远程客户端的主要通信通道
套接字可能由守护进程创建,或者可能从守护进程隔开并通过另一个进程创建
单元
unit
服务单元
扩展名 .service
代表系统服务
路径单元
扩展名 .path
列出单元类型
systemctl -t help
systemd 提供的几项新功能
并行化功能
按需启动守护进程
自动服务依赖关系管理
利用 linux 控制组一起追踪相关进程的方式
systemctl
systemctl 命令用于管理各种类型的 systemd 对象,他们被称为单元
命令摘要
status UNIT
查看有关单元状态的详细信息
-l 可列出更详细的内容
stop UNIT
在运行中的系统上停止一项服务
start UNIT
在运行中的系统上重新启动一服务
reload UNIT
重新加载某个运行中服务的配置文件
mask UNIT
彻底禁用服务,使其无法再系统启动时启动
unmask UNIT
使屏蔽的服务变为可用
enable UNIT
将服务配置为在系统启动时启动
is -enabled 可查看服务是否开机自启
list-dependencies UNIT
列出指定单元需要的单元
服务状态
状态输出表示服务状态的关键字
Loaded
单元配置文件已处理
Activer(running)
正在通过一个或多个 持续进程运行
Active(exited)
已成功完成一次性配置
Active(waiting)
运行中,但正在等待事件
Inacctive
不在运行
Enabled
将在系统启动时启动
Disabled
不会再系统启动时启动
Static
无法启动,但可以由某一启动用的单元自动启动
验证命令状态
systemctl enable sshd.serveice
设置
systemctl is-enabled sshd.service
查看
屏蔽服务
有时,系统中可能安装了相互冲突的服务
为防止管理员意外启动某一服务,可以屏蔽服务。
屏蔽将在配置目录中创建连接,使得启动该服务也不会发生什么
例
systemctl mask networ
它会将 network 的启动文件更改为 /dev/null
systemctl unmask network
移除上一步操作做的连接
日志
分析和存储日志
系统日志存储在 /var/log 目录中
系统文件概述
/var/log/messages
大多数系统日志消息都在此处
/var/log/sercure
安全和身份验证相关的消息和错误的日志文件
/var/log/maillog
与邮件服务的相关消息的日志文件
/var/log/cron
与定期执行任务相关的日志文件
/var/log/boot.log
与系统启动相关的消息记录在此处
消息的优先级
编码
优先级
严重性
0
emerg
系统不可用
1
alert
必须立即采取措施
2
crit
严重状况
3
err
非严重错误状况
4
warnign
警告状况
5
notice
正常但重要的事件
6
info
信息性事件
7
bebug
调试级别消息
systemd-journald
/var/log 目录保管由 rsyslog 维护的各种特定于系统和服务的日志文件。
它将这些消息写入到一个结构化事件日志中,默认情况下不在重新启动之间保留
这运行系统日志所错过的的系统日志消息和事件收集到一个中央数据库中。
系统日志消息也可由 systemd-journald 转发到 rsyslog 以做进一步处理。
rsyslog服务
用于接收 systemd -journald 所记录的日志
根据类型和优先级排列系统日志消息,将他们写入到/var/log 目录内的文件中
/var/log 目录保管由 rsyslog 维护的各种特定于系统和服务的日志文件
通过 /etc/rsyslog.conf 文件,以及 /etc/rsyslog.d 中 *.conf 文件进行配置
程序管理员可以将带有 .conf 后缀的自定义文件放入 /etc/rsyslog.d 目录,以更改 rsyslogd 配置 而不被rsyslogd 更新覆盖
日志文件轮转
日志通过 logrotate 实用工具“轮转”
防止他们将 /var/log 的文件系统填满
轮转日志文件时,会将员文件重命名(名称+轮转日期)然后创建新日志文件,通常在 四周后丢弃
Cron 作业每日运行一次 logrotate 程序,以查看是否有日志需要轮转,大多数日志每周轮转一次
或者当文件达到特定大小时
分析系统日志条目
一条记录格式为
1 记录该日志条目的时间戳
2 发送该日志消息的住居
3 发送该日志消息的程序或进程
4 发送的实际消息
使用logger发送系统日志消息
logger命令可以发送消息到 rsyslog 服务。默认情况下,他将严重性为 notice 的消息发送给设备用户
除非通过 -p 选项 另外的指定。 测试对 rsyslog 配置的更改将特别有用
若要向syslogd 发送消息并记录在 /var/log/boot.log 日志文件中,可执行
Logger -p local7.notice "Log entry created on serverX"
查看systemd 日志条目
通过 journalctl 查找事件
systemd 日志将日志数据存储在带有索引化结构的二进制文件中。
systemd 日志默认存储在 /run/log 中 ,去内容会在重启后予以清楚
以root身份运行时,journalctl 命令从最旧的条目开始显示完整的系统日志
journalctl名 以粗体文本突出显示优先级为 notice 或 warning 的消息,以红色文本突出显示优先级为 error 和更高的消息
journalctl
journalctl -n
默认显示10个
journalctl -p
可接受已知优先级的名称或编号作为参数,显示所有指定级别及更高级别的条目
例:仅列出优先级为 err 或以上的日志条目
journalctl -p err
journalctl -f
与 tail-f 相似 输出日志的最后10行,并在新日志条目写入到日志中时继续输出他们。
输出日志
journalctl 有两个选项,限制为特定的时间范围,分别是 --since 和 --until
since:从什么时候开始
until:到什么时候结束
两个选项都接受格式为 yyyy-mm-dd hh:mm:ss 时间参数 如果省略日期,会假定为当天,省略时间 假定为 00:00:00
除了 日期和时间字段外 还接受 yesterday today tomorrow 作为有效参数
例
journalctl --since "2014-02-10 20:30:00" --until "2014-02-13 12:00:00"
输出 2014年 2月10日 20:30:00 到 2014年2月13日12:00:00 的日志条目
journalctl -o verbose
_comm
命令的名称
_exe
进程的可执行文件的路径
_pid
进程的pid
_uid
运行该进程的用户的UID
_systemd_unit
启动该进程的 systemd 单元
保存systemd 日志
永久存储系统日志
默认情况下,systemd 日志保存在 /run/log/journal 中,这意味这系统重启时他会被清除。
如果存在 /var/log/journal 目录,该日志会改为记录在这个目录中,这样该日志就不会被开机清楚但也不会永久保留
该日志具有一个内置的日志轮转机制,每个月触发,或者当日志文件超过所处文件系统的10%,也不能造成文件系统的可用空间低于15%。
这些值可在 /etc/systemd/journald.conf 中调节
配置 永久存储系统日志
以root用户身份创建 /var/log/journal 目录
mkdir /var/log/journal
确保 此目录由 root 用户和组 systemd-journal 所有 并且具有 2755 权限
chown root:systemd-journal /var/log/journal
chmod 2755 /var/log/journal
重启系统或者 以root 用户身份发送特殊信号 USR1到 systemd-journald 进程
killall -USR1 systemd-journald
当配置完成是 可通过 journalctl -b 来查看系统日志消息
journalctl -b -1
将输出限制为上一次启动
时间同步
Timedatectl
显示当前时间配置信息
timedatectl list-timezones
列出时区
timedatectl set - time yyyy-mm-dd hh:mm:ss Africa/Abidjan
更改当前时间或日期
更改时区
其中可以省略日期或时间
需关闭时间同步
配置和监控 chronyd
Chronyd 服务通过与配置的NTP服务同步,使本地硬件时钟保持准确
该值保存在 /etc/chrony.conf 配置文件中指定的 driftfile 中
默认情况下 chronyd 使用 NPT Pool project 的服务器同步时间,当涉及计算机位于孤立网络中时,需要功能更改NTP服务器
如何将chronyd服务器与 classroom.example.com 同步
删除其他服务器条目,将他们替换为 server classroo.examole.com iburst
重启 该服务
systmectl restart chronyd
解压缩
tar 压缩解压命令
-c 建立压缩档案
-x 解压
-t 查看内容
注:这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。
-z 有gzip属性的 压缩后扩展名为 gz
-j 有bzip2属性压缩后扩展名为 bz2
-J 有xz属性的
-v 显示所有过程
-p 在提取存档时保留文件和目录权限
-P 在压缩时保留根目录
-f 使用档案名 注 这个参数是最后一个参数,后面只能接档案名
-C 指定到解压到什么目录
注 -C 后需要指定目录
正则表达式
基本正则表达式
grep
egrep
vi
sed
awk
字符
.
匹配任意单个字符
*
匹配前一个字符出现零次或多次
.*
匹配任意字符
[]
匹配集合中的任意单个字符,括号中为一个集合
^
匹配字符串的开头
$
匹配字符串的结尾
\
匹配转义后的字符
\{n,m\}
匹配前一个字符重复n 到 m 次
\{n,\}
匹配前一个字符至少重复n次
\{n\}
匹配前一个字符重复 n 次
\(\)
将\(与\)之间的内容存储在保留空间,最大存储9个
\n
通过 \1至\9调用保留空间中的内容
扩展正则表达式
egrep
awk
字符
{n,m}
等同于基本正则表达式 \{n,m\}
+
匹配前一个字符出现一次或多次
?
匹配前一个字符出现 零次或一次
|
匹配逻辑或者,即 匹配 | 前或后的字串
()
匹配正则集合
grep命令与正则表达式
grep命令
-a 将 binary 档案以text档案的方式搜寻数据
-c 计算找到“搜寻字符串”的次数
-i 忽略大小写的不同,所以大小写视为相同
-n 输出行号
-v 反向选择
计划将来的linux 任务
at计划一次性任务
at是个系统守护进程(atd),它有一组命令行工具可与守护进程进行交互
atd守护进程提供了 a 到 z 26个队列,队列越后,系统优先级越低。
计划作业
at <timespec>
可以使用来自脚本文件(例 at now + 5 min < myscript)的输入重定向 Ctrl+d 结束
timespec
now + min
hours
days
weeks
today
tomorrow
AM
上午
pm
下午
MMDDYY
MM/DD/YY
MM.DD.YY
atq
查看计划作业
内容详解
1、作业编号
2、作业计划的日期和时间
3、作业所在队列
4、作业所有者
cron计划周期性作业
作业格式
各个作业都包含六个字段
分
时
几号
月
周
命令
前五个命令的语法规则
* 表示始终
数字用于指定分钟或小时 日期 或工作日
0和7 都表示星期日
x-y 表示范围 从 x 到y (含)
x,y 表示列表,例 5,7 表示每小时的5分钟,7分钟运行
*/x 表示x时间的间隔,例 */6 每六分钟运行一次作业
此外可以使用三个字符的英文缩写来表示月份和工作日
如果命令包含未转义的% 则该符号被当做新行,且符号之后的所有内容将反馈到 stdin 中
配置文件
/etc/crontab 存放系统的周期作业
/etc/cron.d 存放个人的周期作业
/var/spool/cron/用户名 存放对应的用户的周期作业
/etc/cron.daily/
每日执行的
/etc/cron.weekly
每周执行的
/etc/cron.monthly
每月执行的
crontab
crontab -l 列出当前用户的计划任务
crontab -r 删除当前用户的所有计划任务
crontab -e 编辑当前用户的计划任务
实际是编辑 /var/spool/cron/用户名
crontab <filename> 删除所有作业 ,并替换为从<filename>读取的作业,若位置的文件 ,则使用 stdin
管理临时文件
所有配置文件以 .conf 结尾
配置文件格式
文件格式如下
类型,路径,权限,属主,属组,寿命,[参数]
创建或删除
systemd-tmpfiles --create --remove --clean
例: systemd-tmpfiles --create /usr/lib/tmpfiles.d/*
systemd-tmpfiles --clean /usr/lib/tmpfile.d/*
systemd-tmpfiles --remove /usr/lib/tmpfile/*
配置文件优先级:从上往下
注:若有同名配置文件 则将根据所属目录来选择哪个生效, 例 若 etc 下和run下有同名配置文件,将 生效 etc下的配置文件
/etc/tmpfiles.d/*.conf
此目录下的文件旨在供管理员配置自定义临时位置,一节覆盖供应商提供的默认值
/run/tmpfiles.d/*.conf
此目录下的文件本身是易失性文件,通常由守护进程用来管理自己的运行时的临时文件
/usr/lib/tmpfiles.d/*.conf
此目录中 的文件是由相关RPM软件包提供,不应由管理员进行编辑
管理linux进程的优先级
相对优先级
优先级称为进程的nice值,一个进程可以由正好40中不同级别的nice值
范围是-20 到 19 默认情况下,进程将继承其父进程的nice级别,通常为0
级别越高,表示优先级越低(该进程将其cpu的使用量让给其他进程)
nice级别和权限
仅允许 root 用户设置为 负nice 级别以及降低现有进程的nice级别
普通非特权用户仅允许设置正的nice级别,此外,他们只能对现有进程提示nice级别,而不能降低nice级别
报告nice级别
top显示nice 级别
ni
表示实际的nice级别
PR
将nice级别显示为映射到更大优先级队列
-20 映射到0 ,+19映射到39
ps
ps axo pid,comm,nice | grep 进程名
显示对应进程 的 pid 进程名 nice级别 并按 Nice 级别降序排列
启动具有不同nice级别的进程
在大多数情况下 nice级别为0
nice <COMMAND> 启动nice级别为10
-n 可以指定级别启动
renice -n COMMAND
可以更改启动程序的级别
注 只有root 用户才可以指定级别为 负
访问控制权限列表 ACL
ACL 允许向文件分配细化权限
ls -l 命令仅输出最少的ACL设置详细信息
.(点)变成+时代表此文件有相关联的ACL设置
对用户、组和其他的 rwx 标志解释
用户:显示用户的ACL设置,其与标准的用户文件设置相同
组:显示当前的ACL 掩码设置,而不是组所有者设置
其他:显示其他ACL设置,其与标准的其他文件设置相同
注:如果用 chmod 更改具有ACL的文件的组权限,则不会更改组所有者权限,而是更改ACL掩码
设置与查看ACL
更改ACL
setfacl 参数 指定修改项:用户名或UID:权限 file
参数
-m 更改文件的访问控制列表
-M 从文件读取访问控制列表条目更改
-x 根据文件中访问控制列表移除条目
-X 从文件读取访问控制列表
-b 删除所有扩展访问控制列表
子主题
--set 或 --set-file 选项 用来完全替换文件的ACL设置
首次定义ACL时,系统会为当前文件添加默认值,也会计算并添加新掩码值
修改项
u 用户
g 组
o 其他人 注 o 不添加 用户名或UID
m 掩码
权限
注 权限 X 表示,只为目录设置执行权限而不为文件设置执行权限
查看ACL
getfacl 文件名
管理SELINUX 安全性
启用和监控SELinux
基本概念
SELinux 是一个额外的系统安全层 配置文件 /etc/selinux/config
SELinux的主要目标是防止已遭泄露的系统服务访问用户数据
标准的用户/组/其他权限安全模型,被称为 自由访问控制(DAC)
SELinux 提供另一层安全,它基于对象并由更加复杂的规则控制,称为强制访问控制(MAC)
SELinux 通过上下文(又名安全标签)确定哪个进程可以访问那些文件、目录和端口
除非显式规则授权,否则,在默认情况下,策略不允许任何交互。如果没有允许规则,则不允许访问
上下文(安全标签)
概述
通常 文件父目录的上下文决定了该文件的初始上下文
格式
身份识别
root 表示root账号身份
system_u 表示系统程序方面的识别,通常就是程序
user_u 代表的是一般使用账号相关的身份
角色
object_r 代表是文件或目录等文件资源
system_r 代表的是程序
类型
type 在档案资源上面称为类型
domain 在主题程序则称为领域
敏感度
分0-15级,s0最低,target策略默认使用s0
查看
ls /ps -Z
更改文件的上下文
chcon
将文件的上下文更改成已指定为该命令参数的上下文。
此命令 更改不会持久,不建议使用
-R 递归的重置上下文
-t 只改类型
例 chcon 上下文 文件
restorecon
不会明确指定上下文,它使用SELinux策略中的规则来确定应该是哪种文件上下文
-R 递归的重置上下文
restorecon 还原默认上下文
例 restorecon -R /var/www/html
默认文件上下文规则
semanage fcontext
用于显示或修改
restorecon
用来设置默认文件上下文的规则
它使用扩展正则表达式来指定路径和文件名
常用的正则表达式 (/.*)? /代表下级目录 .* 代表 任意多个字符 ?代表0次或一次 ()代表整体 总的表示 下级有一个或0个任意文件或目录
SELinux 模式
强制模式(enforcing)
主动拒绝访问尝试读取类型上下文为tmp_t 的文件的web服务器。在强制模式中,SELinux 不禁记录而且提供保护
宽松模式(permissive)
即使没有显示规则,SELinux 也会运行所有交互,而且会记录它在强制模式中拒绝的那些交互
禁用模式(disabled)
完全禁用 SELinux、需要重新启动系统才能彻底禁用SELinux.
查看当前模式
getenforce
更改当前模式
setenforce enforcing/permissive /0 /1
注:这是临时修改
0代表 宽松模式 1代表强制模式
设置默认SELinux 模式
配置 /etc/selinux/config
注:该文件包含一些有用的注释
更改此行将修改默认模式 SELINUX=enforcing(默认)
SELinux 布尔值 off/on
概述
SELinux 布尔值是更改 SELinux策略行为的开关
查看布尔值
getsebool
-a 列出所有的布尔值
semanage boolean
-l 显示布尔值是否为永久值,并提供该布尔值的简短描述
-C 列出与默认值不同的任何设置
更改布尔值
setsebool
-P 永久修改
例 setsebool 名称 on 或off
SELinux 进行故障排除
restorecon
将会更正 使用不正确的文件上下文
sealert
-l Local id
查看id 所对应的故障
-b 显示图形界面(默认)
setroubleshootd在 /var/log/messages 中生成日志消息
收藏
0 条评论
下一页