Linux 操作

一、Linux 文件管理

1、目录结构

在这里插入图片描述

  • /bin:存放着最经常使用的命令。(/usr/bin、/usr/local/bin)
  • /sbin:存放的是系统管理员使用的系统管理程序。(/usr/sbin、/usr/local/sbin)
  • /home:存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
  • /root:该目录为系统管理员root,也称作超级权限者的用户主目录。
  • /tmp:这个目录是用来存放一些临时文件的。
  • /var:这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件。
  • /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
  • /mnt:用户可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容。
  • /etc:配置文件(系统相关如:network/etc/sysconfig)
  • /opt:这是给主机额外安装软件所摆放的目录。如安装ORACLE数据库就可放到该目录下。默认为空。
  • /usr:系统文件,相当于C:\Windows
    • /usr/local:软件安装目录,一般是通过编译源码方式安装的程序,相当于C:\Program
  • /boot:存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
  • /proc:这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息。
  • /srv :service缩写,该目录存放一些服务启动之后需要提取的数据。
  • /sys:这是linux2.6内核的一个很大的变化。该目录下安装了26内核中新出现的一个文件系线。
  • /dev:类似于windows的设备管理器,把所有的硬件用文件的形式存储。
  • /selinux[security-enhanced linux]360:SELinux是一种安全子系统,它能控制程序只能访问特定文件

2、查看目录

1. ls 命令

ls [-a -l -h] [linux路径] # 获取指定工作目录下的内容
ls # 获取当前工作目录下的内容
  • -a:表示 all 的意思,列出文件包含 隐藏文件
  • -l:竖向排列,详细信息
  • -h:获取文件大小单位(要与 -l 结合使用)

2. cd 切换目录

cd linux路径	# 切换工作目录
cd # 回到 Home 目录( /home/用户名 )

3. pwd 查看工作目录

pwd	# 查看当前工作目录

4. 特殊路径

cd ./Desktop	# ./ 表示当前目录
cd ../	# 表示返回上一级目录
cd ~	# 表示返回 Home 目录

3、文件操作

1. mkdir 创建文件夹

mkdir [-p] linux路径	# 创建新的目录
  • -p 创建多层级目录
mkdir -p ~/erer/good/test	# Home 目录内创建 erer/good/test 路径

2. touch 创建文件

touch linux路径	# 创建文件夹
touch test.txt

3. cp 复制文件

cp [-r] 参数1 参数2
cp test.txt test2.txt	# 复制文件
cp -r erer erer	# 复制文件夹
  • -r:用于复制文件夹,表示递归
  • 参数1:Linux路径,被复制的文件或文件夹
  • 参数2:Linux路径,要复制去的地方

4. mv 移动文件

mv 参数1 参数2
mv test.txt Desktop/	# 将 test.txt 文件移动到 Desktop 文件夹下
mv test2.txt test3.txt	# 将 test2.txt 文件更名为 test3.txt
mv test Desktop/	# 将 test 文件夹移动到 Desktop 文件夹下
  • 参数1:Linux路径,被移动的文件或文件夹
  • 参数2:Linux路径,要移动去的地方,如果目标不存在,则进行改名

5. rm 删除文件

rm [-r -f] 参数1 参数2 ... 参数N	# 删除文件、文件夹
rm -r test*	# 匹配任意以 test 开头的内容
rm -r *test	# 匹配任意以 test 结尾的内容
  • -r:用于删除文件夹
  • -f:强制删除
  • 参数1 参数2 … 参数N:要删除的文件夹、文件

4、查看文件

1. cat 查看文件

cat linux路径	# 查看文件内容

2. more 查看文件

more linux路径	# 翻页查看文件内容
  • 空格翻页
  • q退出

3. tail 持续追踪

tail [-f -num] linux路径
  • -f:表示持续跟踪
  • -num:查看尾部多少行,不填默认10行

在这里插入图片描述

4. find 查找文件

find 起始路径 -name "被查找文件名"
find 起始路径 -size +|-n[kMG]
  • -name:根据文件名查找文件
  • -size:根据文件大小查找文件
    • +:大于、-:小于
    • n表示大小
    • kMG表示单位,k=kb、M=MB、G=GB

5. wc 文件统计

wc [-c -m -l -w] linux路径	# 统计文件的行数、单词数量等
  • -c:统计 bytes 数量
  • -m:统计字符数量
  • -l:统计行数
  • -w:统计单词数量

在这里插入图片描述

6. grep 过滤关键字

grep [-n] 关键字 linux路径	# 过滤关键字查找对应文件行数
  • -n:显示行数
  • 关键字:要过滤的关键字

在这里插入图片描述

5、vim 编辑器

1. 工作模式

  • 命令模式:不能自由编辑文本,以命令驱动执行不同的功能;
  • 输入模式:编辑模式、插入模式,自由编辑文本;
  • 底线命令模式:用于文件的保存和退出。

在这里插入图片描述

2. 命令模式

vim linux路径 # 打开文件,如果文件不存在新建并打开
命令作用
i进入输入模式
0移动光标到当前行的头部
$移动光标到当前行的尾部
/进入到搜索模式
n向下继续搜索
N向上继续搜索
dd删除光标所在行
nddn是数字,删除当前行和下面的n行
yy复制当前行
nyyn是数字,复制当前行和下面的n行
gg跳到首行
G跳到尾行
dG从当前行开始向下全部删除
dgg从当前行开始向上全部删除
u撤销修改
ctrl+r反向撤销修改
;x,y s/原内容/新内容/gx到y行进行全局替换,新内容替换原内容

3. 输入模式

  • esc:退出输入模式

4. 底线命令模式

命令作用
:wq保存并退出
:q退出
:set nu显示行号
:set paste设置粘贴模式
:set list显示控制字符

二、Linux 权限管理

1、用户和用户组

1. 用户组管理

