admin 管理员组文章数量: 887017
笔记
文章目录
- 笔记
- 1.linux系统优化、linux介绍
- 2.linux发展史
- 3.linux发现版本
- 4.虚拟机介绍
- 5.虚拟机软件
- 6.系统网络优化
- 7.linux系统优化 步骤
- 7.1修改系统下载源
- shell
- 什么是shell:链接Linux的桥梁 是一个应用程序 是一个解释器最常用的bash和sh
- shell的种类
- 。Liunx中的一些特殊路径
- bash解析器中的快捷键
- history
- 修改主机名
- # 方式一:
- #方式二:
- 查看系统IP
- 系统时间
- 格式化时间
- 设置时间
- 同步互联网时间
- 系统硬件时钟
- 系统软件时钟
- 获取硬件时间
- 将硬件时间同步到系统时间
- 查看时区状态
- 系统时间
- #格式化时间
- #设置时间
- #同步互联网时间
- #系统硬件时钟
- #系统软件时钟
- 重启和关机机器
- 目录结构
- 文件管理
- 创建文件
- 文件查询
- 绝对路径:从根路径到目标路径
- 相对路径:从当前位置到目标文件
- 关机
- shell 快捷键
- 时间
- 基础命令
- 移动文件
- 删除
- 获取命令的帮助信息
- find文件查找
- find命令介绍
- find指令
- 根据名称查找一个文件
- 根据文件大小查找
- 按照时间进行查找
- 按照属性查找(-type)
- 所属组查询
- -print :打印结果集
- -ls : 打印结果集详情
- -delete : 删除结果集
- -exec : 对结果集进行下一步处理
- -ok : 对结果集进行下一步处理(交互)
- find和xargs命令配合
- 上传于下载
- 从互联网上下载
- wget
- curl
- curl 与 wget的区别
- 从服务器上上传下载文件到本地
- 字符处理命令
- sort命令
- uniq
- cut
- tr
- WC
- 打包和压缩
- zip
- zip压缩一个文件
- zip压缩文件夹
- zip的静默输出
- zip解压命令(unzip)
- tar
- gzip
- gzip压缩一个目录
- gzip解压(-d)
- bzip2
- bzip2解压(-d)
- tar
- 用户管理
- linux中用户介绍
- 手动创建用户
- 用户与组相关的文件
- 修改用户信息(usermod)
- 密码(passwd)
- 用户组
- 创建组
- 修改组
- 删除组
- 组成员管理
- 文件的输入与输出
- 追加和覆盖
- 文件权限
- 权限的设置
- 权限对⽂件or⽬录的意义
- 探讨权限对目录下文件可读的影响
- 探讨权限对目录下文件可编辑的影响
- 探讨权限对目录下的文件的可执行的影响
- SUDO
- SU
- ⽂件权限管理四:ACL
- acl权限归属
- mask
- default 继承
- 软件包rpm
- yum
- yum仓库
- yum网络仓库同步到本地仓库 并且把yum源共享给另外一台机
- 简便方法:一
- 简便方法:二
- 简便方法:二
- 源码包安装
- 进程
- ps 查看进程
- top(动态查看)
- top快捷键
- top的参数
- 设置进程的nice值(优先级)
- Linux系统信号
- netstat(查看网络状态)
- proc文件系统
- 管道
- 管道之tee
- 分区
- 使用文件系统的流程
- MBR分区
- GPT分区
- 硬盘自动挂载
- 制作SWAP分区
- dd命令
- 模拟文件系统出问题
- 文件系统的备份与恢复
- LVM
- 动态扩容
- 动态缩容
- 快照
- 计划任务
- Crontab表达式
- 系统级别的计划任务
- 用户级别的计划任务
- crontab语法
- 编写脚本
- 思路
- 系统优化
- yum源处理与常用软件包安装
- ssh密钥
- 添加hosts⽂件实现集群主机之间相互⽤主机名解析
- 配置ntp服务,同步系统时间
1.linux系统优化、linux介绍
主要介绍企业中常用的服务器操作系统
-
什么是Linux?
类似于windows,是一个服务器上使用的操作系统,Linux支持多用户,多进程,多CPU,多任务等能,而且Linux是开源的,支持嵌入式等。
2.linux发展史
1969年,美国贝尔实验室开发,Unix
- 优点:性能好
- 缺点:消耗资源大
1987年,谭宁邦开发微内核unix,主要用来教学
1991年,芬兰 林纳斯-托瓦丝 在大学期间基于unix微内核开发了第一款Linux内核,并且开源,并且很快加入FSF基金会,
3.linux发现版本
- RedHat/CentOS
- Ubuntu
- Debian
4.虚拟机介绍
网络类型
-
仅主机
只能跟宿主主机进行连接
-
桥接
共享宿主主机网卡,跟宿主主机处于同一个局域网
-
NAT
使用自己的虚拟网卡,有自己的一套网络
5.虚拟机软件
一般用来虚拟化一台主机的
- 虚拟机软件分类
- vmware workstation(个人使用,或者开发者使用)
- KVM一般用在云服务平台上
- ESXI部署在物理主机上
安装linux系统、连接x-shell
6.系统网络优化
- 解决网络下载软件慢的问题
- 解决系统软件升级的问题
- 安装一些常用的计算机软件
- 关闭一些不必要软件
- 防火墙
- selinux
7.linux系统优化 步骤
7.1修改系统下载源
https://developer.aliyun/mirror/
# 第一步:备份原来源
mkdir /etc/yum.repos.d/backup/
mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/backup/
# 第二步:下载新的源
cd /etc/yum.repos.d
[root@localhost yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun/repo/Centos-7.repo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2523 100 2523 0 0 235 0 0:00:10 0:00:10 --:--:-- 601
[root@localhost yum.repos.d]# ls -l
total 4
drwxr-xr-x. 2 root root 187 Mar 3 16:14 backup
-rw-r--r--. 1 root root 2523 Mar 3 16:16 CentOS-Base.repo
# 第三步:生成新的源的缓存
[root@localhost yum.repos.d]# yum makecache
Loaded plugins: fastestmirror
Determining fastest mirrors
* base: mirrors.aliyun
* extras: mirrors.aliyun
* updates: mirrors.aliyun
# 第四步:更新系统
[root@localhost yum.repos.d]# yum update -y
# 第五步:安装常用的计算机软件
[root@localhost yum.repos.d]# yum install vim lrzsz net-tools tree -y
# 第六步:关闭防火墙和Selinux
[root@localhost ~]# systemctl disable --now firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
# 第七步:拍摄快照
shell
什么是shell:链接Linux的桥梁 是一个应用程序 是一个解释器最常用的bash和sh
。什么是软件?
。 什么是进程?
shell的种类
。bash
是自由软件基金会(GNU)开发的一个shell,它是liunx系统中一个默认的shell。Bash不但与Bourneshell兼容,还继承C shell,K欧润shell等优点
。sh
BourneShell(sh):是由AT&Bell实验室的Steven Bourne为AT&Unix开发的,它是Unix的默认Shell,也是其他Shell的开发基础。Bourne Shell在编程方面相当优秀,但在处理与用户的交互方面不如其他几种 Shell。
。zsh
。ash
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BDjAuctJ-1617772434059)(file://\192.168.13.93\linux12期\基础部分\day03\笔记\assets\image-20210304114721972.png?lastModify=1614927648)]
。Liunx中的一些特殊路径
- : 上一步
~ :
# 创建一个用户
[root@localhost ~]# useradd oldboy
# 切换用户
[root@localhost ~]# su - oldboy
bash解析器中的快捷键
```bash
Ctrl + C : 终止当前命令的操作
ctrl + d : 退出,相当于exit
ctrl + z : 杀死当前进程
ctrl + l : 清屏
ctrl + a : 跳转到行首
ctrl + e : 跳转到行尾
ctrl + r : 搜索历史
esc(alt) + . : 上一条命令最后一个参数
!$ 也是获取上一条命令最后一个参数
```
history
查看系统执行的命令历史。
# 家目录下.bash_histroy文件是保存执行命令历史的文件。
# 清空文件:>.bash_histroy
[root@localhost ~]# >.bash_history
[root@localhost ~]# cat .bash_history
[root@localhost ~]#
修改主机名
# 方式一:
[root@local-work ~]# hostnamectl set-hostname local-work
# 需要重新登录或者执行一个解析器
#方式二:
[root@local-work ~]# echo "string" > /etc/hostname
[root@local-work ~]# cat /etc/hostname
string
#直接修改文件,不会立即生效,需要重启。
查看系统IP
#方式1:
[root@string ~]# ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:20:7e:96 brd ff:ff:ff:ff:ff:ff
inet 192.168.15.100/24 brd 192.168.15.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::962c:f186:8d31:5eec/64 scope link noprefixroute
valid_lft forever preferred_lft forever
#方式2:
[root@string ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.15.100 netmask 255.255.255.0 broadcast 192.168.15.255
inet6 fe80::962c:f186:8d31:5eec prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:20:7e:96 txqueuelen 1000 (Ethernet)
RX packets 119 bytes 11208 (10.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 102 bytes 14496 (14.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#查看某一个网卡的信息
[root@string ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.15.100 netmask 255.255.255.0 broadcast 192.168.15.255
inet6 fe80::962c:f186:8d31:5eec prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:20:7e:96 txqueuelen 1000 (Ethernet)
RX packets 119 bytes 11208 (10.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 102 bytes 14496 (14.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
系统时间
[root@string ~]# date
Fri Mar 5 09:50:27 CST 2021
[root@string ~]# date +%Y-%m-%d
2021-03-05
格式化时间
[root@string ~]# # 09:58:30
[root@string ~]# date +%H:%M:%S
10:01:44
[root@string ~]# date +%Y-%m-%d_%H:%M:%S
2021-03-05_10:02:05
设置时间
###### [root@string ~]# date -s "2029-03-05 10:02:44"
Mon Mar 5 10:02:44 CST 2029
[root@string ~]# date +%Y-%m-%d_%H:%M:%S
2029-03-05_10:03:03
同步互联网时间
[root@string ~]# yum install -y ntpdate
[root@string ~]# ntpdate ntp.aliyun
系统硬件时钟
[root@string ~]# hwclock -r
Fri 05 Mar 2021 10:10:40 AM CST -0.271305 seconds
系统软件时钟
[root@string ~]# date
Mon Mar 5 10:03:30 CST 2029
获取硬件时间
[root@string ~]# hwclock -r
Fri 05 Mar 2021 10:13:19 AM CST -0.473926 seconds
将硬件时间同步到系统时间
[root@string ~]# hwclock -r
Fri 05 Mar 2021 10:13:19 AM CST -0.473926 seconds
[root@string ~]# date
Mon Mar 5 10:06:20 CST 2029
[root@string ~]# hwclock -s
[root@string ~]# date
Fri Mar 5 10:14:19 CST 2021
查看时区状态
[root@string ~]# timedatectl status
Local time: Fri 2021-03-05 10:26:39 CST
Universal time: Fri 2021-03-05 02:26:39 UTC
RTC time: Fri 2021-03-05 02:26:33
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
系统时间
[root@string ~]# date
Fri Mar 5 09:50:27 CST 2021
[root@string ~]# date +%Y-%m-%d
2021-03-05
#格式化时间
[root@string ~]# # 09:58:30
[root@string ~]# date +%H:%M:%S
10:01:44
[root@string ~]# date +%Y-%m-%d_%H:%M:%S
2021-03-05_10:02:05
#设置时间
[root@string ~]# date -s "2029-03-05 10:02:44"
Mon Mar 5 10:02:44 CST 2029
[root@string ~]# date +%Y-%m-%d_%H:%M:%S
2029-03-05_10:03:03
#同步互联网时间
[root@string ~]# yum install -y ntpdate
[root@string ~]# ntpdate ntp.aliyun
#系统硬件时钟
[root@string ~]# hwclock -r
Fri 05 Mar 2021 10:10:40 AM CST -0.271305 seconds
#系统软件时钟
[root@string ~]# date
Mon Mar 5 10:03:30 CST 2029
# 获取硬件时间
[root@string ~]# hwclock -r
Fri 05 Mar 2021 10:13:19 AM CST -0.473926 seconds
# 将硬件时间同步到系统时间
[root@string ~]# hwclock -r
Fri 05 Mar 2021 10:13:19 AM CST -0.473926 seconds
[root@string ~]# date
Mon Mar 5 10:06:20 CST 2029
[root@string ~]# hwclock -s
[root@string ~]# date
Fri Mar 5 10:14:19 CST 2021
# 查看时区状态
[root@string ~]# timedatectl status
Local time: Fri 2021-03-05 10:26:39 CST
Universal time: Fri 2021-03-05 02:26:39 UTC
RTC time: Fri 2021-03-05 02:26:33
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
# 设置时区
[root@string ~]# timedatectl set-timezone Asia/Shanghai
重启和关机机器
[root@string ~]# reboot
[root@string ~]# init 6
[root@string ~]# shutdown -r 0
[root@string ~]# halt
# 重启
reboot
# 关机
shutdown -h 0
目录结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JLAay3dB-1617772434067)(file://\192.168.13.93\linux12期\基础部分\day04\笔记\assets\image-20210305110444128.png?lastModify=1614926955)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dftatG9E-1617772434068)(file://\192.168.13.93\linux12期\基础部分\day04\笔记\assets\image-20210305110744377.png?lastModify=1614926975)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BtCCIGd8-1617772434070)(file://\192.168.13.93\linux12期\基础部分\day04\笔记\assets\image-20210305110839136.png?lastModify=1614926989)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xWwcIQ4X-1617772434071)(file://\192.168.13.93\linux12期\基础部分\day04\笔记\assets\image-20210305110938363.png?lastModify=1614926999)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YBT2qiKt-1617772434072)(file://\192.168.13.93\linux12期\基础部分\day04\笔记\assets\image-20210305111053112.png?lastModify=1614927005)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E1L0IoU3-1617772434072)(file://\192.168.13.93\linux12期\基础部分\day04\笔记\assets\image-20210305111245291.png?lastModify=1614927023)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-51Uu0cEp-1617772434073)(file://\192.168.13.93\linux12期\基础部分\day04\笔记\assets\image-20210305111553973.png?lastModify=1614927031)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-slDdFaTC-1617772434073)(file://\192.168.13.93\linux12期\基础部分\day04\笔记\assets\image-20210305114431177.png?lastModify=1614927041)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-go1Jq1VE-1617772434074)(file://\192.168.13.93\linux12期\基础部分\day04\笔记\assets\image-20210305114609772.png?lastModify=1614927053)]
文件管理
- 创建
- 查询
- 修改
- 删除
- 移动
- 权限
创建文件
-
目录(mkdir)
-
格式:mkdir [参数] [目录路径]
[root@string /]# mkdir dir [root@string /]# ls -l total 20 drwxr-xr-x 2 root root 6 Mar 5 12:18 dir
参数:
-p : 当上级目录不存在时,自动创建上级目录。一般称之为:递归创建
[root@string ~]# mkdir -p abc/bcd/cde/def [root@string ~]# tree abc/ abc/ └── bcd └── cde └── def
-v : 打印出整个目录的创建过程
```bash
-
[root@string ~]# mkdir -pv one/two/treee/four
mkdir: created directory ‘one/two’
mkdir: created directory ‘one/two/treee’
mkdir: created directory ‘one/two/treee/four’
```
-m : 设置创建文件夹的权限
。文件(touch)
。格式:touch [参数] [文件路径]
# 创建单个文件
[root@string test]# touch 1.txt
[root@string test]# ls
1.txt
# 创建多个文件
[root@string test]# touch 3.txt 2.txt
[root@string test]# ls
1.txt 2.txt 3.txt
# 匹配创建多个文件
[root@string test]# touch {a..z}.txt
[root@string test]# ls
1.txt 3.txt b.txt d.txt f.txt h.txt j.txt l.txt n.txt p.txt r.txt t.txt v.txt x.txt z.txt
2.txt a.txt c.txt e.txt g.txt i.txt k.txt m.txt o.txt q.txt s.txt u.txt w.txt y.txt
[root@string ~]# touch {abc,bcd,fgh}.txt
[root@string ~]# ls
abc.txt bcd.txt fgh.txt
文件查询
查看文件夹内有哪些文件(ls)
。格式:ls [参数] [路径]
[root@string ~]# ls
abc abc.txt {a...c}.txt bcd.txt dir fgh.txt one test 系统优化.md
。参数:
-a : 查看隐藏文件
[root@string ~]# ls -a
. abc {a...c}.txt .bash_logout .bashrc .cshrc fgh.txt one .ssh test 系统优化.md
.. abc.txt .bash_history .bash_profile bcd.txt dir
-l : 显示文件详情
[root@string ~]# ls -l
total 8
drwxr-xr-x 3 root root 17 Mar 5 12:21 abc
-rw-r--r-- 1 root root 0 Mar 5 12:35 abc.txt
-rw-r--r-- 1 root root 0 Mar 5 12:35 {a...c}.txt
-rw-r--r-- 1 root root 0 Mar 5 12:35 bcd.txt
# 说明
- : 普通文件
d : 目录文件
l : 链接文件
s : 套接字文件
c : 设备文件
b : 设备文件
p : 管道文件
-i : 打印文件的索引号
[root@string ~]# ls -il
total 8
17307582 drwxr-xr-x 3 root root 17 Mar 5 12:21 abc
33574993 -rw-r--r-- 1 root root 0 Mar 5 12:35 abc.txt
-h : 显示可读文件大小
[root@string ~]# ls -lh
total 8.0K
drwxr-xr-x 2 root root 4.0K Mar 5 12:34 test
-rw-r--r--. 1 root root 2.3K Mar 4 10:46 系统优化.md
-d : 显示目录本身,而不是显示目录内容
[root@string ~]# ls -d /etc/sysconfig/
/etc/sysconfig/
[root@string ~]#
-F : 给文件添加一个标识符
[root@string ~]# ls -F /root/
abc/ abc.txt {a...c}.txt bcd.txt dir/ fgh.txt one/ test/ 系统优化.md
[root@string ~]# ls /root/
abc abc.txt {a...c}.txt bcd.txt dir fgh.txt one test 系统优化.md
[root@string ~]# /bin/ls -F /root/
abc/ abc.txt {a...c}.txt bcd.txt dir/ fgh.txt one/ test/ 系统优化.md
[root@string ~]#
查看一个文件的内容(cat)
。格式:cat [参数] [查看路径]
[root@string ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
查看文件开头(head:从头打印文件,默认打印前10行)
。格式 :head [参数] [路径]
[root@string ~]# head /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
参数:
。-n : 打印出前n行
[root@string ~]# head -n 2 /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
。-c : 打印出前n个字节内容
[root@string ~]# head -c 100 /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rd71d8Ke-1617772434074)(file://\192.168.13.93\linux12期\基础部分\day04\笔记\assets\image-20210305161245264.png?lastModify=1614950166)]
查看文件结尾(tail 从尾部开始打印文件,默认打印10行)
- 格式:tail [参数] [路径]
[root@string ~]# tail /etc/sysconfig/network-scripts/ifcfg-eth0
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=40fd9db3-b150-435d-a610-32285fc596d2
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.15.100
PREFIX=24
GATEWAY=192.168.15.2
DNS1=114.114.114.114
IPV6_PRIVACY=no
参数:
。-n : 打印出文件最后n行的内容。
[root@string ~]# tail -n 2 /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=114.114.114.114
IPV6_PRIVACY=no
。-c :从文件底部开始输出n个字节的内容
[root@string ~]# tail -c 50 /etc/sysconfig/network-scripts/ifcfg-eth0
192.168.15.2
DNS1=114.114.114.114
IPV6_PRIVACY=no
。-f : 实时打印出文件新增内容
[root@string ~]# echo "string1" >> abc.txt
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x7jOMdlM-1617772434075)(file://\192.168.13.93\linux12期\基础部分\day04\笔记\assets\image-20210305162333208.png?lastModify=1614950306)]
绝对路径:从根路径到目标路径
相对路径:从当前位置到目标文件
关机
- shutdown -h:关机
- 格式:shutdown -h 时间
- 数字:多少分钟后关机
- 单词:now 立即关机,shutdown -h 0
- shutdown -r :重启
- reboot
- shutdown -c : 取消关机
shell 快捷键
- ^c : 结束当前进程
- ^d : 退出登录 (exit、logout)
- ^l : 清屏
- ^a :跳到行首
- ^e : 跳到行尾
- ^r : 搜索历史
- ^z : 杀掉当前进程
- ESC + . : 上一条命令的最后一个参数
时间
-
时区:UTC
-
date :
- 显示年份的字符:%Y %y
[root@string ~]# date +%Y
2021
[root@string ~]# date +%y
21
显示月份:%m %B %b
[root@string ~]# date +%m
03
[root@string ~]# date +%b
Mar
[root@string ~]# date +%B
March
显示日:%d
时间戳
[root@string ~]# # 打印出1970年1月1日0时0分0秒到现在的秒数(时间戳)
[root@string ~]# date +%s
1615210936
其他:
打印时分
[root@string ~]# date && date +%R
Mon Mar 8 21:44:27 CST 2021
21:44
# 打印星期
[root@string ~]# date +%u
1
# 打印月日时
[root@string ~]# date +%D
03/08/21
# 区分上下午时间(AM:上午,PM:下午)
[root@string ~]# date +%X
09:09:19 AM
date -s
# 仅仅修改了系统时间
[root@string ~]# date -s "2021-03-08 09:09:09"
Mon Mar 8 09:09:09 CST 2021
ntpdate
[root@string ~]# ntpdate ntp.aliyun
8 Mar 09:45:04 ntpdate[3200]: step time server 203.107.6.88 offset 1801.973121 sec
[root@string ~]# date
Mon Mar 8 09:45:13 CST 2021
同步硬件时钟
查看系统硬件时钟
[root@string ~]# hwclock -r
Mon 08 Mar 2021 09:46:34 AM CST -0.490310 seconds
# 将硬件时间同步到系统时间
[root@string ~]# date -s "2021-09-09"
Thu Sep 9 00:00:00 CST 2021
[root@string ~]# date
Thu Sep 9 00:00:01 CST 2021
[root@string ~]# hwclock -s
[root@string ~]# date
Mon Mar 8 09:49:46 CST 2021
[root@string ~]#
时区
[root@string ~]# timedatectl status
Local time: Mon 2021-03-08 09:50:49 CST
Universal time: Mon 2021-03-08 01:50:49 UTC
RTC time: Mon 2021-03-08 01:50:49
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
[root@string ~]#
# 时区列表
[root@string ~]# timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
# 设置时区
[root@string ~]# timedatectl set-timezone UTC
[root@string ~]# timedatectl status
Local time: Mon 2021-03-08 01:55:26 UTC
Universal time: Mon 2021-03-08 01:55:26 UTC
RTC time: Mon 2021-03-08 01:55:26
Time zone: UTC (UTC, +0000)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
基础命令
-
切换目录的路径:cd
- 特殊:
- . : 当前目录
- … : 上级目录
- ~ : 家目录
- - : 上一步的目录
- 特殊:
-
创建
- 文件
- touch
- touch [参数] 操作对象路径
- touch
- 目录
- mkdir
- 格式:mkdir [参数] 操作对象路径
- 参数:
- -p : 递归创建目录
- -v : 打印出目录的创建过程
- mkdir
- 文件
-
查找(普通)
- ls
- 格式:ls [参数] [操作对象路径]
- 参数:
- -a : 查看隐藏文件
- -l : 查看文件详细属性信息
- -h : 显示文件可读大小
- -i :显示文件索引号
- -d : 只显示目录本身
- cat : 查看文件内容
- cat [参数] [操作对象路径]
- 参数:
- -n : 显示行号
- head:从文件头部开始查询
- 格式:head [参数] [操作对象路径]
- 参数:
- -n : 显示多少行(从文件头部开始)
- -c : 打印出前n个字节的内容 (数字前加- :去掉后n个字节 )
- tail : 从文件结尾开始查询
- 格式:tail [参数] [路径]
- 参数:
- -n : 从文件结尾开始,打印n行
- -c : 从文件底部开始输出n个字节内容
- -f : 实时打印出文件新增的内容
- tree : 查看文件层级
- pwd : 查看当前目录绝对路径
- ls
-
修改(编辑)
- vi/vim编辑器:vi/vim是Linux常用文本编辑工具,具有很强大的编辑功能。vim相当于vi升级版。
-
vi/vim编辑器的编辑流程
① :vi 打开文件
② :创建swp文件,用于临时存储文件修改内容。
③ :选择输入模式进行修改内容
④ :进入末行模式,使用指令进行操作
⑤ :退出
- 输入模式
①:需要指定输入模式的方法
i : 在光标处之前插入内容
a : 在光标处之后插入内容
o : 在光标下一行输入内容
A :在光标所在行的行尾输入内容
- 保存
①:按键盘上的ESC键
②:按冒号键进入末行模式
③:执行命令,对文本进行操作
w : 保存编写的内容
q : 退出当前编辑器
- 命令模式
# 光标跳转到行尾
Shift + a(A) 和 Shift + 4($)
# 光标跳转到行首
0键
# 删除一行
dd : 删除一行
# 删除多行
ndd : 删除n行
# 复制一行
yy : 复制一行
# 复制多行
nyy : 复制多行
# 粘贴
p : 粘贴(粘贴在光标的下一行)
P : 粘贴(粘贴在光标的上一行)
# 撤销
u : 每按一次撤销一步
# 强制
! :
强制退出(修改内容不保存):q!
# 跳转到页尾
Shift + g(G)
# 跳转到页首
gg : 跳转发页首
# 跳转到指定行
n Shift + g(G)
# 上下左右跳转
h : 左
j : 下
k : 上
l : 右
- 末行模式
:set nu : 显示行号
:set nonu : 取消显示行号
- 批量修改
①:ctrl + v : 设置选择多行
②:shift + i/a : 进入编辑模式
③:编辑内容
④:按ESC键(自动变)
- 选择多行: :开始行,结束行 操作模式(y,d)
移动文件
格式:mv [目标文件路径] [目的文件路径]
[root@string ~]# mv abc.txt /opt/
[root@string ~]# ls
abc {a...c}.txt dir one 系统优化.md
abc.rpm bcd.txt fgh.txt test
[root@string ~]# ls /opt/
abc.txt
# 重命名:移动到当前文件夹中
[root@string ~]# mv abc.rpm abcd.rpm
[root@string ~]# ls
abc {a...c}.txt dir one 系统优化.md
abcd.rpm bcd.txt fgh.txt test
[root@string ~]# mv /root/abcd.rpm /root/abc.rpm
[root@string ~]# ls
abc {a...c}.txt dir one 系统优化.md
abc.rpm bcd.txt fgh.txt test
删除
格式:rm [参数] [操作对象路径]
[root@string ~]# ls
abc {a...c}.txt dir one 系统优化.md
abc.rpm bcd.txt fgh.txt test
[root@string ~]# rm fgh.txt
rm: remove regular empty file ‘fgh.txt’? y
[root@string ~]# ls
abc abc.rpm {a...c}.txt bcd.txt dir one test 系统优化.md
[root@string ~]#
- 免交互
[root@string ~]# touch oldboy
[root@string ~]# ls
abc {a...c}.txt dir one 系统优化.md
abc.rpm bcd.txt oldboy test
[root@string ~]# rm oldboy
rm: remove regular empty file ‘oldboy’?
[root@string ~]# ls
abc {a...c}.txt dir one 系统优化.md
abc.rpm bcd.txt oldboy test
[root@string ~]# rm -f oldboy
[root@string ~]# ls
abc abc.rpm {a...c}.txt bcd.txt dir one test 系统优化.md
获取命令的帮助信息
1.man(帮助的意思) #详细的显示一个命令的使用方法(***)
[root@localhost ~]# man ls
2.help #查看一个命令的帮助信息 只能查看系统的内置命令
[root@localhost ~]# help cd 不推荐使用
3.使用选项help查看命令的帮助信息,有的命令不支持
[root@localhost ~]# ls --help #显示命令的选项帮助信息
4.info #显示命令的一些基本信息,不推荐使用
[root@localhost ~]# info ls
5.通过互联网的方式获取命令帮助的信息
http://linux.51yip/search/ls
https://man.linuxde/man
find文件查找
find命令介绍
格式:find 搜索路径 参数 参数相关匹配值 指令(-print)
find指令
- -print (输出结果,默认)
- -ls 类似于
ls -lhi
根据名称查找一个文件
我记得,Linux系统中有一个文件叫redhat-release,我怎查找到它的位置。
[root@localhost ~]# find / -name "redhat-release"
/etc/redhat-release
/usr/share/doc/redhat-release
/usr/share/redhat-release
-i : 忽略大小写
[root@localhost ~]# find /root/ -iname "abc*"
/root/abc1
/root/abc2
/root/abc6
/root/Abc1
/root/Abc2
*:匹配所有(可以匹配空字符)
[root@localhost ~]# find /etc/ -name "ifcfg-*"
/etc/sysconfig/network-scripts/ifcfg-lo
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1
# 查询以eth0开头的文件
[root@localhost ~]# find / -name "eth0*"
/root/eth0xxx
# 查询以eth0结尾的文件
[root@localhost ~]# find / -name "*eth0"
/etc/sysconfig/network-scripts/ifcfg-eth0
/root/xxxeth0
# 查询文件名称包含eth0的文件
[root@localhost ~]# find / -name "*eth0*"
/etc/sysconfig/network-scripts/ifcfg-eth0
/root/eth0xxx
/root/xxxeth0
/root/xxxeth0xxx
[] : 匹配中括号中的任意一个字符
[root@localhost ~]# touch abc{1..9}
[root@localhost ~]# find /root/ -name "abc[359]"
/root/abc3
/root/abc5
/root/abc9
[root@localhost ~]# find /root/ -name "oldboy[tsdgh]"
/root/oldboyd
/root/oldboyg
/root/oldboyh
/root/oldboys
/root/oldboyt
[^] : 匹配除掉中括号中的内容之外的跟前面匹配的上的所有文件
[root@localhost ~]# find /root/ -name "abc[^359]"
/root/abc1
/root/abc2
/root/abc4
/root/abc6
/root/abc7
/root/abc8
[root@localhost ~]# ls
abc1 abc8 oldboyc oldboyj oldboyq oldboyx
abc2 abc9 oldboyd oldboyk oldboyr oldboyy
abc3 anaconda-ks.cfg oldboye oldboyl ol
! : 对整个搜索结果进行取反
[root@localhost ~]# find /root/ -name "abc[^359]"
/root/abc1
/root/abc2
/root/abc4
/root/abc6
/root/abc7
/root/abc8
[root@localhost ~]# find /root/ -name "abc[359]"
/root/abc3
/root/abc5
/root/abc9
[root@localhost ~]# find /root/ ! -name "abc[359]"
/root/
/root/.bash_logout
/root/.bash_profile
/root/.bashrc
/root/.cshrc
/root/.tcshrc
/root/anaconda-ks.cfg
/root/.bash_history
?:匹配任意一个字符(该字符不能为空)
[root@localhost ~]# find /root/ -name "abc*"
/root/abc1
/root/abc2
/root/abc3
/root/abc4
/root/abc5
/root/abc6
[root@localhost ~]# find /root/ -name "abc?"
/root/abc1
/root/abc2
/root/abc3
/root/abc4
/root/abc5
/root/abc6
根据文件大小查找
根据文件的体积查询出我们所需要的文件,find会自动四舍五入
-a :并且(默认使用-a)
[root@localhost ~]# find /var/log -size +2k -size -10k
/var/log
/var/log/secure
/var/log/vmware-vgauthsvc.log.0
/var/log/vmware-vmsvc.log
/var/log/cron
/var/log/vmware-network.3.log
[root@localhost ~]# find /var/log -size +2k -a -size -10k
/var/log
/var/log/secure
/var/log/vmware-vgauthsvc.log.0
/var/log/vmware-vmsvc.log
/var/log/cron
/var/log/vmware-network.3.log
-o : 或者
[root@localhost ~]# find /var/log -size -2k -o -size +10k
/var/log/tallylog
/var/log/grubby_prune_debug
/var/log/lastlog
/var/log/wtmp
/var/log/btmp
-size
# b(默认) c w K M G
-size n (单位)
+n : 大于n个单位
-n : 小于n个单位
n : 等于n个单位
# 注:find查找同时打印出隐藏文件
# 注:n必须是整数,不能是小数
[root@localhost log]# find /root/ -size 8.8k
find: Invalid argument `8.8k' to -size
c : 字节
[root@localhost log]# find /var/log -size 674c
/var/log/vmware-network.5.log
/var/log/vmware-network.4.log
/var/log/vmware-network.2.log
[root@localhost log]# find /var/log/ -size -300c -ls
33771984 0 -rw------- 1 root root 0 Mar 3 10:45 /var/log/tallylog
33852252 0 -rw------- 1 root utmp 0 Mar 4 10:38 /var/log/btmp
34126340 0 -rw------- 1 root root 0 Mar 3 10:47 /var/log/spooler
34126393 0 drwxr-xr-x 2 root root 23 Feb 3 00:30 /var/log/tuned
17662708 0 drwx------ 2 root root 23 Aug 8 2019 /var/log/audit
51428521 0 drwxr-xr-x 2 root root 176 Mar 3 10:51 /var/log/anaconda
51428529 0 -rw------- 1 root root 0 Mar 3 10:51 /var/log/anaconda/ks-script-NeF0lj.log
70 0 drwxr-xr-x 2 root root 6 Mar 3 10:51 /var/log/rhsm
33574980 0 -rw------- 1 root root 0 Mar 9 10:28 /var/log/boot.log
33574994 4 -rw-r----- 1 root root 253 Mar 4 10:41 /var/log/firewalld
按照时间进行查找
按照文件的创建时间、修改时间以及访问时间进行筛选查找。
-ctime: 文件变更时间(修改了位置(mv)、所属组、所属用户)
[root@localhost test]# for i in 1 2 3 4 5 6 7 8 9;do date -s "2021-03-0$i 11:30:30";touch 2021-03-0$i.txt; done && ntpdate ntp.aliyun
[root@localhost test]#
[root@localhost test]# # 1、查询文件变更时间在3天以前
[root@localhost test]# # 2、查询文件变更时间在3天以内
[root@localhost test]# # 3、查询文件变更时间在3天这个时候的
[root@localhost test]#
[root@localhost test]#
[root@localhost test]# find ./ -ctime +3
./2021-03-01.txt
./2021-03-02.txt
./2021-03-03.txt
./2021-03-04.txt
./2021-03-05.txt
[root@localhost test]# find ./ -ctime -3
./
./2021-03-07.txt
./2021-03-08.txt
./2021-03-09.txt
[root@localhost test]# find ./ -ctime 3
./2021-03-06.txt
[root@localhost test]#
[root@localhost test]# mkdir backup
[root@localhost test]# mv 2021-03-01.txt backup/
[root@localhost test]# stat backup/2021-03-01.txt
File: ‘backup/2021-03-01.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 17307574 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-03-01 11:30:30.000000000 +0800
Modify: 2021-03-01 11:30:30.000000000 +0800
Change: 2021-03-09 11:58:06.369682903 +0800
Birth: -
[root@localhost test]# find ./ -ctime ^C
[root@localhost test]# mv 2021-03-01.txt backup/^C
[root@localhost test]#
[root@localhost test]#
[root@localhost test]# find ./ -ctime -3
./
./2021-03-07.txt
./2021-03-08.txt
./2021-03-09.txt
./backup
./backup/2021-03-01.txt
[root@localhost test]#
atime : 访问时间(cat)
[root@localhost test]# rm -rf ./* && for i in 1 2 3 4 5 6 7 8 9;do date -s "2021-03-0$i 11:30:30";touch 2021-03-0$i.txt; done
Mon Mar 1 11:30:30 CST 2021
Tue Mar 2 11:30:30 CST 2021
Wed Mar 3 11:30:30 CST 2021
Thu Mar 4 11:30:30 CST 2021
Fri Mar 5 11:30:30 CST 2021
Sat Mar 6 11:30:30 CST 2021
Sun Mar 7 11:30:30 CST 2021
Mon Mar 8 11:30:30 CST 2021
Tue Mar 9 11:30:30 CST 2021
[root@localhost test]# ntpdate ntp.aliyun
9 Mar 12:03:08 ntpdate[22696]: step time server 203.107.6.88 offset 1938.313235 sec
[root@localhost test]#
[root@localhost test]#
[root@localhost test]#
[root@localhost test]#
[root@localhost test]#
[root@localhost test]#
[root@localhost test]#
[root@localhost test]# find ./ -atime +3
./2021-03-01.txt
./2021-03-02.txt
./2021-03-03.txt
./2021-03-04.txt
./2021-03-05.txt
[root@localhost test]# find ./ -atime -3
./
./2021-03-07.txt
./2021-03-08.txt
./2021-03-09.txt
[root@localhost test]# find ./ -atime 3
./2021-03-06.txt
[root@localhost test]# cat 2021-03-03.txt
[root@localhost test]# find ./ -atime +3
./2021-03-01.txt
./2021-03-02.txt
./2021-03-04.txt
./2021-03-05.txt
[root@localhost test]# find ./ -atime -3
./
./2021-03-03.txt
./2021-03-07.txt
./2021-03-08.txt
./2021-03-09.txt
[root@localhost test]# stat 2021-03-03.txt
File: ‘2021-03-03.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 17307576 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-03-09 12:03:59.906083902 +0800
Modify: 2021-03-03 11:30:30.000000000 +0800
Change: 2021-03-03 11:30:30.000000000 +0800
Birth: -
[root@localhost test]#
-mtime: 内容修改时间(包含创建时间)
# 正好3天前,这一天创建的文件
[root@localhost test]# find /root/test/ -mtime 3
/root/test/2021-03-06.txt
# 正好3天以内,创建的文件
[root@localhost test]# find /root/test/ -mtime -3
/root/test/
/root/test/2021-03-07.txt
/root/test/2021-03-08.txt
# 正好3天以前创建的文件
[root@localhost test]# find /root/test/ -mtime +3
/root/test/
/root/test/2021-03-05.txt
/root/test/2021-03-04.txt
[root@localhost test]#
按照属性查找(-type)
find 路径 -type 文件类型 指令
f(-) : 普通文件
d : 目录文件
l : 连接文件(快捷方式)
b : 设备文件
c : 字符设备文件
s : 套接字文件
p : 管道文件
[root@localhost dev]# find ./ -type b
./dm-1
./dm-0
./sda2
./sda1
./sda
./sr0
[root@localhost dev]# find ./ -type b -ls
10766 0 brw-rw---- 1 root disk 253, 1 Mar 9 09:11 ./dm-1
10706 0 brw-rw---- 1 root disk 253, 0 Mar 9 09:11 ./dm-0
10562 0 brw-rw---- 1 root disk 8, 2 Mar 9 09:11 ./sda2
10561 0 brw-rw---- 1 root disk 8, 1 Mar 9 09:11 ./sda1
10560 0 brw-rw---- 1 root disk 8, 0 Mar 9 09:11 ./sda
10557 0 brw-rw---- 1 root cdrom 11, 0 Mar 9 09:11 ./sr0
[root@localhost dev]# find / -type s -ls
328 0 srw-rw-rw- 1 root root 0 Mar 9 09:11 /dev/log
20775 0 srw-rw-rw- 1 root root 0 Mar 9 09:11 /run/abrt/abrt.socket
20753 0 srw-rw-rw- 1 root root 0 Mar 9 09:11 /run/vmware/guestServicePipe
19525 0 srw-rw-rw- 1 root root 0 Mar 9 09:11 /run/dbus/system_bus_socket
11833 0 srw------- 1 root root 0 Mar 9 09:11 /run/lvm/lvmpolld.socket
11777 0 srw------- 1 root root 0 Mar 9 09:11 /run/lvm/lvmetad.socket
11884 0 srw------- 1 root root 0 Mar 9 09:11 /run/udev/control
11831 0 srw------- 1 root root 0 Mar 9 09:11 /run/systemd/shutdownd
# 查询出/root目录下,3天前创建的文件
[root@localhost dev]# find /root/ -type f -ctime +3
/root/.bash_logout
/root/.bash_profile
/root/.bashrc
/root/.cshrc
/root/.tcshrc
/root/anaconda-ks.cfg
/root/.viminfo
/root/系统优化.md
[root@localhost dev]# find /root/ -type f -a -ctime +3
/root/.bash_logout
/root/.bash_profile
/root/.bashrc
/root/.cshrc
/root/.tcshrc
/root/anaconda-ks.cfg
/root/.viminfo
/root/系统优化.md
# 查询系统三天以内[root@localhost dev]# find / -type s -ctime -3
/dev/log
/run/abrt/abrt.socket
/run/vmware/guestServicePipe
/run/dbus/system_bus_socket
/run/lvm/lvmpolld.socket
/run/lvm/lvmetad.socket
/run/udev/control创建的套接字文件有哪些?
[root@localhost dev]# find / -type s -ctime -3
/dev/log
/run/abrt/abrt.socket
/run/vmware/guestServicePipe
/run/dbus/system_bus_socket
/run/lvm/lvmpolld.socket
/run/lvm/lvmetad.socket
/run/udev/control
所属组查询
-print :打印结果集
-ls : 打印结果集详情
[root@localhost dev]# find / -type s -ctime -3 -ls
328 0 srw-rw-rw- 1 root root 0 Mar 9 09:11 /dev/log
20775 0 srw-rw-rw- 1 root root 0 Mar 9 09:11 /run/abrt/abrt.socket
20753 0 srw-rw-rw- 1 root root 0
-delete : 删除结果集
[root@localhost test]# ls
Abc abc1 Abc1 abc10 abc2 abc23 abc3 abc4 abc5
[root@localhost test]# find ./ -iname "abc?" -delete
[root@localhost test]# ls
Abc abc10 abc23
-exec : 对结果集进行下一步处理
# 格式
find 路径 参数 参数表达式 -exec 命令 {} \;
[root@localhost test]# find ./ -iname "abc"
./Abc
[root@localhost test]# find ./ -iname "abc" -exec ls -l {} \;
-rw-r--r-- 1 root root 0 Mar 10 09:44 ./Abc
[root@localhost test]#
[root@localhost test]# find ./ -iname "abc"
./Abc
[root@localhost test]# find ./ -iname "abc" -exec rm -rf {} \;
[root@localhost test]# ls
abc10 abc23
[root@localhost test]#
-ok : 对结果集进行下一步处理(交互)
# 格式
find 路径 参数 参数表达式 -ok 命令 {} \;
[root@localhost test]# find ./ -iname "abc10"
./abc10
[root@localhost test]# find ./ -iname "abc10" -ok rm {} \;
< rm ... ./abc10 > ? n
[root@localhost test]# ls
abc10 abc23
[root@localhost test]# find ./ -iname "abc10" -ok rm {} \;
< rm ... ./abc10 > ? y
[root@localhost test]# ls
abc23
[root@localhost test]#
find和xargs命令配合
# 格式
find 路径 参数 参数表达式 | xargs ...(其他命令做处理)
[root@localhost ~]# find ./test/ -type f | xargs -I {} ls -l {}
-rw-r--r-- 1 root root 0 Mar 10 09:24 ./test/abc23
[root@localhost ~]# ls -l
total 640
-rw-r--r-- 1 root root 646165 Mar 9 10:31 123.log
-rw-------. 1 root root 1757 Mar 3 10:51 anaconda-ks.cfg
drwxr-xr-x. 3 root root 17 Mar 4 10:51 dir
-rw-r--r-- 1 root root 0 Mar 9 09:28 eth0xxx
drwxr-xr-x 2 root root 19 Mar 10 11:08 test
-rw-r--r-- 1 root root 0 Mar 9 09:28 xxxeth0
-rw-r--r-- 1 root root 0 Mar 9 09:28 xxxeth0xxx
-rw-r--r--. 1 root root 2344 Mar 4 10:46 系统优化.md
[root@localhost ~]# find ./test/ -type f
./test/abc23
[root@localhost ~]# find ./test/ -type f | xargs -I {} ls {}
./test/abc23
[root@localhost ~]#
[root@localhost ~]# find ./test/ -type f
./test/abc23
[root@localhost ~]# find ./test/ -type f | xargs -I {} cp {} /opt/
[root@localhost ~]# ls -l /opt/
total 0
-rw-r--r-- 1 root root 0 Mar 10 11:04 Abc
-rw-r--r-- 1 root root 0 Mar 10 11:23 abc23
[root@localhost ~]# find ./test/ -type f -exec cp {} /opt/ \;
[root@localhost ~]# ls -l /opt/
total 0
-rw-r--r-- 1 root root 0 Mar 10 11:24 abc23
[root@localhost ~]#
上传于下载
从互联网上下载
https://mirrors.huaweicloud/
wget
格式:
wget 需要被下载的连接
# --no-check-certificate : 不再验证ssl证书(当ssl连接不安全情况下使用)
# 如果机器出现-bash: wget: command not found, 执行yum install wget -y
# 默认下载到当前目录
[root@localhost test]# wget https://repo.huaweicloud/nginx/nginx-0.1.23.tar.gz--2021-03-10 12:02:11-- https://repo.huaweicloud/nginx/nginx-0.1.23.tar.gz
Resolving repo.huaweicloud (repo.huaweicloud)... 119.188.36.137
Connecting to repo.huaweicloud (repo.huaweicloud)|119.188.36.137|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 285255 (279K) [application/octet-stream]
Saving to: ‘nginx-0.1.23.tar.gz’
100%[========================================>] 285,255 537KB/s in 0.5s
2021-03-10 12:02:12 (537 KB/s) - ‘nginx-0.1.23.tar.gz’ saved [285255/285255]
[root@localhost test]# ls
nginx-0.1.23.tar.gz
[root@localhost test]#
# 指定下载目录
[root@localhost ~]# wget -O /opt/nginx-0.1.22.tar.gz https://repo.huaweicloud/nginx/nginx-0.1.22.tar.gz
--2021-03-10 12:04:37-- https://repo.huaweicloud/nginx/nginx-0.1.22.tar.gz
Resolving repo.huaweicloud (repo.huaweicloud)... 119.188.36.137
Connecting to repo.huaweicloud (repo.huaweicloud)|119.188.36.137|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 280145 (274K) [application/octet-stream]
Saving to: ‘/opt/nginx-0.1.22.tar.gz’
100%[========================================>] 280,145 1.04MB/s in 0.3s
2021-03-10 12:04:38 (1.04 MB/s) - ‘/opt/nginx-0.1.22.tar.gz’ saved [280145/280145]
[root@localhost ~]# ls
] 123.log anaconda-ks.cfg dir eth0xxx test xxxeth0 xxxeth0xxx 系统优化.md
[root@localhost ~]# ls /opt/
abc23 nginx-0.1.22.tar.gz
[root@localhost ~]#
curl
格式:
curl 需要被访问的连接
# 参数
-o : 指定下载目录
[root@localhost ~]# curl -o /opt/nginx-.tar.gz https://repo.huaweicloud/nginx/nginx-0.1.25.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 284k 100 284k 0 0 538k 0 --:--:-- --:--:-- --:--:-- 537k
[root@localhost ~]#
-k : 不再验证ssl证书
curl 与 wget的区别
wget 是下载文件
-O : 指定保存的路径
curl 是访问链接
-o指定文件路径,从而达到下载文件的功能
# 取消ssl证书认证(不再验证SSL证书是否安全)
wget 的参数:--no-check-certificate
curl 的参数:-k
从服务器上上传下载文件到本地
上传下载文件到主机和个人电脑。
需要安装:lrzsz
# 安装命令: yum install lrzsz -y
- 上传
[root@localhost ~]# rz -E
# 格式
rz调出上传窗口,选择需要被上传的文件。
- 下载
[root@localhost ~]# sz nginx-0.1.22.tar.gz
# 格式:
sz 服务器中的文件路径
字符处理命令
字符处理命令:sort, uniq, cut
sort命令
对字符进行排序。
sort 需要排序的对象
[root@localhost ~]# cat test.txt
s 5
d 6
e 1
h 2
j 9
s 5
h 2
h 2
p 11
o 12
[root@localhost ~]# sort test.txt
d 6
e 1
h 2
h 2
h 2
j 9
o 12
p 11
s 5
s 5
# 注:经过对比得出,sort命令默认情况下对需要排序的对象的第一列进行排序。
-k(n) :指定列进行排序,默认情况下是以空格进行分割
[root@localhost ~]# sort test.txt
d 6
e 1
h 2
h 2
h 2
j 9
o 12
p 11
s 5
s 5
[root@localhost ~]# sort -k2 test.txt
e 1
p 11
o 12
h 2
h 2
h 2
s 5
s 5
d 6
j 9
# 注:-k参数只对第一个字符进行排序
-n : 按照数值的大小进行排序
[root@localhost ~]# sort -k2 test.txt
e 1
p 11
o 12
h 2
h 2
h 2
s 5
s 5
d 6
j 9
[root@localhost ~]# sort -nk2 test.txt
e 1
h 2
h 2
h 2
s 5
s 5
d 6
j 9
p 11
-r : 按照倒叙进行排序
[root@localhost ~]# sort -nk2 test.txt
e 1
h 2
h 2
h 2
s 5
s 5
d 6
j 9
p 11
o 12
[root@localhost ~]# sort -rnk2 test.txt
o 12
p 11
j 9
d 6
s 5
s 5
h 2
h 2
h 2
e 1
-t : 指定分隔符, 后面的排序按照分割符分割的列进行排序
[root@localhost ~]# sort -t ":" -rnk3 test.txt
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
uniq
对结果集进行去重。
uniq [参数] 需要去重的对象
[root@localhost ~]# sort test.txt
d 6
e 1
h 2
h 2
h 2
j 9
o 12
p 11
s 5
s 5
[root@localhost ~]# sort test.txt | uniq
d 6
e 1
h 2
j 9
o 12
p 11
s 5
-c : 显示重复的次数
[root@localhost ~]# sort test.txt
d 6
e 1
h 2
h 2
h 2
j 9
o 12
p 11
s 5
s 5
[root@localhost ~]# sort test.txt | uniq
d 6
e 1
h 2
j 9
o 12
p 11
s 5
[root@localhost ~]# sort test.txt | uniq -c
1 d 6
1 e 1
3 h 2
1 j 9
1 o 12
1 p 11
2 s 5
# 注: -c参数主要用来显示重复的次数
-d : 只显示重复的列
[root@localhost ~]# sort test.txt | uniq -c
1 d 6
1 e 1
3 h 2
1 j 9
1 o 12
1 p 11
2 s 5
[root@localhost ~]# sort test.txt | uniq -c -d
3 h 2
2 s 5
[root@localhost ~]#
-u: 只显示不重复的列
[root@localhost ~]# sort test.txt | uniq -c
1 d 6
1 e 1
3 h 2
1 j 9
1 o 12
1 p 11
2 s 5
[root@localhost ~]# sort test.txt | uniq -c -u
1 d 6
1 e 1
1 j 9
1 o 12
1 p 11
[root@localhost ~]#
cut
剪切文件
cut [参数] [操作对象]
[root@localhost ~]# sort -t ":" -nk3 /etc/passwd | cut -d ":" -f1,7
root:/bin/bash
bin:/sbin/nologin
daemon:/sbin/nologin
adm:/sbin/nologin
lp:/sbin/nologin
sync:/bin/sync
shutdown:/sbin/shutdown
halt:/sbin/halt
mail:/sbin/nologin
-d : 指定分割符
root@localhost ~]# sort -t ":" -nk3 /etc/passwd | cut -d ":" -f1,7
root:/bin/bash
bin:/sbin/nologin
daemon:/sbin/nologin
adm:/sbin/nologin
lp:/sbin/nologin
sync:/bin/sync
shutdown:/sbin/shutdown
-f : 指定显示的列
[root@localhost ~]# sort -t ":" -nk3 /etc/passwd | cut -d ":" -f1,7
root:/bin/bash
bin:/sbin/nologin
daemon:/sbin/nologin
adm:/sbin/nologin
lp:/sbin/nologin
sync:/bin/sync
shutdown:/sbin/shutdown
tr
删除或替换结果集
tr [参数] [操作对象]
[root@localhost ~]# cat /etc/passwd | tr "root" "ROOT"
ROOT:x:0:0:ROOT:/ROOT:/bin/bash
-d : 删除结果集中的某个字符
[root@localhost ~]# cat /etc/passwd | tr -d "root"
:x:0:0::/:/bin/bash
WC
统计,计算数字
wc [参数] [操作对象]
[root@localhost ~]# cat /etc/passwd | wc -l
21
[root@localhost ~]#
-l : 统计行数
[root@localhost ~]# cat /etc/passwd | wc -l
21
[root@localhost ~]#
-c : 统计字节数
[root@localhost ~]# cat demo.txt | wc -c
6
[root@localhost ~]#
-w : 统计单词数
[root@localhost ~]# cat demo.txt | wc -w
3
[root@localhost ~]#
[root@localhost ~]# cat demo.txt | wc -w
1
[root@localhost ~]# vim demo.txt
[root@localhost ~]# cat demo.txt | wc -w
3
[root@localhost ~]#
打包和压缩
将文件或文件夹合并成一个包,然后通过压缩算法进行数据压缩,减小包的体积,方便网络传输。
windows:
zip
rar
linux:
zip
tar
gz
bz2
tar.gz
tar.bz2
压缩算法:
gzip
bzip2
zip
是一个Windows和Linux中常用打包压缩工具,支持的压缩算法是zip。
zip工具需要安装
yum install zip unzip -y
zip压缩一个文件
# 格式
zip [参数] 压缩包名称 文件路径
[root@abc ~]# zip 123.zip 123.log
adding: 123.log (deflated 87%)
[root@abc ~]# ls -l
total 4732
-rw-r--r-- 1 root root 646165 Mar 9 10:31 123.log
-rw-r--r-- 1 root root 85296 Mar 11 11:58 123.zip
zip压缩文件夹
# 需要一个-r参数去递归压缩文件夹下的所有内容
[root@abc ~]# zip -r dir.zip dir/
adding: dir/ (stored 0%)
adding: dir/one/ (stored 0%)
adding: dir/123.log (deflated 87%)
zip的静默输出
# -q:参数就是不输出任何打包信息
[root@abc opt]# zip -r -q etc.zip /etc/
[root@abc opt]# ls -l
total 14200
-rw-r--r-- 1 root root 13674457 Mar 11 12:15 etc.zip
zip解压命令(unzip)
# 格式
unzip [参数] 压缩包路径
# unzip解压命令只能解压由zip打包的压缩文件
[root@abc ~]# unzip dir.zip
Archive: dir.zip
inflating: dir/123.log
[root@abc ~]#
# 其他压缩包由unzip解压时随即报错。
[root@abc opt]# unzip nginx-.tar.gz
Archive: nginx-.tar.gz
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of nginx-.tar.gz or
nginx-.tar.gz.zip, and cannot find nginx-.tar.gz.ZIP, period.
# 查看压缩包中压缩那些内容,不解压?
# 只查看压缩包内容不解压需要使用 -l 参数
[root@abc opt]# unzip -l dir.zip
Archive: dir.zip
Length Date Time Name
--------- ---------- ----- ----
0 03-11-2021 12:04 dir/
--------- -------
0 1 file
# 解压到指定目录(-d)
[root@abc ~]# unzip -d /root/ etc.zip
[root@abc opt]# cd /root/
[root@abc ~]# ls
] anaconda-ks.cfg dir.zip index.html test.pdf.gz xxxeth0xxx 系统优化.md
123.log demo.txt etc nginx-0.1.22.tar.gz test.txt 上传与下载.md
123.zip dir eth0xxx test xxxeth0 文件管理_(高级).pdf
# 静默输出(-q)
[root@abc ~]# rm -rf etc
[root@abc ~]# unzip -q -d /root/ /opt/etc.zip
[root@abc ~]# ls -l
total 4828
drwxr-xr-x 91 root root 8192 Mar 11 11:16 etc
tar
tar压缩支持多种压缩算法
tar.gz gzip (用的最多)
tar.bz2 bzip2
gzip
通过gzip压缩算法,将文件压缩一定体积,有利于传输, 不支持打包
[root@abc ~]# ls -l
total 4828
-rw-r--r-- 1 root root 244977 Mar 10 12:12 index.html
[root@abc ~]# gzip index.html
[root@abc ~]# ls -l
total 4612
-rw-r--r-- 1 root root 22652 Mar 10 12:12 index.html.gz
gzip压缩一个目录
[root@abc etc]# gzip -r /etc
[root@abc etc]# ls
abrt GREP_COLORS.gz myf.d security
adjtime.gz groff myf.gz selinux
aliases.db.gz group-.gz NetworkManager services.gz
aliases.gz group.gz networks.gz sestatus.conf.gz
alternatives grub2.cfg nsswitch.conf.bak.gz sgml
anacrontab.gz grub.d nsswitch.conf.gz shadow
gzip解压(-d)
[root@abc ~]# ls -l
-rw-r--r-- 1 0 0 22652 Mar 10 12:12 index.html.gz
[root@abc ~]# gzip -d index.html.gz
[root@abc ~]# ls -l
total 4828
-rw-r--r-- 1 0 0 244977 Mar 10 12:12 index.html
bzip2
使用bzip2 压缩算法来压缩一定体积的文件。
[root@abc ~]# ls -l
total 4828
-rw-r--r-- 1 root root 646165 Mar 9 10:31 123.log
[root@abc ~]# bzip2 123.log
[root@abc ~]# ls -l
total 4240
-rw-r--r-- 1 root root 0 Mar 10 12:04 ]
-rw-r--r-- 1 root root 42210 Mar 9 10:31 123.log.bz2
bzip2解压(-d)
bzip2解压是针对于bzip2压缩的压缩包来进行解压。
[root@abc ~]# ls -l
total 4240
-rw-r--r-- 1 root root 42210 Mar 9 10:31 123.log.bz2
[root@abc ~]# bzip2 -d 123.log.bz2
[root@abc ~]# ls -l
total 4828
-rw-r--r-- 1 root root 646165 Mar 9 10:31 123.log
tar
tar其实是一个打包工具,不具备压缩功能,但是可以使用参数调用压缩工具来进行解压。
-
-c : 创建压缩包
-
-f : 指定压缩包名称
[root@abc ~]# tar -c -f test.tar 123.log
[root@abc ~]# ls -l
total 5468
-rw-r--r-- 1 root root 655360 Mar 11 15:49 test.tar
-z : 指定使用gzip压缩工具进行压缩
[root@abc ~]# tar -c -z -f test-one.tar 123.log
[root@abc ~]# ls -l
total 5084
-rw-r--r-- 1 root root 85279 Mar 11 15:56 test-one.tar
# 注:使用-z参数,不会自动添加.gz后缀
[root@abc ~]# tar -c -z -f anaconda.tar.gz anaconda-ks.cfg
[root@abc ~]# ls -l
total 5084
-rw-r--r-- 1 root root 1010 Mar 11 15:58 anaconda.tar.gz
-j : 指定使用bzip2压缩工具进行压缩
[root@abc ~]# tar -c -j -f 123-bask-one.tar 123.log
[root@abc ~]# ls -l
total 5172
-rw-r--r-- 1 root root 42328 Mar 11 16:00 123-bak.tar.bz2
-rw-r--r-- 1 root root 42328 Mar 11 16:01 123-bask-one.tar
-J : 指定使用xz压缩工具进行压缩
[root@abc test-tar]# tar -c -J -f etc.tar.xz /etc/
[root@abc ~]# ls -l
-rw-r--r-- 1 root root 9493376 Mar 11 17:00 etc.tar.xz
-t : 查看压缩包内容
[root@abc ~]# tar -t -f 123-bak.tar.bz2
123.log
[root@abc ~]#
-v : 显示压缩包压缩过程
[root@abc ~]# tar -x -v -f etc.tar -C /opt/
/etc/centos-release
/etc/DIR_COLORS.lightbgcolor
/etc/libaudit.conf
/etc/mail.rc
-P : 允许使用绝对路径进行打包
[root@abc ~]# tar -c -P -f 123-three.tar /etc/passwd
[root@abc ~]# tar -c -f 123-three.tar /etc/passwd
tar: Removing leading `/' from member names
[root@abc ~]#
-x : 解压
# tar解压是按照原来的路径进行解压
[root@abc test]# tar -x -f etc.tar
# tar会自动识别压缩功能
-C : 指定解压路径
[root@abc ~]# tar -x -f etc.tar -C /opt/
tar: Removing leading `/' from member names
[root@abc ~]# cd /opt/
[root@abc opt]# ls
abc23 dir dir.zip etc nginx-0.1.22.tar.gz nginx-.tar.gz xxx
[root@abc opt]#
–exclude : 排除某些文件
[root@abc test-tar]# tar -c -f abc.tar ./* --exclude=abc7 --exclude=abc5 --exclude=abc1
[root@abc test-tar]# tar -t -f abc.tar
./abc2
./abc3
./abc4
./abc6
./abc8
./abc9
[root@abc test-tar]#
–exclude-from : 根据某个文件列表排除多个文件
[root@abc test-tar]# cat list.txt
abc995
abc996
abc997
abc998
abc999
[root@abc test-tar]# tar -c -f abc.tar ./* --exclude-from=list.txt
-h : 打包软连接
[root@abc test-tar]# tar -c -h -f bin-h.tar /bin
tar参数
-c : 创建压缩
-f ; 指定压缩包名称
-z : 使用gzip压缩工具进行压缩
-j : 使用bzip2压缩工具进行压缩
-J : 使用xz压缩工具进行压缩
-t : 显示压缩包内容,不解压
-v : 显示压缩过程
-P : 允许使用绝对路径进行压缩
-x : 解压
-C : 指定解压路径
-h : 打包软连接
--exclude : 排除某些文件
--exclude-from : 根据文件列表排除多个文件
用户管理
linux中用户介绍
什么是用户?
用户其实就是相当于权限的化身,
处于安全考虑
所以,我们在进入系统之前都需要登录,根据用户给相应权限
Linux系统中用户角色
uid : Linux系统当中用户ID(相当于身份证号)
gid : ANTA20163307
用户组其实是统一某一类用户权限
需求:
大项目 :
开发者:a b c d
运维 : e f
测试:g
共同的权限:
超级用户
linux当中的老大(皇帝): root
Windows当中的老大:administrator
手动创建用户
vim/etc/passwd
vim/etc/shadow
vim/etc/group
vim/etc/gshadow
/etc/skel/ ⽤户⽼家的模板
/home/xxx 创建用户家⽬录
/var/spool/mail/xxx ⽤户邮箱⽂件
用户与组相关的文件
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名称 是否存在密码 uid gid 组名称/注释信息 家目录 默认解析器
linux系统中⽤户⻆⾊划分
在linux系统中的⽤户分为管理员⽤户与其他⽤户
管理员⽤户拥有最⾼权限
其他⽤户根据管理员的分配拥有不同的权限
# 需要强调的是:
对于linux系统来说,⽤户的⻆⾊是通过UID和GID识别的;⽤户系统帐号的名称(如egon)其实给
⼈(管理员)看的,linux系统能够识别的仅仅是UID和GID这样的数字。
# uid与gid
1. UID (User Identify)⽤户ID,唯⼀标识⼀个系统⽤户的帐号,uid在系统中是唯⼀的。uid
相当于⼀个⼈的身份证,⽤户名就相当于这个⼈的名字
2. GID (Group Identify)组ID,如果把⼀个操作系统当成⼀家公司,uid相当于这个⼈的员⼯
号,gid相当于他的部⻔编号。
centos7系统之前约定
uid: 0 由超级⽤户或具备超级⽤户权限的⽤户创建的⽤户(贫⺠⽼百姓,⼤⾂,布
⾐/bin/bash)
uid: 1~499 系统虚拟⽤户:UID范围1-499,存在满⾜⽂件或服务启动的需要。⼀般不能登录,
只是傀儡
uid: 500-65535 普通⽤户
centos7系统约定:
0 超级管理员,最⾼权限,有着极强的破坏能⼒
1~200 系统⽤户,⽤来运⾏系统⾃带的进程,默认已创建
201~999 系统⽤户,⽤来运⾏安装的程序,所以此类⽤户⽆需登录系统
1000+ 普通⽤户,正常可以登录系统的⽤户,权限⽐较⼩,能执⾏的任务有限
# ⽤户和组的关系:
⼀对⼀,多对⼀,⼀对多,多对多
修改用户信息(usermod)
修改用户信息最主要的命令是usermod命令,其参数跟useradd基本一致。
- 修改UID
[root@localhost ~]# tail -1 /etc/passwd
xiaoyu:x:2002:2002::/home/xiaoyu:/bin/bash
[root@localhost ~]# usermod -u 2302 xiaoyu
[root@localhost ~]# tail -1 /etc/passwd
xiaoyu:x:2302:2002::/home/xiaoyu:/bin/bash
- 修改基本组及附加组
# 基本组 : 一个用户必须拥有的哪个组
[root@localhost ~]# tail -1 /etc/passwd
xiaoyu:x:2302:2002::/home/xiaoyu:/bin/bash
[root@localhost ~]# id xiaoyu
uid=2302(xiaoyu) gid=2002(xiaoyu) groups=2002(xiaoyu)
[root@localhost ~]# usermod -g group1 xiaoyu
[root@localhost ~]# id xiaoyu
uid=2302(xiaoyu) gid=2003(group1) groups=2003(group1)
[root@localhost ~]# tail -1 /etc/passwd
xiaoyu:x:2302:2003::/home/xiaoyu:/bin/bash
[root@localhost ~]#
# 附加组 : 用户加入的其他用户组
[root@localhost ~]# groupadd group1
[root@localhost ~]# id
uid=0(root) gid=0(root) groups=0(root),1000(oldboy),1001(sssssssssssssssssssssss),1002(test)
[root@localhost ~]# usermod -G group1 root
[root@localhost ~]# vim /etc/group
[root@localhost ~]# tail -1 /etc/group
group1:x:2003:root
- 修改家目录
[root@localhost ~]# usermod -d /home/xiaoyu123 xiaoyu
# 注:修改家目录仅仅修改了配置,而原来的家目录文件没有迁移
- 修改用户描述信息
[root@localhost ~]# tail -1 /etc/passwd
xiaoyu:x:2302:2003::/home/xiaoyu123:/bin/bash
[root@localhost ~]# usermod -c "这是一个甩锅" xiaoyu
[root@localhost ~]# tail -1 /etc/passwd
xiaoyu:x:2302:2003:这是一个甩锅:/home/xiaoyu123:/bin/bash
- 修改用户默认解析器
[root@localhost ~]# usermod -s /bin/sh xiaoyu
[root@localhost ~]# tail -1 /etc/passwd
xiaoyu:x:2302:2003:这是一个甩锅:/home/xiaoyu123:/bin/sh
- 锁定与解锁
[root@localhost home]# usermod -L xiaoyu
[root@localhost home]# usermod -U xiaoyu
- 修改登录名称
[root@localhost home]# usermod -l dayu xiaoyu
[root@localhost home]# tail -1 /etc/passwd
dayu:x:2302:2003:这是一个甩锅:/home/xiaoyu123:/bin/bas
- 追加
[root@localhost home]# id dayu
uid=2302(dayu) gid=2003(group1) groups=2003(group1),1000(oldboy)
[root@localhost home]# usermod -G root dayu
[root@localhost home]# id dayu
uid=2302(dayu) gid=2003(group1) groups=2003(group1),0(root)
[root@localhost home]# usermod -G oldboy dayu
[root@localhost home]# id dayu
uid=2302(dayu) gid=2003(group1) groups=2003(group1),1000(oldboy)
[root@localhost home]# usermod -a -G root dayu
[root@localhost home]# id dayu
uid=2302(dayu) gid=2003(group1) groups=2003(group1),0(root),1000(oldboy)
密码(passwd)
修改或添加Linux普通用户的密码。直接影响的文件是/etc/shadow
-
增加或修改密码
当用户密码不存在的时候即为增加密码,当用户密码存在时即为修改密码。
[root@localhost home]# useradd password
[root@localhost home]# tail -1 /etc/passwd
password:x:2303:2303::/home/password:/bin/bash
[root@localhost home]# tail -1 /etc/shadow
password:!!:18701:0:99999:7:::
[root@localhost home]# passwd password
Changing password for user password.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost home]# tail -1 /etc/passwd
password:x:2303:2303::/home/password:/bin/bash
[root@localhost home]# tail -1 /etc/shadow
password:$6$.EmM.4Bl$f.LimfvMsxxFZq6yFklfyk08JKQORdQovlk2a2dtrpkP31lAMLQpezFqLheBYOTm4Sur9aAqZlC/6MN6wHFBM1:18701:0:99999:7:::
[root@localhost home]#
- 免交互修改密码
[root@localhost home]# echo "123" | passwd --stdin dayu
Changing password for user dayu.
passwd: all authentication tokens updated successfully.
用户组
就类似于班级,是某个同权限用户的集合。
创建组
[root@localhost home]# groupadd group2
[root@localhost home]# tail -1 /etc/group
group2:x:2304:
[root@localhost home]#
- 指定gid
[root@localhost home]# groupadd -g 2204 group3
[root@localhost home]# tail -1 /etc/group
group3:x:2204:
- 创建系统组
[root@localhost home]# groupadd -r group4
[root@localhost home]# tail -1 /etc/group
group4:x:996:
修改组
- 修改名称
[root@localhost home]# tail -8 /etc/group
girl:x:2001:
[root@localhost home]# groupmod -n boy girl
[root@localhost home]# tail -8 /etc/group
boy:x:2001:
- 修改gid
[root@localhost home]# groupmod -g 2021 boy
[root@localhost home]# tail -8 /etc/group
boy:x:2021:
删除组
用户组在系统中删除,如果一个组被用户占用则不能删除。
[root@localhost home]# groupdel group4
[root@localhost home]# tail -8 /etc/group
dajige:x:1003:
abc:x:2000:
xiaoyu:x:2002:
group1:x:2003:root
password:x:2303:
group2:x:2304:
group3:x:2204:
boy:x:2021:
[root@localhost home]#
# 注:用户被删除,用户基本组也会被删除
[root@localhost home]# useradd test-group-del
[root@localhost home]# tail -1 /etc/passwd
test-group-del:x:2304:2305::/home/test-group-del:/bin/bash
[root@localhost home]# tail -1 /etc/group
test-group-del:x:2305:
[root@localhost home]# userdel -r test-group-del
[root@localhost home]# tail -1 /etc/passwd
password:x:2303:2303::/home/password:/bin/bash
[root@localhost home]# tail -1 /etc/group
boy:x:2021:
[root@localhost home]#
组成员管理
# 添加一个组到用户
[root@localhost home]# useradd gtest
[root@localhost home]# vim /etc/group
[root@localhost home]# id gtest
uid=2304(gtest) gid=2305(gtest) groups=2305(gtest),2204(group3)
[root@localhost home]# gpasswd -a gtest group2
Adding user gtest to group group2
[root@localhost home]# id gtest
uid=2304(gtest) gid=2305(gtest) groups=2305(gtest),2304(group2),2204(group3)
# 添加多个组到用户
[root@localhost home]# gpasswd -M gtest,root,dayu group
gpasswd: group 'group' does not exist in /etc/group
[root@localhost home]# gpasswd -M gtest,root,dayu group3
[root@localhost home]# id root
uid=0(root) gid=0(root) groups=0(root),2000(abc),2003(group1),2204(group3)
[root@localhost home]# id dayu
uid=2302(dayu) gid=2003(group1) groups=2003(group1),0(root),1000(oldboy),2204(group3)
[root@localhost home]# id gtest
uid=2304(gtest) gid=2305(gtest) groups=2305(gtest),2304(group2),2204(group3)
# 为一个组添加组长(组长有权限向组内添加用户,其他用户[除root外]没有权限添加用户到该组)
[root@localhost ~]# gpasswd -A dayu group3
[root@localhost ~]# cat /etc/gshadow
group3:!:dayu:gtest,dayu,oldboy
# 组权限
[root@localhost ~]# id dayu
uid=2302(dayu) gid=2003(group1) groups=2003(group1),1000(oldboy),2204(group3)
[root@localhost ~]# chown .group3 /tmp/12.txt
[root@localhost ~]# ls -l /tmp/12.txt
-rw-r--r-- 1 root group3 4 Mar 15 11:35 /tmp/12.txt
[root@localhost ~]# chmod g+w /tmp/12.txt
[root@localhost ~]# ls -l /tmp/12.txt
-rw-rw-r-- 1 root group3 4 Mar 15 11:35 /tmp/12.txt
[root@localhost ~]# su - dayu
Last login: Mon Mar 15 11:37:05 CST 2021 on pts/3
[dayu@localhost ~]$ echo "456" > /tmp/12.txt
[dayu@localhost ~]$ cat /tmp/12.txt
456
[dayu@localhost ~]$
文件的输入与输出
输入内容到文件和输出内容到文件
追加和覆盖
- > :覆盖内容
- >> :追加内容
[root@localhost ~]# echo "String" >> abc.txt
[root@localhost ~]# cat abc.txt
String
[root@localhost ~]# echo "String" >> abc.txt
[root@localhost ~]# cat abc.txt
String
String
文件权限
rw- r-- r-- abc.txt
所属用户权限 所属组权限 其他用户权限
三个权限位
r(4) : 读
w(2) : 写
x(1) : 可执行
s(4) : 临时提权 chmod 4755 xxx
权限的归属
u : 代表着自己
g : 代表着组
o : 代表着其他人
权限的设置
chmod:
# 自己和所属组拥有可读可写权限,其他人拥有可读权限。
rw- rw- r--
rw-rw-r-- 7 = 4 + 2 + 1
chmod 664 文件名称
-R递归修改
mkdir -p /a/b/c
touch /a/b/c/d.txt
chmod -R 777 /a
chown:设置用户和组
ot@yum01 ~]# useradd lili
[root@yum01 ~]# groupadd oldgril
[root@yum01 ~]# ll /root/a.txt
-rw-r--r-- 1 root root 0 Mar 21 20:16 /root/a.txt
[root@yum01 ~]# chown lili.oldgril /root/a.txt
[root@yum01 ~]# ll /root/a.txt
-rw-r--r-- 1 lili oldgril 0 Mar 21 20:16 /root/a.txt
权限对⽂件or⽬录的意义
探讨权限对文件及目录的意义
探讨权限对目录下文件可读的影响
# 1、在目录下,只有可读权限,无法查看文件内容
# 2、在目录下,只有可读可写权限,无法查看文件内容
# 1、要想查看文件夹下的文件,文件夹必须至少拥有可执行权限;同时文件必须拥有可读权限.
文件夹至少是 1
文件也至少是 4
探讨权限对目录下文件可编辑的影响
# vim mv rm
# 要想目录下的文件可以被编辑,目录必须拥有可执行权限同时目录下的文件必须拥有可读可写权限。
文件夹至少是 1
文件至少是 6
探讨权限对目录下的文件的可执行的影响
# 要想目录下的文件可以被执行,目录及文件都必须拥有可执行权限且文件同时还要有可读权限。
文件夹和文件至少是 1
SUDO
用于普通用提升权限的。
-
相关的文件:
/etc/sudoers
-
检查
/etc/sudoers
是否修改正确:visudo -c -
sudoers文件格式
tom ALL= (ALL) ALL
用户名称 所有机器可登陆 所有IP或主机名 所有的指令
- 指令编写格式
# 必须写全路径:which查看命令全路径
## 只支持vim命令提权
xianchen ALL=(ALL) /usr/bin/vim
## 支持所有的命令提权
tom ALL=(ALL) ALL
## 不支持某个命令提权
tom ALL=(ALL) ALL, !/usr/bin/vim
## 不支持某个命令的部分功能
xiaochen ALL=(ALL) ALL, !/usr/bin/vim /root/123.txt
SU
- su - xxx 和 su xxx之间区别
1、su - xxx :相当于切换一个窗口,su xxx 仅仅切换了用户
2、su - xxx : 切换用户执行的系统文件要多于 su xxx
3、su - xxx 是登录
su xxx 切换用户
⽂件权限管理四:ACL
⽤命令setfacl设置的ACL(Access Control List) 权限是UGO权限的扩展,ACL可以针对单⼀⽤户、单⼀⽂件或⽬录来进⾏r,w,x的权限控制,对于需要特殊权限的使⽤状况有⼀定帮助。
ps:UGO中的O即其他⼈,涵盖了⾮常⼤的范围,我们使⽤setfacl可以将⽤户对⽂件的权限进⾏进⼀步细化
acl权限归属
- u : 指定用户
- g : 指定组
- o : 修改其他用户权限
- m : 指定mask权限
注:默认情况下,ACL权限跟普通权限保持一致。
⽂件⼀旦设置了acl权限后,查看信息会出现⼀个加号,以后包括UGO在内的权限都可以⽤setfacl来设置
修改属主的权限
setfacl -m u::权限 a.txt
修改属组的权限
setfacl -m g::权限 a.txt
修改其他⼈的权限
setfacl -m o::权限 a.txt
修改具体某⼀个⽤户的权限
setfacl -m u:⽤户名:权限 a.txt
修改具体某⼀个组的权限
setfacl -m g:组名:权限 a.txt # 组必须存在
# 也可以给⽬录设置,都⼀样
查看与删除
# 查看
getfacl /opt/a.txt
# 删除
setfacl -x g:group1 /opt/a.txt # 删除组hr的权限
setfacl -b /opt/a.txt #删除所有acl权限
应⽤:当前⽤户如果检索不到对应的acl权限或者检索到后发现权限为空,都会对应到other权限上
# 应⽤场景1: 其他⼈对⽂件没有任何权限,然后单独设置其他⼈⾥的egon01对⽂件有r权限、
egon02对⽂件有w权限
setfacl -b b.txt # 可以先清理掉所有的acl权限,保证实验环境⼲净
setfacl -m o::- b.txt
setfacl -m u:egon01:r b.txt
setfacl -m u:egon02:w b.txt
# egon01 对 b.txt的权限为r
# egon02 对 b.txt的权限为w
# 剩余的其他⼈中:
# 例如egon03 对 b.txt的权限为-
# 应⽤场景2:其他⼈对⽂件有rw权限,然后单独设置其他⼈⾥的egon01对⽂件有r权限、egon02对
⽂件有w权限
setfacl -b b.txt # 可以先清理掉所有的acl权限,保证实验环境⼲净
setfacl -m o::rw b.txt
setfacl -m u:egon01:r b.txt
setfacl -m u:egon02:w b.txt
# egon01 对 b.txt的权限为r
# egon02 对 b.txt的权限为w
# 剩余的其他⼈中:
# 例如egon03 对 b.txt的权限为rw
mask
设置mask命令如 : setfacl -m m:rw /opt/a.txt
mask值就像⼀个筛⼦,⽂件属主和other之外的所有权限都需要被它筛⼀遍,如果mask值为rw-则代表该筛⼦只放⾏rw权限。本质原理是权限A需要与mask值B进⾏按位与运算,得到的结果才是effective有效权限
default 继承
用法:setfacl -m d:u:egon:rwx /test
⽂件属性(权限)
[root@localhost ~]# touch /opt/{1..3}.txt
[root@localhost ~]# chmod 000 /opt/*
[root@localhost ~]# lsattr /opt/
---------------- /opt/1.txt
---------------- /opt/2.txt
---------------- /opt/3.txt
[root@localhost ~]# [root@localhost ~]# chattr +a /opt/1.txt # 允许追加内容
[root@localhost ~]# chattr +i /opt/2.txt # 禁⽌任何修改,有些病毒程序会对⽂件加
上该权限
[root@localhost ~]# chattr +A /opt/3.txt # 不更改⽂件访问时间
[root@localhost ~]# [root@localhost ~]# lsattr /opt/
-----a---------- /opt/1.txt
----i----------- /opt/2.txt
-------A-------- /opt/3.txt
# 验证
[root@localhost ~]# echo 111 >> /opt/1.txt
[root@localhost ~]# cat /opt/1.txt
111
[root@localhost ~]# rm -rf /opt/1.txt
rm: ⽆法删除"/opt/1.txt": 不允许的操作
# 去掉
[root@localhost ~]# chattr -a /opt/1.txt
[root@localhost ~]# chattr -i /opt/2.txt
[root@localhost ~]# chattr -A /opt/3.txt
软件包rpm
- rpm包来源
1、来源网络下载
2、来源本地:自己的镜像自带的rpm包
- rpm命令
# 安装
rpm -ivh xxx.rpm
# http://nginx/packages/centos/7/x86_64/RPMS/
-v : 显示安装过程
-i :显示安装包的详细信息
-h : 安装包哈希标记
# 下载Nginx rpm安装包的全名
[root@localhost ~]# wget http://nginx/packages/centos/7/x86_64/RPMS/nginx-1.18.0-1.el7.ngx.x86_64.rpm
--2021-03-17 12:16:47-- http://nginx/packages/centos/7/x86_64/RPMS/nginx-1.18.0-1.el7.ngx.x86_64.rpm
Resolving nginx (nginx)... 52.58.199.22, 3.125.197.172, 2a05:d014:edb:5702::6, ...
Connecting to nginx (nginx)|52.58.199.22|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 790284 (772K) [application/x-redhat-package-manager]
Saving to: ‘nginx-1.18.0-1.el7.ngx.x86_64.rpm’
100%[====================================================>] 790,284 339KB/s in 2.3s
2021-03-17 12:16:51 (339 KB/s) - ‘nginx-1.18.0-1.el7.ngx.x86_64.rpm’ saved [790284/790284]
# 安装rpm安装包
[root@localhost ~]# rpm -ivh nginx-1.18.0-1.el7.ngx.x86_64.rpm
warning: nginx-1.18.0-1.el7.ngx.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:nginx-1:1.18.0-1.el7.ngx ################################# [100%]
----------------------------------------------------------------------
Thanks for using nginx!
Please find the official documentation for nginx here:
* http://nginx/en/docs/
Please subscribe to nginx-announce mailing list to get
the most important news about nginx:
* http://nginx/en/support.html
Commercial subscriptions for nginx are available on:
* http://nginx/products/
----------------------------------------------------------------------
# 验证nginx是否安装成功
[root@localhost ~]# nginx -v
nginx version: nginx/1.18.0
# 卸载
[root@localhost ~]# rpm -e nginx (软件包名称)
[root@localhost ~]# nginx -v
-bash: /usr/sbin/nginx: No such file or directory
[root@localhost ~]#
# 查看系统当中安装了哪些rpm软件包
rpm -qa
# 查看系统当中是否安装了某个rpm软件包
[root@localhost ~]# rpm -q nginx(软件包名)
nginx-1.18.0-1.el7.ngx.x86_64
[root@localhost ~]# rpm -q safsdgsfdgfd
package safsdgsfdgfd is not installed
# 显示已经安装过的rpm包详细信息。
[root@localhost ~]# rpm -qi nginx
Name : nginx
Epoch : 1
Version : 1.18.0
Release : 1.el7.ngx
Architecture: x86_64
Install Date: Wed 17 Mar 2021 04:18:55 PM CST
Group : System Environment/Daemons
Size : 2830028
License : 2-clause BSD-like license
Signature : RSA/SHA1, Tue 21 Apr 2020 11:19:18 PM CST, Key ID abf5bd827bd9bf62
Source RPM : nginx-1.18.0-1.el7.ngx.src.rpm
Build Date : Tue 21 Apr 2020 11:07:33 PM CST
Build Host : ip-10-1-17-101.eu-central-1pute.internal
Relocations : (not relocatable)
Vendor : Nginx, Inc.
URL : http://nginx/
Summary : High performance web server
Description :
nginx [engine x] is an HTTP and reverse proxy server, as well as
a mail proxy server.
# 查看安装包的内容
[root@localhost nginx]# rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_params
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/modules
/etc/nginx/nginx.conf
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
/etc/nginx/win-utf
/etc/sysconfig/nginx
/etc/sysconfig/nginx-debug
/usr/lib/systemd/system/nginx-debug.service
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx
/usr/lib64/nginx/modules
/usr/libexec/initscripts/legacy-actions/nginx
/usr/libexec/initscripts/legacy-actions/nginx/check-reload
/usr/libexec/initscripts/legacy-actions/nginx/upgrade
/usr/sbin/nginx
/usr/sbin/nginx-debug
/usr/share/doc/nginx-1.18.0
/usr/share/doc/nginx-1.18.0/COPYRIGHT
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx
/usr/share/nginx/html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/var/cache/nginx
/var/log/nginx
# 查看配置信息
[root@localhost nginx]# rpm -qc nginx
/etc/logrotate.d/nginx
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_params
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/nginx.conf
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
/etc/nginx/win-utf
/etc/sysconfig/nginx
/etc/sysconfig/nginx-debug
# 查看文件帮助信息
[root@localhost nginx]# rpm -qd zlib
/usr/share/doc/zlib-1.2.7/ChangeLog
/usr/share/doc/zlib-1.2.7/FAQ
/usr/share/doc/zlib-1.2.7/README
#
[root@localhost ~]# rpm -qf /usr/sbin/nginx
nginx-1.18.0-1.el7.ngx.x86_64
# 用 -p 可以查看未安装软件包的详细信息
[root@localhost ~]# rpm -qip nginx-1.18.0-1.el7.ngx.x86_64.rpm
warning: nginx-1.18.0-1.el7.ngx.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
Name : nginx
Epoch : 1
Version : 1.18.0
Release : 1.el7.ngx
Architecture: x86_64
Install Date: (not installed)
Group : System Environment/Daemons
Size : 2830028
License : 2-clause BSD-like license
Signature : RSA/SHA1, Tue 21 Apr 2020 11:19:18 PM CST, Key ID abf5bd827bd9bf62
Source RPM : nginx-1.18.0-1.el7.ngx.src.rpm
Build Date : Tue 21 Apr 2020 11:07:33 PM CST
Build Host : ip-10-1-17-101.eu-central-1pute.internal
Relocations : (not relocatable)
Vendor : Nginx, Inc.
URL : http://nginx/
Summary : High performance web server
Description :
nginx [engine x] is an HTTP and reverse proxy server, as well as
a mail proxy server.
# 升级软件包
[root@localhost ~]# rpm -Uvh nginx-1.18.0-1.el7.ngx.x86_64.rpm
warning: nginx-1.18.0-1.el7.ngx.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:nginx-1:1.18.0-1.el7.ngx ################################# [ 50%]
Cleaning up / removing...
2:nginx-1:1.14.0-1.el7_4.ngx ################################# [100%]
[root@localhost ~]# nginx -v
nginx version: nginx/1.18.0
# 强制删除软件包--nodeps
[root@localhost ~]# rpm -e zlib --nodeps
yum
yum是CentOS的软件包管理工具,自动为我们解决软件依赖问题。yum包管理工具必须使用yum源指定软件下载地址去下载需要安装的软件包。配置的路径是:/etc/yum.repos.d
- yum源的执行原理
1、需要在/etc/yum.repos.d/目录下配置yum源地址
2、清空缓存建立新的缓存
3、安装软件(自动解决依赖关系)
- yum常用的基础命令
# 安装软件包的命令
yum install 软件包名称
-y : 免交互安装
# 卸载软件(直接将软件的依赖包一起删除)
yum remove 软件包名称
[root@www yum.repos.d]# yum remove httpd
-y : 免交互移除
# 查看当前系统需要更新软件
yum check-update
# 更新所有的需要更新的软件
yum update
-y : 免交互
# 更新某一个软件
yum update (软件包名称)
# 重装软件
yum reinstall (软件包名称)
# 搜索软件包
[root@www httpd]# yum search (软件包名称)
#建立依赖关系 yum crearepo 仓库名称(不知道可以用yum repolist 查看)
# 查看yum执行历史
yum history
[root@www httpd]# yum history info (历史ID号)
[root@www httpd]# yum history undo (历史ID号)
# 查看当前系统当中可更新的软件包
[root@www yum.repos.d]# yum check-update
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
postfix.x86_64 2:2.10.1-9.0.1.el7.centos.plus centosplus
python-perf.x86_64 3.10.0-1160.15.2.el7.centos.plus centosplus
[root@www yum.repos.d]#
# 查看系统中有哪些仓库地址
yum repolist # 正在启用的yum仓库
[root@www yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
base/7/x86_64 CentOS-7 - Base - repo.huaweicloud 10,072
extras/7/x86_64 CentOS-7 - Extras - repo.huaweicloud 453
updates/7/x86_64 CentOS-7 - Updates - repo.huaweicloud 1,729
yum repolist all # 查看系统中所有的yum仓库
[root@www yum.repos.d]# yum repolist all
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
base/7/x86_64 CentOS-7 - Base - repo.huaweicloud enabled: 10,072
centosplus/7/x86_64 CentOS-7 - Plus - repo.huaweicloud disabled
extras/7/x86_64 CentOS-7 - Extras - repo.huaweicloud enabled: 453
updates/7/x86_64 CentOS-7 - Updates - repo.huaweicloud enabled: 1,72
# 启用repo仓库
yum install yum-utils -y
启用一个yum仓库:yum-config-manager --enable (仓库名称)
关闭一个yum仓库:yum-config-manager --disable (仓库名称)
# 查看一个仓库中的软件包列表
[root@www yum.repos.d]# yum list
# 查看软件包组
[root@www yum.repos.d]# yum grouplist
# 安装软件包组
[root@www yum.repos.d]# yum groupinstall "Development Tools"
yum仓库
1、克隆两台主机
yum仓库主机
外网地址:192.168.15.30
内网地址:172.16.1.30
yum测试主机
外网地址:192.168.15.31
内网地址:172.16.1.31
修改的命令:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
vim /etc/sysconfig/network-scripts/ifcfg-eth1
重启网卡:systemctl restart network
修改主机名:
yum仓库主机:hostnamectl set-hostname warehouse
yum测试主机:hostnamectl set-hostname yum-test
执行bash
2、配置yum仓库
1、需要有一个软件包目录,存放软件包的
[root@warehouse ~]# mkdir /backup
1.1、缓存yum安装下载的软件包
[root@warehouse 7]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1
[root@warehouse ~]# yum install mariadb -y
1.2、将缓存的软件包复制到yum仓库目录
[root@warehouse ~]# cd /var/cache/yum/x86_64/7/base/packages/
[root@warehouse packages]# cp -rp ./* /backup/
[root@warehouse packages]# cd /backup/
[root@warehouse backup]# ll
total 8964
-rw-r--r-- 1 root root 9175948 Oct 15 02:55 mariadb-5.5.68-1.el7.x86_64.rpm
2、建立软件包依赖关系
[root@warehouse backup]# yum install createrepo -y
[root@warehouse backup]# createrepo /backup/
Spawning worker 0 with 1 pkgs
Spawning worker 1 with 0 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@warehouse backup]# ll
total 8968
-rw-r--r-- 1 root root 9175948 Oct 15 02:55 mariadb-5.5.68-1.el7.x86_64.rpm
drwxr-xr-x 2 root root 4096 Mar 18 08:54 repodata
[root@warehouse backup]# ll repodata/
total 28
-rw-r--r-- 1 root root 1970 Mar 18 08:54 5d54624b2aa7a1fe974ff5553a9a78289683189c6a7b60c8c1421ecf011d270f-other.sqlite.bz2
-rw-r--r-- 1 root root 3449 Mar 18 08:54 5e68ee34f7e8f1a11a039f55c990bcc044f16bceb6af7f4486b55d518ad91346-primary.sqlite.bz2
-rw-r--r-- 1 root root 539 Mar 18 08:54 6e94b0fa1d98955542fb8238348ea171be7a130ba97573eb3ac756e1aadcec50-filelists.xml.gz
-rw-r--r-- 1 root root 1291 Mar 18 08:54 a9afb0b2457f41f5c2d64744a07d5d12599e6c2588c870ae73568cf345a0abca-other.xml.gz
-rw-r--r-- 1 root root 1333 Mar 18 08:54 cf41627875b17ef4bea5f0ea566ac63a5c83adc606d3ca730a74944ceb969028-primary.xml.gz
-rw-r--r-- 1 root root 1158 Mar 18 08:54 f34cbfd9e5608e8402041e98100f853e913f3df04d6946874c73ba31a78969ba-filelists.sqlite.bz2
-rw-r--r-- 1 root root 2969 Mar 18 08:54 repomd.xml
[root@warehouse backup]#
3、测试连接(本地版本)
1、备份系统所有的yum源
[root@warehouse yum.repos.d]# cd /etc/yum.repos.d/
[root@warehouse yum.repos.d]# mkdir backup1
[root@warehouse yum.repos.d]# mv *.repo backup1
[root@warehouse yum.repos.d]# vim local.repo
[local]
name="This is xxx"
baseurl=file:///backup
gpgcheck=0
enabled=1
# 清理yum缓存
[root@warehouse ~]# yum clean all
[root@warehouse ~]# rm -rf /var/cache/yum/x86_64/7/*
# 生成新的yum缓存
[root@warehouse ~]# yum makecache
# 测试连接
[root@warehouse yum.repos.d]# rpm -e mariadb
[root@warehouse yum.repos.d]# rpm -ql mariadb
package mariadb is not installed
[root@warehouse yum.repos.d]# yum install mariadb
4、测试连接(远程版本)
######################### yum仓库机器上执行 ###################################
1、备份系统所有的yum源
[root@warehouse yum.repos.d]# cd /etc/yum.repos.d/
[root@warehouse yum.repos.d]# mkdir local
[root@warehouse yum.repos.d]# mv *.repo local
2、安装远程访问软件
[root@warehouse yum.repos.d]# cd /etc/yum.repos.d/
[root@warehouse yum.repos.d]# mv backup1/* .
[root@warehouse yum.repos.d]# yum install vsftpd -y
[root@warehouse yum.repos.d]# systemctl enable --now vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
3、配置系统yum仓库
[root@warehouse yum.repos.d]# cd /var/ftp
[root@warehouse ftp]# mkdir yum_warehouse
4、将软件包复制到yum仓库目录
[root@warehouse ftp]# cp -rp /backup/* /var/ftp/yum_warehouse/
[root@warehouse ftp]# ll yum_warehouse/
total 8968
-rw-r--r-- 1 root root 9175948 Oct 15 02:55 mariadb-5.5.68-1.el7.x86_64.rpm
drwxr-xr-x 2 root root 4096 Mar 18 08:54 repodata
5、建立yum软件包依赖关系
[root@warehouse ftp]# createrepo /var/ftp/yum_warehouse/
######################### yum测试机器上执行 ###################################
1、本机测试网络连接
1、备份系统所有的yum源
[root@warehouse ftp]# cd /etc/yum.repos.d/
[root@warehouse yum.repos.d]# mv *.repo backup1
[root@warehouse yum.repos.d]# vim local.repo
[root@warehouse yum.repos.d]# cat local.repo
[local-ftp]
name="This is ftp server"
baseurl=ftp://172.16.1.30/yum_warehouse
gpgcheck=0
enabled=1
# 清理yum缓存
[root@warehouse ~]# yum clean all
[root@warehouse ~]# rm -rf /var/cache/yum/x86_64/7/*
# 生成新的yum缓存
[root@warehouse ~]# yum makecache
# 测试连接
[root@warehouse yum.repos.d]# rpm -e mariadb
[root@warehouse yum.repos.d]# rpm -ql mariadb
package mariadb is not installed
[root@warehouse yum.repos.d]# yum install mariadb
2、yum测试机器执行
1、备份yum仓库内容
[root@yum-test ~]# cd /etc/yum.repos.d/
[root@yum-test yum.repos.d]# mkdir backup1
[root@yum-test yum.repos.d]# mv *.repo backup1
[root@yum-test yum.repos.d]# ll
total 0
drwxr-xr-x. 2 root root 187 Mar 4 09:55 backup
drwxr-xr-x 2 root root 220 Mar 18 09:20 backup1
[root@yum-test yum.repos.d]#
2、编写本地yum源配置文件
[root@yum-test yum.repos.d]# vim local.repo
[root@yum-test yum.repos.d]# cat local.repo
[loacl-ftp-30]
name="This is 30 ftp server"
baseurl=ftp://172.16.1.30/yum_warehouse
gpgcheck=0
enabled=1
3、清理yum缓存
[root@yum-test yum.repos.d]# yum clean all
[root@yum-test yum.repos.d]# rm -rf /var/cache/yum/x86_64/7/*
4、生成yum缓存
[root@yum-test yum.repos.d]# yum makecache
5、测试安装
[root@yum-test yum.repos.d]# yum install mariadb
4、同步远程yum仓库内容到本机
1、安装华为云镜像仓库
[root@warehouse yum.repos.d]# rm -rf /etc/yum.repos.d/*
[root@warehouse yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud/repository/conf/CentOS-7-reg.repo
2、生成yum缓存
[root@warehouse yum.repos.d]# yum clean all
[root@warehouse yum.repos.d]# rm -rf /var/cache/yum/x86_64/7/*
[root@warehouse yum.repos.d]# yum makecache
3、同步华为云镜像站软件包到本地yum仓库
[root@warehouse ftp]# yum install yum-utils -y
[root@warehouse ftp]# reposync -r (仓库名称:yum repolist)
4、建立依赖关系
[root@warehouse ftp]# createrepo base
5、测试
[loacl-ftp-30]
name="This is 30 ftp server"
baseurl=ftp://172.16.1.30/base
gpgcheck=0
enabled=1
yum网络仓库同步到本地仓库 并且把yum源共享给另外一台机
yum是一个软件包管理工具,配置yum源路径/etc/yum.repos.d
简便方法:一
一、两台机(建立如上)保证机器可以联网
二、在本地仓库机器上按照如下步骤操作
vim /etc/yum.conf
将下图的0改为1(默认为0,意为安装成功后立即删除安装包)
[root@warehouse 7]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1
1、在命令行中输入:
yum install createrepo vsftpd wget -y #这三个软件下面要用到,没有请自行安装
2、安装成功后: 输入:systemctl enable --now vsftpd #立即启用ftp
3、rm -rf /etc/yum.repos.d/* #删除本地源
4、wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud/repository/conf/CentOS-7-reg.repo #将华为源同步到本地(也可采用其他源,阿里云、163自行更改)
5、cd /var/ftp #此处一定要切换目录
6、yum install yum-utils -y
7、reposync -r (仓库名称,不知道的可以用yum repolist查看) #将网络仓库保存到本地
8、同步好以后输入:createrepo base #建立依赖关系
9、输入vim /etc/yum.repos.d/local.repo将以下内容粘贴即可:
[loacl-ftp-30] #仓库名,可自定义
name="This is 30 ftp server" #描述信息
baseurl=ftp://172.16.1.30(自己的内网地址或外网地址)/base #yum源地址
gpgcheck=0 #0不检查秘钥,1为检查秘钥
enabled=1 #1为启用,0为不启用
2.在远程测试机上输入
vim /etc/yum.conf
将下图的0改为1(默认为0,意为安装成功后立即删除安装包)
[root@warehouse 7]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1
rm -rf /etc/yum.repos.d/*
输入vim /etc/yum.repos.d/local.repo将以下内容粘贴即可:
[loacl-ftp-30] #仓库名,可自定义
name="This is 30 ftp server" #描述信息
baseurl=ftp://172.16.1.30(与本地仓库机的配置文件地址相同即可)/base #yum源地址
gpgcheck=0 #0不检查秘钥,1为检查秘钥
enabled=1 #1为启用,0为不启用
#测试环境
yum clean all #清除缓存
yum makecache #生成新缓存
yum install zsh #安装zsh软件
yum repolist #查看本地下载源仓库,此时应该只有一个ftp源
#安装vsftpd、createrepo、yum-utils
#b、在vsftpd管理目录创建仓库
#c、存放软件到仓库的目录
#d、创建软件包依赖关系
#e、编写yum源文件(必须放在/etc/yum.repos.d并且要以.repo结尾)
#f、清除缓存并测试
简便方法:二
1.建立本地源
挂载镜像
安装命令 yum install -y createrepo vsftpd wget
在/etc/yum.repo.d/ 把以 .repo 结尾的所有源移动到新文件夹里
在/etc/yum.conf/里 修改成1
查看自己的仓库 yum repolist
在/etc/yum.repos.d/ 建立自己的本地源(只要以 .repo结尾就可以) vim mm.repo
baseurl=file:///mnt (镜像)
查看仓库 yum repolist
清空缓存 clean 生成新缓存
2.ftp源(网络原)
挂载镜像
mount /mnt/sr0 /opt
在/etc/yum.repos.d/里 mkdir xxx mv * .repo /etc/yum.repos.d/xxx
把/etc/yum.conf 改为一
systemctl start vsftpd
systemctl status vsfpd (running 开启)
在/var/ftp/ 下新建文件夹 (mkdir aaa)
cp -rp /mnt/prckages/* /var/ftp/aaa
在/var/ftp/下 createrepo /var/ftp/aaa
在/etc/yum.repos.d/下 新建ftp源 5行 baseurl=ftp://ip地址/aaa (ftp下的文件夹以 .repo 结尾)
清空缓存 生成新缓存
3.测试机
在/etc/yum.conf 里查看是否为1
在/etc/yum.repos.d/新建文件夹 把所有的源移动到新建文件夹里
编辑连接ftp源 vim bbb.repo 5行 baseurl=ftp://ip地址/aaa (ftp下的文件夹以 .repo 结尾)
查看yum仓库 yum repolist
清空缓存 生成新缓存
测试 yum remove tree yum install tree -y
简便方法:二
1.建立本地源
挂载镜像
安装命令 yum install -y createrepo vsftpd wget
在/etc/yum.repo.d/ 把以 .repo 结尾的所有源移动到新文件夹里
在/etc/yum.conf/里 修改成1
查看自己的仓库 yum repolist
在/etc/yum.repos.d/ 建立自己的本地源(只要以 .repo结尾就可以) vim mm.repo
baseurl=file:///mnt (镜像)
查看仓库 yum repolist
清空缓存 clean 生成新缓存
2.ftp源(网络原)
挂载镜像
mount /mnt/sr0 /opt
在/etc/yum.repos.d/里 mkdir xxx mv * .repo /etc/yum.repos.d/xxx
把/etc/yum.conf 改为一
systemctl start vsftpd
systemctl status vsfpd (running 开启)
在/var/ftp/ 下新建文件夹 (mkdir aaa)
cp -rp /mnt/prckages/* /var/ftp/aaa
在/var/ftp/下 createrepo /var/ftp/aaa
在/etc/yum.repos.d/下 新建ftp源 5行 baseurl=ftp://ip地址/aaa (ftp下的文件夹以 .repo 结尾)
清空缓存 生成新缓存
3.测试机
在/etc/yum.conf 里查看是否为1
在/etc/yum.repos.d/新建文件夹 把所有的源移动到新建文件夹里
编辑连接ftp源 vim bbb.repo 5行 baseurl=ftp://ip地址/aaa (ftp下的文件夹以 .repo 结尾)
查看yum仓库 yum repolist
清空缓存 生成新缓存
测试 yum remove tree yum install tree -y
源码包安装
三种:rpm、yum、源码包安装
1、源码安装nginx
- 下载源码包
wget http://nginx/download/nginx-1.18.0.tar.gz
tar -xf nginx-1.18.0.tar.gz -C /opt
cd /opt/nginx-1.18.0
# 就可以看到nginx源代码
# 第二种方式:https://repo.huaweicloud/epel/7/x86_64/Packages/n/
wget https://repo.huaweicloud/epel/7/x86_64/Packages/n/nginx-1.16.1-3.el7.x86_64.rpm
- 直接编译
# 编译前,系统检测
[root@www nginx-1.18.0]# ./configure
# 如果出现对应的错误,则执行下面命令
[root@www nginx-1.18.0]# yum install pcre pcre-devel -y
[root@www nginx-1.18.0]# yum install zlib zlib-devel -y
# 开始编译
make
-j : 使用多核编译
# 安装
make install PROFIX=/usr/local
# 测试
[root@www ~]# /usr/local/nginx/sbin/nginx
# 环境变量
## 添加环境变量
/etc/profile # 所用用户的环境变量
/root/.bash_profile # 当前用户的环境变量
NGINX_HOME=/usr/local/nginx/sbin
PATH=$PATH:$NGINX_HOME
export PATH
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/root/.local/bin
/root/bin
/root/.local/bin
/root/bin
/usr/local/nginx/sbin
习题:
# 源码包编译 PHP
https://www.php/distributions/php-7.4.16.tar.gz
第一步 :下载安装PHP
wget -O /opt/ php.tar.gz https://www.php/distributions/php-7.4.16.tar.gz
或者
cd/opt
wget php.tar.gz https://www.php/distributions/php-7.4.16.tar.gz
第二步 解压
tar xvf php.tar.gz
第三步 直接编译
1. #编译测试
. - 在cd /opt/php-7.4.16/ 目录下测试
输入 ./configure
2.# 如果出现对应的错误,则执行下面命令
#报错
#解决
yum install libxml2 ibxml2-devel
**# libxml2安装包有的话无需添加**
#报错
configure: error: Package requirements (sqlite3 > 3.7.4) were not met:
No package 'sqlite3' found
#解决
yum install sqlite sqlite-devel
**# sqlite安装包有的话无需添加**
# 开始编译 make -j : 使用多核编译
> 这里是引用
# 安装 make install PROFIX=/usr/local
3. #执行 ./configure 命令时,可能会因为 Linux 尚未安装某些库而报错,
安装即可解决。
配置成功后会看到授权信息
Generating files
configure: creating ./config.status
creating main/internal_functions.c
creating main/internal_functions_cli.c
+--------------------------------------------------------------------+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+--------------------------------------------------------------------+
4.#HP 源码的 ext 目录中,有大量的扩展 ls
[root@mm_centos php-7.2.12]# ls
acinclude.m4 configure.ac libtool modules README.NEW-OUTPUT-API scripts
aclocal.m4 CONTRIBUTING.md LICENSE NEWS README.PARAMETER_PARSING_API server-tests-config.php
appveyor CREDITS ltmain.sh pear README.REDIST.BINS server-tests.php
build ext main php7.spec README.RELEASE_PROCESS snapshot
buildconf EXTENSIONS makedist php7.spec.in README.SELF-CONTAINED-EXTENSIONS stamp-h.in
buildconf.bat footer Makefile php.gif README.STREAMS tests
CODING_STANDARDS generated_lists Makefile.frag php.ini-development README.SUBMITTING_PATCH travis
config.guess genfiles Makefile.fragments php.ini-production README.TESTING TSRM
config.log header Makefile.gcov README.EXT_SKEL README.TESTING2 UPGRADING
config.nice include Makefile.global README.GIT-RULES README.UNIX-BUILD-SYSTEM UPGRADING.INTERNALS
config.status INSTALL Makefile.objects README.input_filter README.WIN32-BUILD-SYSTEM vcsclean
config.sub install-sh missing README.MAILINGLIST_RULES run-tests.php win32
configure libs mkinstalldirs README.md sapi Zend
[root@VM_139_38_centos php-7.2.12]# ls ext/
bcmath dba filter imap mysqli pcre pdo_pgsql recode soap sysvsem xmlrpc
bz2 dom ftp interbase mysqlnd pdo pdo_sqlite reflection sockets sysvshm xmlwriter
calendar enchant gd intl oci8 pdo_dblib pgsql session sodium tidy xsl
com_dotnet exif gettext json odbc pdo_firebird phar shmop spl tokenizer zend_test
ctype ext_skel gmp ldap opcache pdo_mysql posix simplexml sqlite3 wddx zip
curl ext_skel_win32.php hash libxml openssl pdo_oci pspell skeleton standard xml zlib
date fileinfo iconv mbstring pcntl pdo_odbc readline snmp sysvmsg xmlreader
默认路径 /usr/bin/php
# 测试
[root@2021~]# /usr/bin/php
# 环境变量
5. # 添加环境变量
/etc/profile # 所用用户的环境变量
/root/.bash_profile # 当前用户的环境变量
phg_mm=/usr/bin/
PATH=$PATH:$phg_mm
export PATH
6. #加载生效
source /root/.bash_profile
7.正常安装使用
php -m
进程
程序:存放代码的文件 静态
进程:正在运行的程序 动态
CPU:中央处理器 运算
内存:存储CPU计算使用的临时数据
存储:用来存放文件的
进程和线程
僵尸进程和孤儿进程
僵尸进程:进程生命周期结束了,但是PID未被回收
孤儿进程:父进程生命周期结束了,但是子进程未结束,子进程被系统进程接收
进程的状态:运行态 就绪态 阻塞态
ps 查看进程
# 命令:ps, 默认查看当前进程
# 参数
-a : 查询所有进程
-x : 查看后台所有的进程
-u : 查看进程的用户
USER : 开启当前进程的用户
PID : 当前进程的ID号
%CPU : CPU的使用率
%MEM : 内存使用率
VSZ : 进程启动时默认向计算机申请的内存
RSS : 进程运行时实际使用的内存
TTY : 进程运行的终端
?: 后台运行(没有终端)
tty:使用系统终端
pts:使用虚拟终端
STAT :进程运行状态
R : 正在运行中的进程
+ : 在前台运行
S : 睡眠中状态
D : 不可中断睡眠
T : 停止状态
Z : 僵尸状态
X : 死掉的进程
< : 优先级较高的进程
N :优先级较低的进程
s : 包含子进程 yum install psmisc -y
l : 已线程的方式运行
| : 代表管道
START : 进程的启动时间
TIME : 占用CPU的时间
COMMAND : 进程执行的命令
-e : 显示所有的进程
-f : 格式化输出同时显示PPID
查看进程树
[root@egon ~]# rpm -qf `which pstree`
psmisc-22.20-16.el7.x86_64
[root@egon ~]# pstree
[root@egon ~]# pstree 104239
bash───bash───bash───bash───pstree
查看ppid
[root@egon ~]# ps -ef | head -10
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 11⽉01 ? 00:00:07 /usr/lib/systemd/systemd - -system --deserialize 20
root 2 0 0 11⽉01 ? 00:00:00 [kthreadd]
root 4 2 0 11⽉01 ? 00:00:00 [kworker/0:0H]
top(动态查看)
# 根据一定频率的去监控系统
up前是系统时间
up后是开启的时间
load average: 0.01, 0.42, 0.73
0.01 : 一分钟平均负载
0.42 : 五分钟平均负载
0.73 : 十五分钟平均负载
平均负载:单位时间内,系统处于可运⾏状态和不可中断状态的平均进程数(一般核心数4 平均负载2 属于正常状态 )
# CPU加压工具
stress --cpu [需要加压的系统核心数] --timeout [加压的时间]
# CPU 性能加压工具
## 添加epel源(epel源主要用来安装红帽系列操作系统附加软件)
yum install stress -y
# CPU 性能分析工具
yum install sysstat -y
mpstat -P ALL 3
# 进程性能分析⼯具
pidstat -u 1 5
Tasks
Tasks: 125 total, 1 running, 124 sleeping, 0 stopped, 0 zombie
total : 当前系统一共运行的是125个进程
running : 正在运行的是1个
sleeping : 124个处于睡眠状态
stopped : 停止运行的进程数
zombie :僵尸进程数
%Cpu0 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
us :在单位时间进程使用CPU所占用的时间百分比
sy : 在单位时间内系统进程占用CPU时间百分比
ni : 在单位时间内优先使用CPU所占时间百分比
id :在单位时间内CPU空闲所占时间百分比
wa : 在单位时间内CPU阻塞态所占CPU时间的百分比
hi : 硬件中断
si : 软件中断
st : 其他占用CPU时间百分比
KiB Mem : 2027892 total, 1234180 free, 176352 used, 617360 buff/cache
total :系统总内存
free :系统空闲内存
used : 系统使用内存
buff/cache : 缓存使用内存
avail Mem :总共剩余可用的内存(交换内存和物理内存都算在内)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID : 进程编号
USER : 启动进程的用户
PR : 优先级
NI :nice值
VIRT : 虚拟内存
RES : 使用内存
SHR : 共享内存
%CPU : cpu使用率
%MEM :内存使用率
top快捷键
按1 : 展示所有的CPU的详情
按s : 设置top监控频率(默认3秒)
按M : 按照内存排序
按z : 添加颜色
按p : 按照CPU排序
按l : 展示CPU总负载(默认显示)
top的参数
-d : 设置top的刷新频率
-p : 设置查看的进程PID
top -d 1 -p `pgrep nginx | head -1`
-u : 查询指定用户的经常的进程
top -u oldboy
-n : 表示查询n次
top -d 0.1 -u oldboy -n 20
设置进程的nice值(优先级)
# 设置进程的优先级
nice -n -11 bash test.sh
-n : 设置优先级
普通用户:(0~19)
超级用户:(-20~19)
# 给指定进程设置优先级
renice [设置优先级] pid
Linux系统信号
kill -l # 列出所有⽀持的信号
中断信号
ctrl + c
ctrl + z
INT(2) :
kill -[信号名称|信号ID] pid
kill -SIGINT PID
kill -INT PID
kill -2 PID
退出信号:
ctrl + d
暂停信号:将进程暂停
SIGTSTP(20)
kill -20 PID
kill -SIGTSTP PID
kill -TSTP PID
杀死进程信号
SIGKILL
kill -9 PID
kill -SIGKILL PID
kill -KILL PID
注:不能够被捕捉
终止信号
SIGTREM
kill -15 PID
kill -SIGTERM PID
kill -TERM PID
注:优雅终止进程
暂停和恢复信号
kill -19 SIGSTOP :暂停
kill -18 SIGCONT : 恢复
重载信号
SIGHUP(1)
# 1、启动vsftpd服务
[root@egon ~]# systemctl start vsftpd # 默认匿名⽤户共享根⽬录为/var/ftp
[root@egon ~]# ls /var/ftp/
centos7 pub
[root@egon ~]#
# 2、打开浏览器,输⼊ftp://192.168.100.40/,看到的是/var/ftp下的内容
#开启 systemctl start nginx
#查看 systemctl status nginx
#关闭 systemctl stop nginx
如果我们想让我们的进程在后台⼀直运⾏,不要因为⽤户注销(logout)或者⽹络断开或者终端关闭⽽
⼀起被⼲掉,那么我们有两种解决⽅案
⽅案1:让进程忽略Linux HUP信号
⽅案2:让进程运⾏在新的会话⾥,从⽽成为不属于此终端的⼦进程,就不会在当前终端挂掉的情
况下⼀起被带走
1、nohup [执行的命令] &
后台启动,会在当前目录生成一个nohub.out文件,用于执行的命令的输出。
2、setsid : 实际上开了一个孤儿进程
3、(执行的命令&) echo $$ 查看当前的pid
4、screen 开启一个子窗口
# 1、安装
[root@egon ~]# yum install screen -y
# 2、运⾏命令
⽅式⼀:开启⼀个窗⼝并⽤-S指定窗⼝名,也可以不指定
[root@egon ~]# screen -S egon_dsb
netstat(查看网络状态)
netstat主要用来查询系统端口相关问题
注:要使用netstat,需要安装yum install -y net-tools
# netstat常用参数
-t : 打印tcp链接的进程
-u : 打印UDP链接的进程
-l : 监听
-p : 打印进程的PID
-n : 不反解,不将ip地址解析成域名同时不将端口解析成对应的协议名称
netstat -nutlp # 查看正在监听的,且使⽤tcp协议的进程
proc文件系统
查看cpu信息:/proc/cpuinfo
root@localhost ~]# cat /proc/cpuinfo
==flags
lm(64位)
vmx ⽀持虚拟化 Intel
svm ⽀持虚拟化 AMD
[root@localhost ~]# egrep --color 'lm|vmx|svm' /proc/cpuinfo
[root@localhost ~]# lscpu
查看内核uname -a
查看内存 proc meminfo
[root@egon ~]# less /proc/meminfo
[root@egon ~]# free -wm
内核启动参数:/proc/cmdline
[root@localhost ~]# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.10.0-1127.13.1.el7.x86_64 root=UUID=84b5cfa6-b0dc- 4d7a-a8fd-0302f0eb2f04 ro rhgb quiet LANG=zh_CN.UTF-8 [root@localhost ~]# uptime
17:42:40 up 1 day, 1:33, 2 users, load average: 0.00, 0.01, 0.05
12345
注意:当我们卸载/proc后
root@localhost ~]# umount /proc -l
# 下述命令都不可⽤
free -m
uptime
lscpu
toop
# 重新挂在
[root@localhost ~]# mount -t proc proc /proc/
-t proc 指定⽂件系统的类型
proc ⽂件系统,虚拟⽂件系统
/proc 挂载点
管道
管道⽤于进程间通信
详细地说,管道操作符号 "|" ,主要⽤来连接左右两个命令, 将左侧的命令的标准输出, 交给右侧命令的
标准输⼊
PS: ⽆法传递标准错误输出⾄后者命令
格式: cmd1 | cmd2 [...|cmdn]
[root@localhost ~]# ps aux |grep "httpd"
[root@localhost ~]# yum list |grep nginx
管道之tee
-a 追加
重定向与 tee 他们在使⽤过程中有什么区别
[root@egon ~]# date > date.txt #直接将内容写⼊date.txt⽂件中
[root@egon ~]# date |tee date.txt #命令执⾏会输出⾄屏幕,但会同时保存⼀份⾄date.txt⽂件中
分区
#1、逻辑分区属于扩展分区,扩展分区属于主分区
#2、主分区⼜叫做引导分区,是可以安装系统的分区
MBR 分区,MBR 的意思是 "主引导记录"。MBR 最⼤⽀持 2TB 容量,在容量⽅⾯存在着极⼤的瓶
颈。
GPT 分区,GPT 意为 GUID 分区表,它⽀持的磁盘容量⽐ MBR ⼤得多。这是⼀个正逐渐取代 MBR
的新标准,它是由 UEFI 辅住⽽形成的,将来 UEFI ⽤于取代⽼旧的 BIOS,⽽ GPT 则取代⽼旧的
MBR。
fdisk ⼯具⽤于 MBR 格式
gdisk ⼯具⽤于 GPT 格式
# 查看系统磁盘
[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 18G 0 lvm /
└─centos-swap 253:1 0 1G 0 lvm [SWAP]
sdb 8:16 0 40G 0 disk
sdc 8:32 0 3.9T 0 disk
# 分区
[root@localhost ~]# fdisk /dev/sdb
n : 新建一个分区
p : 查看分区情况
m :查看帮助
d : 删除分区
w ;保存分区修改内容
使用文件系统的流程
1、装硬盘
2、查看当前系统硬盘
[root@localhost a]# 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 18G 0 lvm /
└─centos-swap 253:1 0 1G 0 lvm [SWAP]
sdb 8:16 0 40G 0 disk
sdc 8:32 0 3.9T 0 disk
sr0 11:0 1 4.3G 0 rom
3、分区
2TB 以下的硬盘,使用MBR分区
2TB 以上的硬盘,使用GPT分区
fdisk /dev/sdb
4、格式化分区(将分区做成文件系统)
mkfs.xfs /dev/sdb1
5、挂载分区
mount /dev/sdb1 /a
6、检测
df
-h : 显示硬盘大小单位
# 注:挂载哪个硬盘则显示对应硬盘里面的内容
MBR分区
1、安装新的硬盘
2、查看硬盘 lsblk
#fdisk -l /dev/sdb1 查看单个分区信息
[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 18G 0 lvm /
└─centos-swap 253:1 0 1G 0 lvm [SWAP]
sdb 8:16 0 40G 0 disk
sdc 8:32 0 3.9T 0 disk
3、开始分区
[root@localhost ~]# fdisk /dev/sdb
n : 新建一个分区
p : 查看分区情况
m :查看帮助
d : 删除分区
w ;保存分区修改内容
4、创建文件系统
mkfs.xfs /dev/sdb1 # 注:-f : 覆盖
5、挂载
mount /dev/sdb1 /a
GPT分区
1、GPT和MBR之间的区别?
MBR分区格式支持2TB以下硬盘分区,GPT分区格式支持2TB以上硬盘分区。
2、准备一块2TB以上硬盘
# 注:分2TB以上硬盘,fdisk可以使用但是不推荐。
3、GPT分区步骤
[root@localhost ~]# gdisk /dev/sdb
n : 创建一个新的分区
d : 删除一个分区
p : 查看分区列表
w : 保存分区
?: 查看帮助
4、格式化文件系统
mkfs.xfs /dev/sdc1
5、挂载目录
mount /dev/sdc /a
硬盘自动挂载
1、开机自动挂载
开机自动执行:/etc/rc.local
chmod +x /etc/ec.local
echo "mount /dev/sdc1 /root/test" >> /etc/rc.local
2、修改配置文件 /etc/fstab
/dev/sdc100 /opt xfs defaults 0 0
设备 挂载点 文件系统类型 挂载类型 是否备份 是否检测
UUID=1327e665-44b3-4223-a93b-69c36ec602f9 /root/oldboy xfs defaults 0 0
/dev/sdc100 等价于 UUID
3、查询设备UUID
[root@localhost ~]# blkid
/dev/sdc1: UUID="b5797ad6-9b98-452c-8962-fa12f6590fa6" TYPE="xfs" PARTLABEL="Linux filesystem"
#mount -a 挂载文件不用重启
#partprobe 更新分区表
制作SWAP分区
#free -m 查看swap分区
1、创建一个硬盘分区
fdisk
2、制作swap分区
mkswap /dev/sdb3
3、激活swap
swapon /dev/sdb3
4、关闭swap
swapoff
#free -m 查看
#swapon -s 查看所有swap挂载
5、自动挂载
5.1、
echo "mkswap /dev/sdb3" >> /etc/rc.local
echo "swapon /dev/sdb3" >> /etc/rc.local
5.2、
echo "/dev/sdb3 swap swap defaults 0 0" >> /etc/fstab
dd命令
dd if=/dev/zero of=/dev/sdb bs=500M count=1
if : 从哪里读文件
of : 写入到哪里
bs : 写入500M
count : 写一块
模拟文件系统出问题
1、直接向硬盘中写数据,不能测试向分区写数据
2、卸载之后重新挂载
[root@localhost ~]# mount /dev/sdc1 /root/test
mount: mount /dev/sdc1 on /root/test failed: Structure needs cleaning
3、对文件系统进行修复
xfs_repair [磁盘或分区路径]
注: xfs_repair修改硬盘之后,硬盘数据丢失,所以对重要的数据要进行数据备份
文件系统的备份与恢复
备份:另外在保存一份
恢复:将以前保存的数据进行还原
touch 1.txt
echo aaaa > 1.txt
cp 1.txt 2.txt
rm 1.txt
cp 2.txt 1.txt
1.log 1T = 1024G
全量备份和增量备份
全量备份:将需要备份的文件全部复制一份
增量备份:在原来备份基础上,把新增数据重新备份一份
备份与恢复的命令
xfsdump : 备份的命令
xfsrestore : 恢复的命令
# 备份的步骤
1、安装备份命令
[root@localhost test]# yum install xfsdump -y
2、备份的等级
0 全量备份
1 ~ 9 增量备份(等级)
3、备份的参数
-L :记录每次备份的地方
-M :注释,此次备份的注释
-l :指定备份的等级
-f :备份的文件名称
-I :查看备份信息
4、备份的条件(限制)
1、必须使用root权限
2、只能备份已经挂载的内容
3、只能备份xfs文件系统
4、只能够用xfsrestore来恢复
5、备份的命令格式
xfsdump [参数] 备份路径
xfsdump -L sdb1_bak -M "sbd1_from_xxx" -l 0 -f sdb1_from_bak_1 /root/oldboy
#xfsdump -L sdb1_bak -M "sdb1_from_qlbf" -l 0 -f sdb1_from_bak /root/test1 (自己做的)
6、数据恢复
xfsrestore
7、恢复数据的参数
-f : 指定备份的文件路径
8、恢复的格式
xfsrestore [参数] 恢复的路径
[root@localhost oldboy]# xfsrestore -f /root/sdb1_from_bak_3 /root/oldboy/
LVM
1、什么是lvm
你如何保证你的硬盘空间恰好够用?
如果你的硬盘你够用了怎么扩容?
LVM是文件系统管理工具
/root/oldboy ---> lv[5G]
/root/oldboy ---> lv[3G]
2、LVM的优点
1、可以动态扩容与缩容
2、可以将新增加的硬盘添加到VG存储池
3、可以突破物理存储卷的限制
3、使用lvm
1、安装lvm软件包
yum install lvm2 -y
2、将磁盘交给pv
pvcreate [磁盘|磁盘分区]
3、查看pv
pvs
pvscan
4、创建vg
vgcreate [vg名称] [pv路径]
5、查看vg
6、创建lvm逻辑卷(lv)
-L : 创建逻辑卷的大小
-n : 逻辑卷的名字
lvcreate [参数] 逻辑卷名称
7、制作文件系统
mkfs.xfs /dev/vg1/xxx
8、挂载文件系统
mount [lv的路径] [挂载点的路径]
动态扩容
1、挂载一块硬盘
2、创建pv
pvcreate /dev/sdd
3、直接扩容给VG
vgextend [vg的名称] [pv]
4、扩容给LV
lvextend -L [+100G] [lv路径]
5、刷新
xfs_growfs /dev/vg1/vg1_test01
动态缩容
1、卸载lv
[root@www ~]# umount /root/vg02
2、删除lv
[root@www ~]# lvremove /dev/vg1/vg1_test01
Do you really want to remove active logical volume vg1/vg1_test01? [y/n]: y
Logical volume "vg1_test01" successfully removed
3、删除vg
[root@www ~]# vgremove vg1
Volume group "vg1" successfully removed
4、删除PV
[root@www ~]# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped.
[root@www ~]# pvremove /dev/sdc
Labels on physical volume "/dev/sdc" successfully wiped.
[root@www ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdb2 vg2 lvm2 a-- <40.00g <40.00g
/dev/sdd vg2 lvm2 a-- <100.00g <100.00g
快照
1、挂载硬盘
2、创建PV
3、创建VG
4、创建LV
5、格式化文件系统
6、挂载
7、造数据
[root@www ~]# echo 111 >> /vg/1.txt
8、拍摄快照
[root@www ~]# lvcreate -L +1G -s -n vg_from_vg100_bak /dev/vg100/vg_from_vg100
Logical volume "vg_from_vg100_bak" created.
lvcreate -L [快照大小] -s(创建快照) -n [快照的名字] [拍摄快照的目标]
9、查看快照
[root@www ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Conver
vg_from_vg100 vg100 owi-aos--- 1.00t
vg_from_vg100_bak vg100 swi-a-s--- 1.00g vg_from_vg100 0.01
10、恢复数据
[root@www ~]# mount -o nouuid /dev/vg100/vg_from_vg100_bak /vg_bak
# 备注:同一个UUID只能挂载一次,如果需要挂载多次,则需要使用(-o nouuid)
快照恢复相当于重新挂载,优点是占用空间小
计划任务
Crontab表达式
* * * * *
分 时 日 月 周
每天的凌晨2点 02:00 00 02 * * *
每月执行一次 00 00 01 * *
每个月的一号零点零时零分同时这一天时星期六 00 00 01 * 6
系统级别的计划任务
[root@yum01 ~]# vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
* * * * * echo "hello world"
#表示任意(分时日月周)都会执行
# 2-3 表示一个时间范围
# , 表示分割 2,4,6
# /2 每隔多久
用户级别的定时任务保存路径 /var/spool/cron
2、如下的目录
/etc/cron.hourly/ # 系统定时任务每个⼩时运⾏这个⽬录⾥的内容
/etc/cron.daily/ # 系统定时任务每天运⾏这个⽬录⾥的内容
/etc/cron.weekly/ # 系统定时任务每周运⾏这个⽬录⾥的内容
/etc/cron.monthly/ # 系统定时任务每⽉运⾏这个⽬录⾥的内容
用户级别的计划任务
crontab -e
-e : 编辑计划任务
-l : 查看计划任务
[root@yum01 ~]# crontab -e
#* * * * * echo "hello world" >> /tmp/1.txt
#每5分钟执行一次时间同步
*/5 * * * * ntpdate ntp.aliyun
5.查看定时任务
[root@yum01 ~]# crontab -l
#每5分钟执行一次时间同步
*/5 * * * * ntpdate ntp.aliyun
# 注:用户级别的计划任务存放在/var/spool/cron/,不同的用户存放的计划任务是以其自己的名字命名的脚本
crontab语法
# 1 3 5
00 00 1,3,5 * *
# 1到5号
00 00 1-5
# 每几分钟,每几个小数,每几天
0/2 /2
00 0/2 00 /2
00 00 0/2 00 00 /2
编写脚本
#vim bei.sh
#!/bin/bash
mkdir -p /backup
tar zcf /backup/2018-02-20——hostname_etc.tar.gz /etc
find /backup/ type -f -mtime +3 | xargs rm -rf
思路
1.手动执行命令,然后保留执行成功的结果。
2.编写脚本
脚本需要统一路径/scripts
脚本内容复制执行成功的命令(减少每个环节出错几率)
脚本内容尽可能的优化, 使用一些变量或使用简单的判断语句
脚本执行的输出信息可以重定向至其他位置保留或写入/dev/null
3.执行脚本
使用bash命令执行, 防止脚本没有增加执行权限(/usr/bin/bash)
执行脚本成功后,复制该执行的命令,以便写入cron
4.编写计划任务
加上必要的注释信息, 人、时间、任务
设定计划任务执行的周期
粘贴执行脚本的命令(不要手敲)
5.调试计划任务
增加任务频率测试
检查环境变量问题
检查crond服务日志 tail -f /var/log/cron
系统优化
1、临时关闭
[root@oldboy ~]# setenforce 0
setenforce: SELinux is disabled
2、永久关闭
[root@oldboy ~]# vim /etc/selinux/config
SELINUX=disabled
# 设置开机不启动(关闭防火墙)
[root@egon ~]# systemctl disable --now firewalld
https://mirrors.huaweicloud/
https://mirrors.tuna.tsinghua.edu/
http://mirrors.163/
http://mirrors.aliyun/
# ⼀:先在测试环境,配置好yum源
默认国外的yum源(软件仓库)⽐较慢,所以换成国内的。
# 1.1、备份
[root@egon ~]# mv /etc/yum.repos.d/CentOS-Base.repo
/etc/yum.repos.d/CentOS-Base.repo.backup
# 1.2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/
[root@egon ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun/repo/Centos-7.repo
# 1.3.添加epel源 [root@egon ~]# curl -o /etc/yum.repos.d/epel.repo
http://mirrors.aliyun/repo/epel-7.repo
# ⼆:然后执⾏yum update -y,以及安装常⽤软件包,然后执⾏部署,将部署过程中安装的包缓
存本地
[root@egon ~]# yum update -y # 刚装完系统后就⽴即执⾏,⽇后就不要轻易更新了
# 安装系统常用软件
[root@www yum.repos.d]# yum -y install tree nmap sysstat lrzsz telnet bash-completion vim lsof net-tools rsync ntpdate nfs-utils
yum源处理与常用软件包安装
vim /etc/yum.conf ===》更改keepcache=1 #开启rpm包安装缓存
在测试环境配置好yum源(默认国外的yum源比较慢,所以换成国内的)
在/etc/yum.repo.d/下
rm -rf ./* #删除所有的源
## 重新安装新的源
163源 、华为源 、阿里云源 、清华大学源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun/repo/epel-7.repo
#.安装基础软件包
yum install net-tools vim tree htop iftop gcc gcc-c++ glibc\
iotop lrzsz sl wget unzip telnet nmap nc psmisc \
dos2unix bash-completion bash-completion-extra sysstat \
rsync nfs-utils httpd-tools -y
yum update -y # 全部更新系统,切记日后就不要轻易更新
ssh密钥
1、禁用SSH DNS解析
[root@web01 ~]# vim /etc/ssh/sshd_config
搜索:/UseDNS 把yes 改为no
[root@web01 ~]# systemctl status ssh
2、创建公钥和私钥
# 虚拟机私钥不加密版
ssh-kengen -t rsa(加密算法名称)
[root@web01 ~]# ssh-keygen
[root@web01 ~]# ls -la
[root@web01 ~]# cd .ssh
[root@web01 .ssh]# ll
total 8
-rw------- 1 root root 1679 Mar 31 19:31 id_rsa
-rw-r--r-- 1 root root 392 Mar 31 19:31 id_rsa.pub
3、将公钥复制到对方服务器上
ssh-copy-id -i /root/.ssh/id_rsa.pub root@ip
在服务端查看
[root@yum02 ~]# cd .ssh
[root@yum02 .ssh]# ll
total 4
-rw------- 1 root root 392 Mar 31 19:38 authorized_keys
[root@yum02 .ssh]# cat authorized_keys
4、免密登录
[root@web01 .ssh]# ssh root@192.168.100.50
Last login: Wed Mar 31 18:01:15 2021 from 192.168.100.1
[root@yum02 ~]# exit
logout
Connection to 192.168.100.50 closed.
# x-shell秘钥版
工具==》新建用户密钥生成导向==》下一步生成密钥文件可导出桌面rz传入shell,
也可以创建vim /root/.ssh/authorized_keys 这个文件夹把拷到桌面的密码文件内容拷到这个文件里
验证是否创建成功===》用户身份验证:keygen root 主机名输入虚拟机1的IP地址===》登陆成功
ssh root@+虚拟机2IP地址===》可选择密码登陆还是密钥登陆
禁用密码 使用ssh密钥登录
[root@yum02 ~]# vim /etc/ssh/sshd_config
[root@yum02 .ssh]# systemctl restart sshd
添加hosts⽂件实现集群主机之间相互⽤主机名解析
vim /etc/hosts # 编辑好之后,每台机器都发⼀份
172.16.10.11 nc1 ceph-deploy
172.16.10.12 nc2
172.16.10.13 nc3
172.16.10.14 cs1
172.16.10.15 cs2
172.16.10.16 cs3
配置ntp服务,同步系统时间
安装ntpdate软件包
crontab -l 查看定时任务
/etc/crontab 系统定时任务
/var/log/cron/ 用户定时任务
[root@2021 ~]# crontab -e 编辑
#每天每隔三个小时时间同步一次
00 */3 * * * /usr/sbin/ntpdate ntp.aliyun
版权声明:本文标题:Linux---基础部分 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1729823123h1357491.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论