Linux---基础部分

笔记

文章目录

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.com/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.com/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.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
 
# 第四步:更新系统
[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.com
系统硬件时钟
[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.com
#系统硬件时钟
[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.com
 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 [参数] 操作对象路径
    • 目录
      • mkdir
        • 格式:mkdir [参数] 操作对象路径
        • 参数:
          • -p : 递归创建目录
          • -v : 打印出目录的创建过程
  • 查找(普通)

    • 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 : 查看当前目录绝对路径
  • 修改(编辑)

    • 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.com/search/ls

 https://man.linuxde.net/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.com

[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.com
 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.com/

wget

格式:
	wget 需要被下载的连接

# --no-check-certificate : 不再验证ssl证书(当ssl连接不安全情况下使用)

# 如果机器出现-bash: wget: command not found, 执行yum install wget -y

# 默认下载到当前目录
[root@localhost test]# wget https://repo.huaweicloud.com/nginx/nginx-0.1.23.tar.gz--2021-03-10 12:02:11--  https://repo.huaweicloud.com/nginx/nginx-0.1.23.tar.gz
Resolving repo.huaweicloud.com (repo.huaweicloud.com)... 119.188.36.137
Connecting to repo.huaweicloud.com (repo.huaweicloud.com)|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.com/nginx/nginx-0.1.22.tar.gz
--2021-03-10 12:04:37--  https://repo.huaweicloud.com/nginx/nginx-0.1.22.tar.gz
Resolving repo.huaweicloud.com (repo.huaweicloud.com)... 119.188.36.137
Connecting to repo.huaweicloud.com (repo.huaweicloud.com)|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.com/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               my.cnf.d                 security
adjtime.gz                  groff                        my.cnf.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.org/packages/centos/7/x86_64/RPMS/

-v : 显示安装过程
-i :显示安装包的详细信息
-h : 安装包哈希标记

# 下载Nginx rpm安装包的全名
[root@localhost ~]# wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.18.0-1.el7.ngx.x86_64.rpm
--2021-03-17 12:16:47--  http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.18.0-1.el7.ngx.x86_64.rpm
Resolving nginx.org (nginx.org)... 52.58.199.22, 3.125.197.172, 2a05:d014:edb:5702::6, ...
Connecting to nginx.org (nginx.org)|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.org/en/docs/

Please subscribe to nginx-announce mailing list to get
the most important news about nginx:
* http://nginx.org/en/support.html

Commercial subscriptions for nginx are available on:
* http://nginx.com/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-1.compute.internal
Relocations : (not relocatable)
Vendor      : Nginx, Inc.
URL         : http://nginx.org/
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-1.compute.internal
Relocations : (not relocatable)
Vendor      : Nginx, Inc.
URL         : http://nginx.org/
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.com              10,072
extras/7/x86_64           CentOS-7 - Extras - repo.huaweicloud.com               453
updates/7/x86_64          CentOS-7 - Updates - repo.huaweicloud.com            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.com                                enabled: 10,072
centosplus/7/x86_64                            CentOS-7 - Plus - repo.huaweicloud.com                                disabled
extras/7/x86_64                                CentOS-7 - Extras - repo.huaweicloud.com                              enabled:    453
updates/7/x86_64                               CentOS-7 - Updates - repo.huaweicloud.com                             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.com/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.com/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.org/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.com/epel/7/x86_64/Packages/n/

wget https://repo.huaweicloud.com/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.net/distributions/php-7.4.16.tar.gz

第一步 :下载安装PHP
wget  -O  /opt/ php.tar.gz     https://www.php.net/distributions/php-7.4.16.tar.gz

或者
cd/opt
wget  php.tar.gz     https://www.php.net/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.com

5.查看定时任务
[root@yum01 ~]# crontab -l
#每5分钟执行一次时间同步
*/5 * * * * ntpdate ntp.aliyun.com

# 注:用户级别的计划任务存放在/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.com/
https://mirrors.tuna.tsinghua.edu.cn/
http://mirrors.163.com/

http://mirrors.aliyun.com/

# ⼀:先在测试环境,配置好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.com/repo/Centos-7.repo
# 1.3.添加epel源 [root@egon ~]# curl -o /etc/yum.repos.d/epel.repo
http://mirrors.aliyun.com/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.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/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.com

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琴声浮或沉__听懂只一人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值