groupadd 用户组名		# 创建用户组名
groupdel 用户组名		# 删除用户组名

2. 用户管理

id [用户名]		# 查看用户
[erer@localhost ~]$ id
用户id=1000(erer) 组id=1000(erer)=1000(erer) 上下文=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023  
  • 用户名:被查看的用户,如果不提供则查看自身
useradd [-g -d -u] 用户名		# 创建用户
  • -g:指定用户的组,不指定-g,会创建同名组并自动加入;指定-g需要组已经存在,如已存在同名组,必须使用-g
  • -d:指定用户HOME路径;不指定,HOME目录默认在:/home/用户名
  • -u:指定用户的ID
userdel [-r] 用户名		# 删除用户
  • -r:删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
usermod -aG 用户组	用户名		# 修改用户所属组
passwd [用户名]	# 修改密码
  • 用户名:被修改的用户,如果不提供则修改自身

3. su 切换用户

su [-] [用户名]
  • -:是否在切换用户的时候加载环境变量
  • exit:登出,退回上一个用户
  • Ctrl + D:登出,退回上一个用户
  • su -:默认切换root用户

在这里插入图片描述

2、sudo root权限

  • 切换到 root 用户
  • 执行 visudo 命令
  • 在文件最后添加:
[用户名] ALL=(ALL)		NOPASSWD: ALL
  • 切换普通用户,执行 sudo 命令

在这里插入图片描述

3、查看用户

1. getent 查看用户

getent passwd		# 查看当前系统中有哪些用户
  • 共有7份信息,分别是:
  • 用户名:密码(X:密码占位符):用户UID:组ID:描述信息(默认是用户名):HOME目录:执行终端(默认/bin/bash)
    • 系统约定: RHEL7–9
    • uid: 0 特权用户
    • uid: 1~999 系统用户
    • uid: 1000+ 普通用户
[erer@localhost ~]$ getent passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
libstoragemgmt:x:992:992:daemon account for libstoragemgmt:/:/usr/sbin/nologin
systemd-oom:x:991:991:systemd Userspace OOM Killer:/:/usr/sbin/nologin
geoclue:x:990:990:User for geoclue:/var/lib/geoclue:/sbin/nologin
tss:x:59:59:Account used for TPM access:/:/sbin/nologin
cockpit-ws:x:989:989:User for cockpit web service:/nonexisting:/sbin/nologin
cockpit-wsinstance:x:988:988:User for cockpit-ws instances:/nonexisting:/sbin/nologin
colord:x:987:987:User for colord:/var/lib/colord:/sbin/nologin
sssd:x:986:986:User for sssd:/:/sbin/nologin
setroubleshoot:x:985:985:SELinux troubleshoot server:/var/lib/setroubleshoot:/sbin/nologin
pipewire:x:984:984:PipeWire System Daemon:/var/run/pipewire:/sbin/nologin
flatpak:x:983:983:User for flatpak system helper:/:/sbin/nologin
clevis:x:982:982:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/usr/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:981:980::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/sbin/nologin
chrony:x:980:979:chrony system user:/var/lib/chrony:/sbin/nologin
dnsmasq:x:979:978:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
erer:x:1000:1000:erer:/home/erer:/bin/bash

2. cat 查看用户

[erer@localhost ~]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
libstoragemgmt:x:992:992:daemon account for libstoragemgmt:/:/usr/sbin/nologin
systemd-oom:x:991:991:systemd Userspace OOM Killer:/:/usr/sbin/nologin
geoclue:x:990:990:User for geoclue:/var/lib/geoclue:/sbin/nologin
tss:x:59:59:Account used for TPM access:/:/sbin/nologin
cockpit-ws:x:989:989:User for cockpit web service:/nonexisting:/sbin/nologin
cockpit-wsinstance:x:988:988:User for cockpit-ws instances:/nonexisting:/sbin/nologin
colord:x:987:987:User for colord:/var/lib/colord:/sbin/nologin
sssd:x:986:986:User for sssd:/:/sbin/nologin
setroubleshoot:x:985:985:SELinux troubleshoot server:/var/lib/setroubleshoot:/sbin/nologin
pipewire:x:984:984:PipeWire System Daemon:/var/run/pipewire:/sbin/nologin
flatpak:x:983:983:User for flatpak system helper:/:/sbin/nologin
clevis:x:982:982:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/usr/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:981:980::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/sbin/nologin
chrony:x:980:979:chrony system user:/var/lib/chrony:/sbin/nologin
dnsmasq:x:979:978:Dnsmasq DHCP and DNS server:/var/lib/dnsmasq:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
erer:x:1000:1000:erer:/home/erer:/bin/bash

3. getent 查看组

getent group	# 查看当前系统中有哪些用户组
  • 包含3份信息,组名称:组认证(显示为x):组ID

在这里插入图片描述

4、权限控制

1. 查看权限控制

ll	# 以列表形式查看内容,并显示权限细节

在这里插入图片描述

  • 序号1,表示文件、文件夹的权限控制信息
  • 序号2,表示文件、文件夹所属用户
  • 序号3,表示文件、文件夹所属用户组

2. 认知权限信息

  • r:表示读权限
    • 针对文件:可以查看文件内容
    • 针对文件夹:可以查看文件夹内容,如ls命令
  • w:表示写权限
    • 针对文件:表示可以修改此文件
    • 针对文件夹:可以在文件夹内:创建、删除、改名等操作
  • x:表示执行权限
    • 针对文件:表示可以将文件作为程序执行
    • 针对文件夹:表示可以更改工作目录到此文件夹,即cd进入

在这里插入图片描述

举例:drwxr-xr-x,表示:

  • 这是一个文件夹,首字母d表示
  • 所属用户(右上角图序号2)的权限是:有r有w有x,rwx
  • 所属用户组(右上角图序号3)的权限是:有r无w有x,r-x (-表示无此权限)
  • 其它用户的权限是:有r无w有x,r-x

3. chmod 修改权限

只有文件、文件夹的所属用户或root用户可以修改。

chmod [-R] 权限 文件或文件夹
  • -R:对文件夹内的全部内容应用同样的操作
chmod u=rwx,g=rx,o=x hello.txt	# 将文件权限修改为:rwxr-x--x
chmod u+x shell.txt 		# 将 shell.txt 增加所属用户执行权限
  • u:表示user所属用户权限
  • g:表示group组权限
  • o:表示other其它用户权限

在这里插入图片描述

4. 权限的数字序号

权限可以用3位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其它用户权限:

chmod 751 hello.txt		# 即:rwx(7) r-x(5) --x(1)
  • 0:无任何权限,即 —
  • 1:仅有x权限,即 --x
  • 2:仅有w权限,即 -w-
  • 3:有w和x权限,即 -wx
  • 4:仅有r权限,即 r–
  • 5:有r和x权限,即 r-x
  • 6:有r和w权限,即 rw-
  • 7:有全部权限,即 rwx

5. chown 修改用户/组

普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行

chown [-R] [用户][:][用户组] 文件或文件夹	# 修改文件、文件夹的所属用户和用户组
  • -R:对文件夹内全部内容应用相同规则
  • 用户:修改所属用户
  • 用户组:修改所属用户组
  • ::用于分隔用户和用户组
chown root hello.txt		# 将 hello.txt 所属用户修改为 root
chown :root hello.txt		# 将 hello.txt 所属用户组修改为 root
chown root:erer hello.txt		# 将 hello.txt 所属用户修改为 root,用户组修改为 erer
chown -R root test			# 将 文件夹test 的所属用户修改为 root 并对文件夹内全部内容应用同样规则

6. chgrp 修改组

chgrp [-R] [用户组] 文件或文件夹	# 修改文件、文件夹的所属用户组
  • -R:对文件夹内全部内容应用相同规则
chgrp it file1	# 改文件属组
chgrp -R it dir1	# 改文件

三、Linux 系统及服务

1、IP/主机名/端口

1. Ifconfig 获取 IP 地址

  • 127.0.0.1:这个IP地址用于指代本机
  • 0.0.0.0:特殊IP地址
    • 可以用于指代本机
    • 可以在端口绑定中用来确定绑定关系(后续讲解)
    • 在一些IP地址限制中,表示所有IP的意思,如放行规则设置为0.0.0.0,表示允许任意IP访问

在这里插入图片描述

2. ping 命令

ping [-c num] 参数		# 检查指定的网络服务器是否是可联通状态
  • -c:检查的次数,不使用-c选项,将无限次数持续检查
  • 参数:ip或主机名,被检查的服务器的ip地址或主机名地址

在这里插入图片描述

3. 查看主机名

4. 修改主机名

sudo hostnamectl set-hostname erer

在这里插入图片描述

5. 域名解析

在这里插入图片描述

  • 先查看本机的记录(私人地址本)
    • Windows看:C:\Windows\System32\drivers\etc\hosts
    • Linux看:/etc/hosts
  • 再联网去DNS服务器(如114.114.114.114,8.8.8.8等)询问

6. 端口介绍

  • 计算机程序之间的通讯,通过IP只能锁定计算机,但是无法锁定具体的程序;
  • 通过端口可以锁定计算机上具体的程序,确保程序之间进行沟通

Linux系统,可以支持65535个端口,这6万多个端口分为3类进行使用:

  • 公认端口:1~1023,通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口,HTTPS服务的443端口,非特殊需要,不要占用这个范围的端口
  • 注册端口:1024~49151,通常可以随意使用,用于松散的绑定一些程序/服务
  • 动态端口:49152~65535,通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用。

7. 获取端口占用情况

# 安装 nmap 服务
sudo yum -y install nmap
# 获取端口占用情况
nmap 127.0.0.1

在这里插入图片描述

8. 查看指定端口的占用情况

# 安装 netstat 服务
yum -y install net-tools
# 获取端口占用情况
netstat -anp
# 查看指定端口的占用情况
netstat -anp | grep 111

在这里插入图片描述

2、固定虚拟机 IP 地址

1. 切换 root 用户

su -

2. 修改配置文件

vim /etc/sysconfig/network-scripts/ifcfg-ens160
  • 修改:BOOTPROTO=“static”
  • 插入:
  • IPASSR=“172.16.196.129” (固定的IP地址)
  • NETMASK=“255.255.255.0”
  • GATEWAY=“172.16.196.2”
  • DNS1=“172.16.196.2”

3. 重启网卡

systemctl restart network 

3、进程管理

1. 什么是进程

  • 程序运行在操作系统中,是被操作系统所管理的:
    • 二进制文件,静态 /usr/bin/passwd ,/usr/sbin/useradd
  • 进程是已启动的可执行程序的运行实例,进程有以下组成部分:
    • 已分配内存的地址空间;
    • 安全属性,包括所有权凭据和特权;
    • 程序代码的一个或多个执行线程;
    • 进程状态。
  • 每一个进程都分配一个独有的:进程ID(进程号)

2. 进程的生命周期

  • 父进程复制自己的地址空间(fork)创建一个新的(子)进程结构;
  • 每个新进程分配一个,唯一的进程 ID (PID),满足跟踪安全性之需;
  • 任何进程都可以创建子进程;
  • 所有进程都是第一个系统进程的后代:
    • Centos5/6系统进程: init
    • Centos7系统进程: systemd
    • Centos9系统进程:/usr/lib/systemd/systemd

3. 查看进程

3.1 ps aux
[erer@localhost ~]$ ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.9 173036 16516 ?        Ss   12:03   0:02 /usr/lib/systemd/systemd --switched-root
root           2  0.0  0.0      0     0 ?        S    12:03   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   12:03   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   12:03   0:00 [rcu_par_gp]
root           5  0.0  0.0      0     0 ?        I<   12:03   0:00 [slub_flushwq]
root           6  0.0  0.0      0     0 ?        I<   12:03   0:00 [netns]
root          10  0.0  0.0      0     0 ?        I<   12:03   0:00 [mm_percpu_wq]
root          12  0.0  0.0      0     0 ?        I    12:03   0:00 [rcu_tasks_kthre]
  • USER: 进程所属的用户 ID
  • PID:进程的进程号 ID
  • %CPU: 此进程的 CPU 占用率(百分比)
  • %MEM: 内存占用率
  • VSZ:占用虚拟内存
  • RSS: 占用实际内存
  • TTY:进程运行的终端
  • STAT:进程状态
    • R:运行
    • S:睡眠 Sleep
    • T:停止的进程
    • Z:僵尸进程
    • X:死掉的进程
  • START:进程的启动时间
  • TIME:进程占用CPU的总时间
  • COMMAND:进程文件,进程名
3.2 ps -ef
ps [-e -f]
  • -e:显示出全部的进程
  • -f:以完全格式化的形式展示信息(展示全部信息)

在这里插入图片描述

  • UID:进程所属的用户 ID
  • PID:进程的进程号 ID
  • PPID:进程的父 ID (启动此进程的其它进程)
  • C:此进程的 CPU 占用率(百分比)
  • STIME:进程的启动时间
  • TTY:启动此进程的终端序号,如显示 ?,表示非终端启动
  • TIME:进程占用 CPU 的时间
  • CMD:进程对应的名称或启动路径或启动命令

4. 关闭进程

kill [-9] 进程ID
  • -9:表示强制关闭进程

在这里插入图片描述

4、主机状态

1. 查看系统资源占用

top [-p -d -c -n -b -i -u]
  • -p:只显示某个进程的信息
  • -d: 置刷新时间,默认是5s
  • -c:显示产生进程的完整命令,默认是进程名
  • -n:指定刷新次数,比如 top -n 3,刷新输出3次后退出
  • -b:以非交互非全屏模式运行,以批次的方式执行 top,一般配合 -n 指定输出几次统计信息,将输出重定向到指定文件,比如 top -b -n 3 > /tmp/top.tmp
  • -i:不显示任何闲置(idle)或无用(zombie)的进程
  • -u:查找特定用户启动的进程

在这里插入图片描述

2. top命令内容详解

  1. top:命令名称,00:12:53:当前系统时间,up 1:30:启动时间,1 users:1个用户登录,load:1、5、15分钟负载
  2. Tasks:253个进程,1 running:1个进程子在运行,162 sleeping:162个进程睡眠,0个停止进程,0个僵尸进程
  3. %Cpu(s):CPU使用率,us:用户CPU使用率,sy:系统CPU使用率,ni:高优先级进程占用CPU时间百分比,id:空闲CPU率,wa:IO等待CPU占用率,hi:CPU硬件中断率,si:CPU软件中断率,st:强制等待占用CPU率
  4. Kib Mem:物理内存,total:总量,free:空闲,used:使用,buff/cache:buff和cache占用
  5. KibSwap:虚拟内存(交换空间),total:总量,free:空闲,used:使用,buff/cache:buff和cache占用
  • PID:进程 ID
  • USER:进程所属用户
  • PR:进程优先级,越小越高
  • NI:负值表示高优先级,正表示低优先级
  • VIRT:进程使用虚拟内存,单位KB
  • RES:进程使用物理内存,单位KB
  • SHR:进程使用共享内存,单位KB
  • S:进程状态(S休眠,R运行,Z僵死状态,N负数优先级,I空闲状态)
  • %CPU:进程占用CPU率
  • %MEM:进程占用内存率
  • TIME+:进程使用CPU时间总计,单位10毫秒
  • COMMAND:进程的命令或名称或程序文件路径

3. top交互式选项

在这里插入图片描述

4. 查询线上cup飙高问题

  • top 命令获取cpu占用最高的 进程PID
  • 通过top -H -p进程PID 命令获取占有 cpu 较高的 线程PID
  • 通过 printf '0x%x\n' 线程PID 命令将线程 PID 转换为十六进制
  • jstack 进程PID | grep 十六进制现场PID -A 20
top -H -p 3361
printf '0x%x\n'  3472
jstack 3361 | grep 0xd90 -A 20

5、环境变量

1. 查看环境变量

  • 环境变量是操作系统(Windows、Linux、Mac)在运行的时候,记录的一些关键性信息,用以辅助系统运行。
  • 在Linux系统中执行:env命令即可查看当前系统中记录的环境变量
  • 环境变量是一种KeyValue型结构,即名称和值,如下图:

在这里插入图片描述

XDG_SESSION_ID=24
HOSTNAME=localhost.localdomain
SELINUX_ROLE_REQUESTED=
TERM=xterm-256color
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=172.16.196.1 54491 22
SELINUX_USE_CURRENT_RANGE=
SSH_TTY=/dev/pts/0
USER=erer		# 当前的操作用户
LS_COLORS=rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:
MAIL=/var/spool/mail/erer
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/erer/.local/bin:/home/erer/bin
PWD=/home/erer	# 当前工作路径
LANG=zh_CN.UTF-8
SELINUX_LEVEL_REQUESTED=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/home/erer	# 用户的HOME路径 
LOGNAME=erer
XDG_DATA_DIRS=/home/erer/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
SSH_CONNECTION=172.16.196.1 54491 172.16.196.129 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/1000
_=/usr/bin/env

2. 环境变量 PATH

  • 无论当前工作目录是什么,都能执行/usr/bin/cd这个程序,这个就是借助环境变量中:PATH这个项目的值来做到的。

在这里插入图片描述

  • PATH记录了系统执行任何命令的搜索路径,如上图记录了(路径之间以:隔开):
    • /usr/local/bin
    • /usr/bin
    • /usr/local/sbin
    • /usr/sbin
    • /home/erer/.local/bin
    • /home/erer/bin
  • 当执行任何命令,都会按照顺序,从上述路径中搜索要执行的程序的本体
  • 比如执行cd命令,就从第二个目录 /usr/bin 中搜索到了cd命令,并执行

3. $ 符号

  • 在Linux系统中,$符号被用于取“变量”的值
  • 环境变量记录的信息,除了给操作系统自己使用外,如果我们想要取用,也可以使用
  • 取得环境变量的值就可以通过语法:$ 环境变量名 来取得
  • 配合 echo{} 使用
[erer@localhost ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/erer/.local/bin:/home/erer/bin
[erer@localhost ~]$ echo ${PATH}ABC
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/erer/.local/bin:/home/erer/binABC

4. 自行设置环境变量

Linux环境变量可以用户自行设置,其中分为:

  • 临时设置
    • 语法:export 变量名=变量值
  • 永久生效
    • 针对当前用户生效,配置在当前用户的: ~/.bashrc 文件中
    • 针对所有用户生效,配置在系统的: /etc/profile 文件中
    • 并通过语法:source 配置文件,进行立刻生效

四、Linux 实用操作

1、快捷操作

1. 快捷键

快捷键作用
ctrl + c强制停止Linux某些程序的运行;退出当前输入,重新输入
ctrl + d退出账户的登录;退出某些特定程序的专属页面
ctrl + r输入内容去匹配历史命令
ctrl + a跳到命令开头
ctrl + e跳到命令结尾
ctrl + ←向左跳一个单词
ctrl + →向右跳一个单词
ctrl + l清空终端内容

2. 命令

命令作用
history查看历史输入过的命令;可以配合 |+ grep 使用
!命令前缀自动执行上一次匹配前缀的命令
clear清空终端内容

2、管道/重定向

1. | 管道符

  • 管道符的作用:将管道符左边命令的结果,作为右边命令的输入

在这里插入图片描述

2. echo 输出命令

echo 参数
  • 参数:要输出的内容
  • `参数`:反引号(飘号)包含的内容会被作为命令执行

在这里插入图片描述

3. 输出重定向

  • >:将左侧命令的结果,覆盖写入到符号右侧制定的文件中
  • >>:将左侧命令的结果,追加写入到符号右侧制定的文件中
  • 2>:错误输出,覆盖
  • 2>>:错误输出,追加

在这里插入图片描述

4. 输入重定向

  • 先准备一段邮件内容:vim word.txt
  • mail -s "test01" alice < word.txt
  • 原理:利用输入重定向,把文件内容代替人为的输入。

3、查找命令

1. which 命令查找

which 命令
[erer@localhost ~]$ which ls
alias ls='ls --color=auto'
        /usr/bin/ls
[erer@localhost ~]$ which java
/usr/bin/which: no java in (/home/erer/.local/bin:/home/erer/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin)
[erer@localhost ~]$ 

2. find 文件查找

find 起始路径 -name "被查找文件名"
find 起始路径 -size +|-n[kMG]
  • -name:根据文件名查找文件
  • -size:根据文件大小查找文件
    • +:大于、-:小于
    • n表示大小
    • kMG表示单位,k=kb、M=MB、G=GB
[erer@localhost ~]$ find /home -name "test*"	# home目录开始查找名为 test 开头的文件
/home/erer/test.txt
[erer@localhost ~]$ find -name "shell*"	# home目录开始查找名为 shell 开头的文件
./shell.txt
[erer@localhost ~]$ find -name "shell*" -ls	# home目录开始查找名为 shell 开头的文件,显示详情
 19545026      4 -rwxr--r--   1 erer     erer           82 86 23:35 ./shell.txt
[erer@localhost ~]$ find /home -size +100M	# home目录开始查找大于100MB的文件
[erer@localhost ~]$ find /home -size -1k	# home目录开始查找小于1kB的文件
/home/erer/.mozilla/firefox/z0g27se2.default-default/.parentlock
/home/erer/.local/share/gnome-shell/gnome-overrides-migrated
/home/erer/.local/share/flatpak/.changed
/home/erer/.local/share/gnome-settings-daemon/input-sources-converted
/home/erer/.local/share/nautilus/tracker2-migration-complete
/home/erer/.config/.gsd-keyboard.settings-ported
/home/erer/.cache/mozilla/firefox/z0g27se2.default-default/cache2/ce_T151c2VyQ29udGV4dElkPTUs
/home/erer/.cache/mozilla/firefox/z0g27se2.default-default/cache2/ce_T151c2VyQ29udGV4dElkPTUsYSw=

3. locate 文件查找

locate 文件名
[erer@localhost ~]$ locate test.txt
/home/erer/test.txt
[erer@localhost ~]$ locate test
/etc/fwupd/remotes.d/lvfs-testing.conf
/etc/sane.d/test.conf
/home/erer/test.txt
/usr/bin/cupstestppd
/usr/bin/dbus-test-tool
/usr/bin/gr2fonttest
/usr/bin/l2test
/usr/bin/libieee1284_test
/usr/bin/rctest
/usr/bin/sg_test_rwbuf
/usr/bin/speaker-test
/usr/bin/test
/usr/bin/test_ppa
/usr/bin/tpm2_gettestresult
/usr/bin/tpm2_incrementalselftest
/usr/bin/tpm2_selftest

4、软件管理

1. yum下载软件

yum命令需要root权限,可以su切换到root,或使用sudo提权。

CentOS使用yum管理器,Ubuntu使用apt管理器

yum [-y] search|install|remove 软件名称
yum clean packages 	# 清除下载缓存
  • -y:自动确认,无需手动确认安装或卸载过程
  • search:搜索
  • install:安装
  • remove:卸载
# 查询软件下载地址
[root@localhost ~]# yum repolist
仓库 id                                     仓库名称
appstream                                   CentOS Stream 9 - AppStream
baseos                                      CentOS Stream 9 - BaseOS
extras-common                               CentOS Stream 9 - Extras packages
# 查询 yum 下载仓库
[root@localhost ~]# ls /etc/yum.repos.d/
centos-addons.repo  centos.repo
# 备份
[root@localhost ~]# cp /etc/yum.repos.d/centos.repo /etc/yum.repos.d/centos.repo.backup
[root@localhost ~]# ls /etc/yum.repos.d/
centos-addons.repo  centos.repo  centos.repo.backup
# 配置阿里云下载仓库
[root@localhost ~]# vim /etc/yum.repos.d/centos.repo
# 更新缓存
[root@localhost ~]# yum makecache
CentOS-9 - Base - mirrors.aliyun.com                                       2.5 MB/s | 8.6 MB     00:03    
CentOS-9 - AppStream - mirrors.aliyun.com                                  2.6 MB/s |  16 MB     00:05    
CentOS Stream 9 - Extras packages                                          1.2 kB/s | 3.6 kB     00:03    
Metadata cache created.
# 配置阿里epel源
[root@localhost ~]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-9.noarch.rpm
# 更新缓存
[root@localhost ~]# yum makecache
[root@localhost ~]# yum repolist
仓库 id                                 仓库名称
AppStream                               CentOS-9 - AppStream - mirrors.aliyun.com
base                                    CentOS-9 - Base - mirrors.aliyun.com
extras-common                           CentOS Stream 9 - Extras packages
  • centos.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#
 
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
#failovermethod=priority
baseurl=https://mirrors.aliyun.com/centos-stream/$stream/BaseOS/$basearch/os/
        http://mirrors.aliyuncs.com/centos-stream/$stream/BaseOS/$basearch/os/
        http://mirrors.cloud.aliyuncs.com/centos-stream/$stream/BaseOS/$basearch/os/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos-stream/RPM-GPG-KEY-CentOS-Official
 
#additional packages that may be useful
#[extras]
#name=CentOS-$releasever - Extras - mirrors.aliyun.com
#failovermethod=priority
#baseurl=https://mirrors.aliyun.com/centos-stream/$stream/extras/$basearch/os/
#        http://mirrors.aliyuncs.com/centos-stream/$stream/extras/$basearch/os/
#        http://mirrors.cloud.aliyuncs.com/centos-stream/$stream/extras/$basearch/os/
#gpgcheck=1
#gpgkey=https://mirrors.aliyun.com/centos-stream/RPM-GPG-KEY-CentOS-Official
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
#failovermethod=priority
baseurl=https://mirrors.aliyun.com/centos-stream/$stream/centosplus/$basearch/os/
        http://mirrors.aliyuncs.com/centos-stream/$stream/centosplus/$basearch/os/
        http://mirrors.cloud.aliyuncs.com/centos-stream/$stream/centosplus/$basearch/os/
gpgcheck=1
enabled=0
gpgkey=https://mirrors.aliyun.com/centos-stream/RPM-GPG-KEY-CentOS-Official
 
[PowerTools]
name=CentOS-$releasever - PowerTools - mirrors.aliyun.com
#failovermethod=priority
baseurl=https://mirrors.aliyun.com/centos-stream/$stream/PowerTools/$basearch/os/
        http://mirrors.aliyuncs.com/centos-stream/$stream/PowerTools/$basearch/os/
        http://mirrors.cloud.aliyuncs.com/centos-stream/$stream/PowerTools/$basearch/os/
gpgcheck=1
enabled=0
gpgkey=https://mirrors.aliyun.com/centos-stream/RPM-GPG-KEY-CentOS-Official

[AppStream]
name=CentOS-$releasever - AppStream - mirrors.aliyun.com
#failovermethod=priority
baseurl=https://mirrors.aliyun.com/centos-stream/$stream/AppStream/$basearch/os/
        http://mirrors.aliyuncs.com/centos-stream/$stream/AppStream/$basearch/os/
        http://mirrors.cloud.aliyuncs.com/centos-stream/$stream/AppStream/$basearch/os/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos-stream/RPM-GPG-KEY-CentOS-Official

2. systemctl管理软件

systemctl start|stop|status|enable|disable 服务名	# 控制内置或第三方服务

systemctl stop firewalld.service
systemctl disable firewalld.service
  • start:启动
  • stop:关闭
  • status:查看状态
  • enable:开启开机自启
  • disable:关闭开机自启

系统内置的服务比较多,比如:

  • NetworkManager:主网络服务
  • network:副网络服务
  • firewalld:防火墙服务
  • sshd、ssh服务:FinalShell远程登录Linux使用的就是这个服务

在这里插入图片描述

3. ln 创建软连接

ln -s 参数1 参数2		# 创建参数1的快捷方式
  • -s选项:创建软连接
  • 参数1:被链接的文件或文件夹
  • 参数2:要链接去的目的地

4、date 时间操作

1. 获取时间信息

date [-d] [+格式化字符串]
  • -d:按照给定的字符串显示日期,一般用于日期计算
  • 格式化字符串:通过特定的字符串标记,来控制显示的日期格式
    • %Y :年
    • %y :年份后两位数字 (00-99)
    • %m :月份 (01-12)
    • %d :日(01-31)
    • %H :小时(00-23)
    • %M :分钟(00-59)
    • %S :秒(00-60)
    • %s :自1970-01-01 00:00:00 UTC 到现在的秒数

在这里插入图片描述

2. 时间计算

其中支持的时间标记为:

  • year年
  • month月
  • day天
  • hour小时
  • minute分钟
  • second秒

在这里插入图片描述

3. 修改时区

sudo rm -f /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

在这里插入图片描述

4. ntp服务自动校准时间

sudo yum -y install ntp
sudo ntpdate -u ntp.aliyun.com
systemctl start ntpd
systemctl enable ntpd

在这里插入图片描述

5、压缩和解压

市面上有非常多的压缩格式

  • zip格式:Linux、Windows、MacOS系统常用
  • 7zip:Windows系统常用
  • rar:Windows系统常用
  • tar:Linux、MacOS常用
  • gzip:Linux、MacOS常用

1. tar 命令

Linux和Mac系统常用有2种压缩格式,后缀名分别是:

  • .tar,称之为tarball,归档文件,即简单的将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅是简单的封装

  • .gz,也常见为.tar.gz,gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内,可以极大的减少压缩后的体积

针对这两种格式,使用tar命令均可以进行压缩和解压缩的操作

tar [-c -v -x -f -z -C] 参数1 参数2 ... 参数N
  • -c:创建压缩文件,用于压缩模式
  • -v:显示压缩、解压过程,用于查看进度
  • -x:解压模式
  • -f:要创建的文件,或要解压的文件,-f 选项必须在所有选项中位置处于最后一个
  • -z:gzip模式,不使用 -z 就是普通的 tarball 格式
  • -C:选择解压的目的地,用于解压模式

2. tar 命令压缩

[erer@localhost erer]$ ll
总用量 36
-rw-r--r--. 1 erer erer 9516 82 01:44 1.txt
-rw-r--r--. 1 erer erer 9516 82 01:44 2.txt
-rw-r--r--. 1 erer erer 9516 82 01:44 3.txt
[erer@localhost erer]$ tar -cvf test.tar 1.txt 2.txt 3.txt # 将1.txt 2.txt 3.txt 压缩到test.tar文件内
1.txt
2.txt
3.txt
[erer@localhost erer]$ tar -zcvf test.gz 1.txt 2.txt 3.txt # gzip模式将1.txt 2.txt 3.txt 压缩到test.gz文件内
1.txt
2.txt
3.txt
[erer@localhost erer]$ ll
总用量 80
-rw-r--r--. 1 erer erer  9516 82 01:44 1.txt
-rw-r--r--. 1 erer erer  9516 82 01:44 2.txt
-rw-r--r--. 1 erer erer  9516 82 01:44 3.txt
-rw-rw-r--. 1 erer erer  3523 82 01:45 test.gz
-rw-rw-r--. 1 erer erer 40960 82 01:45 test.tar
  • -z:如果使用的话,一般处于选项位第一个
  • -f :必须在选项位最后一个,后面跟压缩包的名称

3. tar 命令解压

[erer@localhost erer]$ ls
test.gz  test.tar
[erer@localhost erer]$ tar -xvf test.tar # 解压test.tar,到当前目录
1.txt
2.txt
3.txt
[erer@localhost erer]$ ll
总用量 80
-rw-r--r--. 1 erer erer  9516 82 01:44 1.txt
-rw-r--r--. 1 erer erer  9516 82 01:44 2.txt
-rw-r--r--. 1 erer erer  9516 82 01:44 3.txt
-rw-rw-r--. 1 erer erer  3523 82 01:45 test.gz
-rw-rw-r--. 1 erer erer 40960 82 01:45 test.tar
[erer@localhost erer]$ rm *.txt
[erer@localhost erer]$ ls
test.gz  test.tar
[erer@localhost erer]$ mkdir test
[erer@localhost erer]$ ls
test  test.gz  test.tar
[erer@localhost erer]$ tar -xvf test.tar  -C test # 解压test.tar,到指定目录
1.txt
2.txt
3.txt
[erer@localhost erer]$ ls test
1.txt  2.txt  3.txt
[erer@localhost erer]$ tar -zxvf test.gz # 以Gzip模式解压test.gz,到当前目录
1.txt
2.txt
3.txt
[erer@localhost erer]$ ll
总用量 80
-rw-r--r--. 1 erer erer  9516 82 01:44 1.txt
-rw-r--r--. 1 erer erer  9516 82 01:44 2.txt
-rw-r--r--. 1 erer erer  9516 82 01:44 3.txt
drwxrwxr-x. 2 erer erer    45 82 01:57 test
-rw-rw-r--. 1 erer erer  3523 82 01:45 test.gz
-rw-rw-r--. 1 erer erer 40960 82 01:45 test.tar
  • -f:必须在选项组合体的最后一位
  • -z:建议在开头位置
  • -C:单独使用,和解压所需的其它参数分开

4. zip 命令

zip [-r] 参数1 参数2 ... 参数N
  • -r:被压缩的包含文件夹的时候,需要使用-r选项,同 rm、cp 等命令

5. zip 命令压缩文件

[erer@localhost erer]$ ls
1.txt  2.txt  3.txt  test  test.gz  test.tar
[erer@localhost erer]$ zip test.zip 1.txt 2.txt 3.txt 
  adding: 1.txt (deflated 67%)
  adding: 2.txt (deflated 67%)
  adding: 3.txt (deflated 67%)
[erer@localhost erer]$ ls
1.txt  2.txt  3.txt  test  test.gz  test.tar  test.zip
[erer@localhost erer]$ zip -r erer.zip test 1.txt 2.txt 3.txt 
  adding: test/ (stored 0%)
  adding: test/1.txt (deflated 67%)
  adding: test/2.txt (deflated 67%)
  adding: test/3.txt (deflated 67%)
  adding: 1.txt (deflated 67%)
  adding: 2.txt (deflated 67%)
  adding: 3.txt (deflated 67%)
[erer@localhost erer]$ ll
总用量 112
-rw-r--r--. 1 erer erer  9516 82 01:44 1.txt
-rw-r--r--. 1 erer erer  9516 82 01:44 2.txt
-rw-r--r--. 1 erer erer  9516 82 01:44 3.txt
-rw-rw-r--. 1 erer erer 19648 82 02:08 erer.zip
drwxrwxr-x. 2 erer erer    45 82 01:57 test
-rw-rw-r--. 1 erer erer  3523 82 01:45 test.gz
-rw-rw-r--. 1 erer erer 40960 82 01:45 test.tar
-rw-rw-r--. 1 erer erer  9751 82 02:07 test.zip

6. unzip 命令解压文件

unzip [-d] 参数
  • -d:指定要解压去的位置,同 tar 的 -C 选项
  • 参数:被解压的zip压缩包文件
 [erer@localhost erer]$ ls
 erer.zip  test.gz  test.tar  test.zip
 [erer@localhost erer]$ unzip test.zip # 将test.zip解压到当前目录
 Archive:  test.zip
   inflating: 1.txt                   
   inflating: 2.txt                   
   inflating: 3.txt                   
 [erer@localhost erer]$ ls
 1.txt  2.txt  3.txt  erer.zip  test.gz  test.tar  test.zip
 [erer@localhost erer]$ rm *.txt
 [erer@localhost erer]$ ls
 erer.zip  test.gz  test.tar  test.zip
 [erer@localhost erer]$ mkdir erer
 [erer@localhost erer]$ unzip erer.zip -d erer # 将erer.zip解压到指定文件夹内
 Archive:  erer.zip
    creating: erer/test/
   inflating: erer/test/1.txt         
   inflating: erer/test/2.txt         
   inflating: erer/test/3.txt         
   inflating: erer/1.txt              
   inflating: erer/2.txt              
   inflating: erer/3.txt              
 [erer@localhost erer]$ ls erer
 1.txt  2.txt  3.txt  test

五、yum软件安装

1、MySQL8.0

1. 配置yum仓库

# 更新密钥
[root@localhost ~]# rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

# 安装Mysql8.x版本 yum库
[root@localhost ~]# rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm

2. 安装MySQL

# 修改配置文件
[root@localhost ~]# vim /etc/yum.repos.d/mysql-community.repo

[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/9/$basearch/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

# yum安装Mysql
[root@localhost ~]# yum -y install mysql-community-server

3. 启动MySQL

# 启动
[root@localhost ~]# systemctl start mysqld
# 开机自启
[root@localhost ~]# systemctl enable mysqld
# 检查MySQL的运行状态
[root@localhost ~]# systemctl status mysqld
● mysqld.service - MySQL Server
     Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; preset: disabled)
     Active: active (running) since Fri 2023-08-25 17:48:51 CST; 11s ago
       Docs: man:mysqld(8)
             http://dev.mysql.com/doc/refman/en/using-systemd.html
   Main PID: 34299 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 10544)
     Memory: 436.7M
        CPU: 2.771s
     CGroup: /system.slice/mysqld.service
             └─34299 /usr/sbin/mysqld

Aug 25 17:48:48 localhost.localdomain systemd[1]: Starting MySQL Server...
Aug 25 17:48:51 localhost.localdomain systemd[1]: Started MySQL Server.

MySQL安装完成后,会自动配置为名称叫做:mysqld的服务,可以被systemctl所管理

4. 获取初始密码

# 通过grep命令,在/var/log/mysqld.log文件中,过滤 temporary password 关键字,获取初始密码
[root@localhost ~]# grep 'temporary password' /var/log/mysqld.log
2023-08-24T18:21:04.944129Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: hZiJjMh;;8,e

5. 登陆root账号

# 登陆账号
[root@localhost ~]# mysql -uroot -p
Enter password: hZiJjMh;;8,e
Welcome to the MySQL monitor.  Commands end with ; or \g.

6. 修改密码及权限

-- 初始化 'root'@'localhost' 账户密码:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Shifan1992.12.24';
Query OK, 0 rows affected (0.00 sec)
-- 密码安全级别低
mysql> set global validate_password.policy=0;
Query OK, 0 rows affected (0.00 sec)
-- 密码长度最低4位即可
mysql> set global validate_password.length=4;
Query OK, 0 rows affected (0.00 sec)

-- 修改 'root'@'localhost' 账户密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1992.12.24';
Query OK, 0 rows affected (0.00 sec)

-- 设置 'root'@'%' 账户远程登录
mysql> update mysql.user set host = '%' where user = 'root';
Query OK, 0 rows affected (0.02 sec)

-- 查看 'root'@'%' 账户远程登陆情况
mysql> select user,host,authentication_string from mysql.user;
+------------------+-----------+------------------------------------------------------------------------+
| user             | host      | authentication_string                                                  |
+------------------+-----------+------------------------------------------------------------------------+
| root             | %         | *1F200AB4D2B5111B1987E2BED48DB3C54A896ABF                              |
| mysql.infoschema | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.session    | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.sys        | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
+------------------+-----------+------------------------------------------------------------------------+
4 rows in set (0.00 sec)

-- 赋予权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
Query OK, 0 rows affected (0.01 sec)

7. 退出关闭防火墙

mysql> exit;
Bye
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service
Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service".
Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service".
[root@localhost ~]# netstat -anp | grep 3306
tcp6       0      0 :::33060                :::*                    LISTEN      1791/mysqld         
tcp6       0      0 :::3306                 :::*                    LISTEN      1791/mysqld         

8. 初始化

# 删目录
[root@localhost ~]# rm -rf /var/lib/mysql
# 修改配置文件 my.cnf
[root@localhost ~]# vim /etc/my.cnf
# 添加 lower-case-table-names=1
# 初始化数据库
[root@localhost ~]# mysqld --initialize --user=mysql --lower-case-table-names=1
# 通过grep命令,在/var/log/mysqld.log文件中,过滤 temporary password 关键字,获取初始密码
[root@localhost ~]# grep 'temporary password' /var/log/mysqld.log
# 启动服务
[root@localhost ~]# systemctl start mysqld.service 

六、脚本和自动化

七、项目实战

八、云平台技术

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值