-
CPU
-
内存
-
虚拟内存
-
存储
-
环境变量
-
二进制
-
根用户
-
IP
-
Host0526
-
套接字(socket):ip+port
-
端口(port):0~65535
-
相对路径
-
绝对路径
- ping
- grep
- reboot
- |
- curl
- tab:自动补齐命令或文件
- ctrl+c:强制终止进程(暴力结束)
- ctrl+d:退出当前命令行
- shift+pageUp:向上翻页
- shift+pageDown:向下翻页
- rm -rf /
- chmod -R 777 /
- > 文件
- bc 计算器:需要显示小数点后的结果,需输入scale=number命令,number代表小数点后的位数
基本语法
nano 文件名称
选项说明
选项 | 说明 |
---|---|
ctrl+G | 获取帮助文档 |
ctrl+X | 离开nano软件,如有修改文件会提示是否需要保存 |
ctrl+O | 保存文件,需有文件写入权限 |
ctrl+R | 从其他文件读入文本 |
ctrl+C | 说明光标所在行和列的信息 |
ctrl+K | 剪切文本,可以一次剪切多行 |
ctrl+U | 粘贴文本 |
ctrl+W | 查找字符串 |
ctrl+Y | 上一页 |
ctrl+V | 下一页 |
-
查看内核版本
[root@localhost ~]# uname -r 3.10.0-1160.el7.x86_64
-
查看系统架构版本
[root@localhost ~]# uname -m x86_64
-
查看CPU型号
[root@k8s-master kubesphere]# lscpu 架构: aarch64 CPU 运行模式: 64-bit 字节序: Little Endian CPU: 16 在线 CPU 列表: 0-15 每个核的线程数: 1 每个座的核数: 16 座: 1 NUMA 节点: 1 厂商 ID: Phytium 型号: 3 型号名称: ARMv8 CPU 步进: 0x1
-
查看系统架构
[root@k8s-master kubesphere]# arch aarch64
-
查看ssh登录历史记录
[root@k8s-master kubesphere]# last
-
查看实时系统日志
[root@k8s-master kubesphere]# journalctl -f
-
查看指定服务日志
[root@k8s-master kubesphere]# journalctl -u ss
- nkvers
基本语法
ssh IP地址
案例实操
ssh 192.168.91.128
基本语法
logout (功能描述:仅限通过ssh登录使用)
案例实操
[root@localhost ~]# logout
基本语法
添加新用户
useradd 用户名
案例实操
[root@localhost ~]# useradd tony
添加新用户到某个组
useradd -g 用户组名 用户名
案例实操
[root@localhost ~]# useradd -g java jack
基本语法
passwd 用户名
案例实操
[root@localhost ~]# passwd tony
基本语法
id 用户名
案例实操
[root@localhost ~]# id tony
uid=1002(tony) gid=1003(tony) 组=1003(tony)
#也可用来判断用户是否存在
[root@localhost ~]# id maria
id: maria: no such user
基本语法
cat /etc/passwd
案例实操
[root@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
#省略中间部分创建的系统用户
#省略中间部分创建的系统用户
#省略中间部分创建的系统用户
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
admin:x:1000:1000:cent0S7.9:/home/admin:/bin/bash
tom:x:1001:1002::/home/tangmu:/bin/bash
tony:x:1002:1003::/home/tony:/bin/bash
jack:x:1003:1004::/home/jack:/bin/bash
基本语法
切换用户(不获得环境变量)
su 用户名称
案例实操
[root@localhost ~]# su tony
[tony@localhost root]$ $PATH
bash: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin: 没有那个文件或目录
切换用户(获得环境变量)
su - 用户名称
案例实操
[root@localhost ~]# su - tony
上一次登录:四 1月 26 17:07:15 CST 2023pts/0 上
[tony@localhost ~]$ $PATH
-bash: /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/tony/.local/bin:/home/tony/bin: 没有那个文件或目录
返回切换前的用户
exit
案例实操
[tony@localhost ~]$ exit
登出
[root@localhost ~]#
基本语法
usermod -g 用户组名 用户名
案例实操
[root@localhost home]# usermod -g java ken
基本语法
删除用户(删除用户,但保留用户主目录)
userdel 用户名
案例实操
[root@localhost home]# userdel tony
#home文件夹下仍保留tony的主目录
[root@localhost home]# ls
admin jack my-abc my-info tangmu tony
删除用户(删除用户,不保留用户主目录)
userdel -r 用户名
案例实操
[root@localhost home]# userdel -r jack
#连同jack的主目录一并删除
[root@localhost home]# ls
admin my-abc my-info tangmu tony
查看实际登录用户信息(显示登录IP和登录时间)
基本语法
who 或 who am i
案例实操
[ken@localhost home]$ who am i
root pts/0 2023-01-26 16:42 (192.168.91.1)
[ken@localhost home]$ who
root pts/0 2023-01-26 16:42 (192.168.91.1)
查看当前使用用户信息(su之后)
whoami
案例实操
[ken@localhost home]$ whoami
ken
基本语法
sudo [选项] 需要执行的命令
选项说明
选项 | 说明 |
---|---|
-l | 显示当前用户可执行的sudo命令 |
案例实操
[ken@localhost home]$ sudo passwd ken
-
创建一个以自己名字命名的账户
-
为新建立的账户设置密码
-
使用root用户切换至新用户
-
切换回root用户
-
删除新用户,并保留用户主目录
-
判断删除的新用户是否还存在
-
查看主机上的所有用户
一个用户可以拥有多个用户组
基本语法
groupadd 组名
案例实操
[root@cent0S7 ~]# groupadd web
基本语法
groupdel 组名
案例实操
[root@cent0S7 ~]# groupdel web
基本语法
groupmod -n 新用户组名 旧用户组名
案例实操
[root@cent0S7 home]# groupmod -n ad admin
基本语法
cat /etc/group
案例实操
[root@cent0S7 home]# cat /etc/group
root:x:0:
#省略中间部分创建的系统用户
#省略中间部分创建的系统用户
#省略中间部分创建的系统用户
docker:x:981:
tony:x:1001:
ad:x:1000:admin
- 创建java用户组
- 查看所有用户组
- 修改java用户组为python用户组
- 删除python用户组
- 将自己名字的用户加入到python组(详见1.1用户管理命令usermod)
基本语法
date
案例实操
- 显示当前时间
[root@cent0S7 home]# date
2023年 02月 02日 星期四 16:42:04 CST
- date +%Y 显示当前年份(year)
[root@cent0S7 ~]# date +%Y
2023
- date +%m 显示当前月份(month)
[root@cent0S7 ~]# date +%m
02
- date +%d 显示当月天数(days)
[root@cent0S7 ~]# date +%d
03
- date +%H 显示当前小时(hours)
[root@cent0S7 ~]# date +%H
14
- date +%M 显示当前分钟(minutes)
[root@cent0S7 ~]# date +%M
42
- date +%S 显示当前秒数(seconds)
[root@cent0S7 ~]# date +%S
37
基本语法
date -s 需要修改的时间字符串
案例实操
[root@cent0S7 ~]# date -s "2023-02-03 14:32:00"
2023年 02月 03日 星期五 14:32:00 CST
基本语法
cal [month] [year]
案例实操
显示当月日历
cal
[root@cent0S7 ~]# cal
二月 2023
日 一 二 三 四 五 六
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28
显示指定年份日历
cal 查看的年份
[root@cent0S7 ~]# cal 2023
2023
一月 二月 三月
日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六
1 2 3 4 5 6 7 1 2 3 4 1 2 3 4
8 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11
15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18
22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25
29 30 31 26 27 28 26 27 28 29 30 31
####后续月份省略
####后续月份省略
####后续月份省略
同时指定年份和月份
[root@cent0S7 ~]# cal 2 2023
二月 2023
日 一 二 三 四 五 六
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28
基本语法
timedatectl [选项] (功能描述:管理时区相关信息)
选项说明
选项 | 说明 |
---|---|
status | 显示当前时间、日期、时区等信息 |
list-timezones | 看所有可用的时区 |
set-timezone <设置的时区> | 设置本机的时区 |
案例实操
#显示当前时间、日期、时区等信息
[root@localhost ~]# timedatectl status
Local time: Fri 2023-04-07 14:50:59 CST
Universal time: Fri 2023-04-07 06:50:59 UTC
RTC time: Fri 2023-04-07 06:50:53
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
#查看所有可用的时区
[root@localhost ~]# timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
...............
#设置系统的时区为上海
[root@localhost ~]# timedatectl set-timezone Asia/Shanghai
- 显示当前时间
- 修改当前时间
- 显示当月日历
Linux中,一切皆文件。
根目录结构如下所示:
目录名称 | 用途 |
---|---|
🚩/bin | Binary的缩写,存放可执行的命令二进制文件 |
🚩/sbin | super User,存放超级管理员可执行的命令 |
🚩/home | 普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般是以账号的名称命名目录 |
🚩/root | 系统管理员(超管)的主目录 |
/lib | 系统开机所需要的动态链接共享库,作用类似于Windows里的DLL文件,大部分应用程序都会用到此共享库 |
/lost+found | 这个目录一般情况下是空的,当系统非法关机后,这里会存放一些文件 |
/run | 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除 |
🚩/etc | 存放所有的系统管理所需要的配置文件和子目录 |
🚩/usr | 用户的应用程序和文件都存放在这个目录 |
/boot | 存放linux启动时的一些核心文件 |
/proc(禁止操作) | 这个目录是虚拟目录,是系统内存的映射,可以直接访问获取系统信息 |
/srv(禁止操作) | service的缩写,存放一些服务启动后需要提前的数据 |
/sys(禁止操作) | linux2.6内核新出现的内核sysfs |
🚩/tmp | 用于存放一些临时文件 |
/dev | 类似于windows的设备管理器,把所有的硬件通过文件的形式存储 |
/media | centOS6:linux系统会自动识别一些设备,例如:U盘,光驱等,并挂载到这个目录下 centOS7:迁移到/run/media |
🚩/mnt | 系统提供目录,让用户临时挂载别的文件系统,可以将外部存储挂载到此目录 |
🚩/opt | 给主机额外安装软件的目录,建议软件安装包存放在此目录下,如:mysql |
🚩/var | 这个目录用于存放不断扩充的东西,如:各种日志文件 |
pwd:print working directory
基本语法
显示当前目录的绝对路径
pwd
案例实操
[root@cent0S7 ~]# pwd
/root
ls:list
基本语法
ls [选项] [目录或文件]
选项 | 功能 |
---|---|
-a | 显示全部的文件,包括隐藏的文件 |
-l | 显示文件的完整信息,包括的属性、权限等数据(等价于命令“ll”) |
-h | 以更加便于阅读的格式输出文件大小(如 1K 234M 2G) |
--full-time | 显示更为详细的时间信息 |
案例实操
#显示全部文件
[root@cent0S7 ~]# ls -a
. .bashrc .ICEauthority study 视频
.. .cache initial-setup-ks.cfg .tcshrc 图片
anaconda-ks.cfg .config .local .viminfo 文档
.bash_history .cshrc mariadb:10.3.12.tar .Xauthority 下载
.bash_logout .dbus mariadb.tar 公共 音乐
.bash_profile .esd_auth .pki 模板 桌面
#显示文件的完整信息
[root@cent0S7 ~]# ls -l
总用量 771880
#文件类型与权限 链接数 文件属主 文件属组 文件大小(byte表示) 创建或最后修改的时间 文件或目录名字
-rw-------. 1 root root 1887 12月 7 16:24 anaconda-ks.cfg
-rw-r--r--. 1 root root 1935 12月 7 22:56 initial-setup-ks.cfg
-rw-------. 1 root root 374157312 12月 15 16:12 mariadb:10.3.12.tar
-rw-------. 1 root root 416237056 12月 15 14:52 mariadb.tar
drwxr-xr-x. 2 root root 30 1月 10 15:39 study
drwxr-xr-x. 2 root root 6 12月 8 09:40 公共
drwxr-xr-x. 2 root root 6 12月 8 09:40 模板
drwxr-xr-x. 2 root root 6 12月 8 09:40 视频
drwxr-xr-x. 2 root root 6 12月 8 09:40 图片
drwxr-xr-x. 2 root root 6 12月 8 09:40 文档
drwxr-xr-x. 2 root root 6 12月 8 09:40 下载
drwxr-xr-x. 2 root root 6 12月 8 09:40 音乐
drwxr-xr-x. 2 root root 6 12月 8 09:40 桌面
#显示文件的完整信息,并以便于阅读的格式展示文件大小
[root@cent0S7 ~]# ls -lh
总用量 754M
-rw-------. 1 root root 1.9K 12月 7 16:24 anaconda-ks.cfg
-rw-r--r--. 1 root root 1.9K 12月 7 22:56 initial-setup-ks.cfg
-rw-------. 1 root root 357M 12月 15 16:12 mariadb:10.3.12.tar
-rw-------. 1 root root 397M 12月 15 14:52 mariadb.tar
drwxr-xr-x. 2 root root 30 1月 10 15:39 study
drwxr-xr-x. 2 root root 6 12月 8 09:40 公共
drwxr-xr-x. 2 root root 6 12月 8 09:40 模板
drwxr-xr-x. 2 root root 6 12月 8 09:40 视频
drwxr-xr-x. 2 root root 6 12月 8 09:40 图片
drwxr-xr-x. 2 root root 6 12月 8 09:40 文档
drwxr-xr-x. 2 root root 6 12月 8 09:40 下载
drwxr-xr-x. 2 root root 6 12月 8 09:40 音乐
drwxr-xr-x. 2 root root 6 12月 8 09:40 桌面
cd:change directory
基本语法
cd [参数]
参数 | 功能 |
---|---|
cd 相对路径 | 切换路径 |
cd 绝对路径 | 切换路径 |
cd ~ 或 cd | 回到自己的home主目录 |
cd - | 切换至上一次访问的目录 |
cd .. | 回到当前目录上一级目录 |
cd -P | 跳转到实际物理路径,而非快捷方式 |
案例实操
#使用相对路径切换目录
[root@cent0S7 home]# pwd
/home
[root@cent0S7 home]# ls
admin tony
[root@cent0S7 home]# cd admin/
#使用绝对路径切换目录
[root@cent0S7 admin]# cd /home/tony/
#回到自己的home主目录
[root@cent0S7 tony]# cd
[root@cent0S7 ~]# pwd
/root
#回到上一级目录
[root@cent0S7 ~]# cd ../
[root@cent0S7 /]# pwd
/
#回到上一次访问的目录
[root@cent0S7 /]# cd -
/root
[root@cent0S7 ~]# cd -
/
#跳转实际物理路径
[root@cent0S7 /]# pwd
/
[root@cent0S7 /]# cd -P bin/
[root@cent0S7 bin]# pwd
/usr/bin
mkdir:make directory
基本语法
mkdir [选项] 要创建的目录
选项 | 功能 |
---|---|
-p | 创建多层目录 |
案例实操
#创建一层目录
[root@cent0S7 tony]# mkdir gitlab
#创建多层目录
[root@cent0S7 tony]# mkdir -p workspaces/java
rmdir:remove directory
基本语法
rmdir 需要删除的空目录
案例实操
[root@cent0S7 tony]# rmdir gitlab/
基本语法
touch 文件名称
案例实操
[root@cent0S7 ~]# touch abc.txt
基本语法
cp [选项] 源文件 目标文件
选项 | 功能 |
---|---|
-r | 递归复制整个文件夹 |
案例实操
#复制单个文件
[root@cent0S7 ~]# cp abc.txt /home/tony/
#递归复制整个文件夹
[root@cent0S7 ~]# cp -r /home/tony/ /home/admin/
基本语法
rm [选项] 目标文件
选项 | 功能 |
---|---|
-r | 递归删除目录中所有内容 |
-f | 强制执行删除操作,不提示确认删除选项 |
-v | 显示指令执行的详细过程 |
案例实操
#删除单个文件
[root@cent0S7 admin]# rm hello
rm:是否删除普通文件 "hello"?y
#递归强制删除文件夹
[root@cent0S7 admin]# rm -rf tony/
基本语法
mv 源文件 目标文件 (功能描述:同一目录下使用此命令为重命名,不同目录下为移动文件且同时可指定新文件名)
案例实操
#重命名文件
[root@cent0S7 admin]# mv hello hello2
#移动文件夹并进行重命名
[root@cent0S7 admin]# mv /home/tony/ /home/admin/tony/
查看文件全部内容,从第一行开始
经验技巧
仅适用于查看小文件,一屏幕就可完整显示的情况
基本语法
cat [选项] 查看的文件
选项 | 功能 |
---|---|
-n | 显示行号 |
案例实操
#查看文件内容
[root@cent0S7 admin]# cat hello
abc
def
ghi
#查看文件内容并显示行号
[root@cent0S7 admin]# cat -n hello
1 abc
2 def
3 ghi
基于vi 编辑器,一次性加载全部文件,可以进行分屏展示
基本语法
more [选项] 查看的文件
选项说明
选项 | 说明 |
---|---|
+行号X | 从第X行开始显示 |
-行号X | 一屏幕只显示X行 |
操作说明
操作 | 说明 |
---|---|
空格键(space) | 向下滚动一屏 |
回车键(enter) | 向下滚动一行 |
q | 退出more,不再显示文件内容 |
ctrl+f | 向下滚动一屏 |
ctrl+b | 向上滚动一屏 |
= | 输出当前行号 |
:f | 输出当前文件名和房号 |
v | 调用vi编辑器 |
案例实操
#从第500行开始显示
[root@cent0S7 admin]# more +500 三国演义.txt
less与more类似,具有字符串查找功能,并不是一次性加载整个文件,而是根据需要进行加载,==对显示大型文件具有较高的效率==。
基本语法
less [选项] 查看的文件
选项说明
选项 | 说明 |
---|---|
+行号X | 从第X行开始显示 |
-行号X | 一屏幕只显示X行 |
操作说明
操作 | 说明 |
---|---|
空格键(space) | 向下滚动一屏 |
回车键(enter) | 向下滚动一行 |
q | 退出less,不再显示文件内容 |
ctrl+f 或 pagedown | 向下滚动一屏 |
ctrl+b 或 pageup | 向上滚动一屏 |
/字符串 | 向下查找字符串;n:向下查找;N:向上查找; |
?字符串 | 向上查找字符串;n:向上查找;N:向下查找; |
= | 显示当前行号、字节数、当前位置占全文内容百分比等信息 |
案例实操
#从第500行开始显示
[root@cent0S7 admin]# less +500 三国演义.txt
基本语法
echo [选项] 输出内容
选项说明
选项 | 说明 |
---|---|
-e | 允许对反斜线转义的字符进行解释 |
转义字符
转义字符 | 说明 |
---|---|
\ | 输出\本身 |
\n | 换行符 |
\t | 制表符 |
案例实操
#输出一行内容
[root@cent0S7 admin]# echo hello
hello
#输出制表符
[root@cent0S7 admin]# echo -e hello\\tworld
hello world
#输出换行符
[root@cent0S7 admin]# echo -e hello\\nworld
hello
world
用于输出文件头部的内容,默认情况下显示文件前10行
基本语法
head [选项] 文件名称
选项说明
选项 | 说明 |
---|---|
-n <行数> | 指定显示头部内容的行数 |
案例实操
#显示文件前20行内容
[root@cent0S7 admin]# head -20 三国演义.txt
用于输出文件末尾的内容,默认情况下显示文件后10行
基本语法
tail [选项] 文件名称
选项说明
选项 | 说明 |
---|---|
-n <行数> | 指定显示尾部内容的行数 |
-f | 显示文件最新追加的内容,监视文件变化 |
案例实操
#显示文件后5行的内容
[root@cent0S7 ~]# tail -n 5 initial-setup-ks.cfg
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
#实时显示文件最新追加的内容
[root@cent0S7 ~]# tail -f initial-setup-ks.cfg
> 表示输出重定向,即覆盖文件原本内容
>> 表示追加写,即往文件末尾进行追加写
案例实操
#将ls展示的信息输出至ls.info文件,并覆盖原本内容
[root@cent0S7 ~]# ls -l >> ls.info
[root@cent0S7 ~]# cat ls.info
总用量 771880
-rw-r--r--. 1 root root 0 2月 7 08:46 abc.txt
-rw-------. 1 root root 1887 12月 7 16:24 anaconda-ks.cfg
-rw-r--r--. 1 root root 1935 12月 7 22:56 initial-setup-ks.cfg
#往echo.info追加写入内容
[root@cent0S7 ~]# cat echo.info
hello
[root@cent0S7 ~]# echo world >> echo.info
[root@cent0S7 ~]# cat echo.info
hello
world
软链接
- 类似于windows系统中的快捷方式,以一个链接的形式指向源文件
- 可以对不存在的文件名进行链接
- 可以对目录进行链接
- 可以跨文件系统
- 源文件删除后将无法访问
基本语法
ln -s 源目标 链接名
案例实操
#将文件f1创建一个软链接f2
[root@cent0S7 admin]# ln -s f1 f2
经验技巧
==删除软链接时,应使用 rm -r 软连接名 ,禁止使用 rm -rf 软链接名/(此命令会删除真实目录下全部内容)==
硬链接
- 以文件副本的形式存在,但不占用实际空间
- 只能对存在的文件进行链接
- 不能对目录进行链接
- 不可以跨文件系统
- 源文件删除后,仍可以进行访问
基本语法
ln 源目标 链接名
案例实操
#将文件f1创建一个硬链接f2
[root@cent0S7 admin]# ln f1 f2
经验技巧
软链接和硬链接会保持每一处链接文件的同步性,即无论改动了哪一处,所有的文件都会发生相同的变化
基本语法
history [选项]
选项说明
选项 | 说明 |
---|---|
<行数> | 显示最后执行的几行命令 |
-c | 清除历史命令 |
经验技巧
! <历史命令序号> 可以重复执行历史命令
案例实操
#显示历史命令
[root@cent0S7 admin]# history
1 history
2 ls
3 df -h
4 ll
5 cd ../
6 ls
#显示最后3条历史命令
[root@cent0S7 admin]# history 3
8 ls
9 history
10 history 3
#再次执行第3条命令
[root@cent0S7 admin]# !3
df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 895M 0 895M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda3 27G 7.0G 21G 26% /
/dev/sda1 1014M 230M 785M 23% /boot
tmpfs 182M 12K 182M 1% /run/user/42
tmpfs 182M 0 182M 0% /run/user/0
-
查看当前目录绝对路径
-
显示home主目录下的文件内容
-
在/opt目录下创建一个自己名字的目录
-
在刚新创建的目录下新建一个文件abc.txt
-
将abc.txt更改为aaa.txt
-
复制aaa.txt为bbb.txt
-
删除aaa.txt、bbb.txt
-
删除第3步所创建的目录
-
阐述cat、more、less、head、tail查看文件的区别
-
新建一个文件,尝试使用echo往文件里面覆盖写入和追加写入,并实时监听文件内容的变化
-
尝试建立一个软链接,并说明软链接和硬链接的区别
-
查看历史命令
VI 是 Unix 操作系统和类 Unix 操作系统中最通用的文本编辑器。
VIM 编辑器是从 VI 发展出来的一个性能更强大的文本编辑器。可以主动的以字体颜色辨别语法的正确性,方便程序设计。VIM 与 VI 编辑器完全兼容。
基本语法
vi/vim 文件名称
基本语法
- 打开文件后,默认进入的就是一般模式,可以移动光标、复制、删除文字
- 在编辑模式和指令模式中按【esc】会进入一般模式
操作说明
操作 | 说明 |
---|---|
yy | 复制光标当前一行 |
y 数字 y | 复制一段(光标当前行开始,至后续指定数字行) |
p | 从当前光标位置进行粘贴 |
dd | 删除光标当前行 |
d 数字 d | 删除一段(光标当前行开始,至后续指定数字行) |
yw | 复制一个词 |
dw | 删除一个词 |
u | 撤销上一步 |
x | 删除光标当前位置字符 |
X | 上传光标前一位置字符 |
shift+^ | 移动到行头 |
shift+$ | 移动到行尾 |
shift+g | 移动到页尾 |
1+shift+g | 移动到页头 |
数字+shift+g | 移动到指定行数 |
基本语法
- 输入 i、I、o、O、a、A中的任何一个字母都可以进入编辑模式,在画面下方会出现【INSERT】字样,此时可编辑文本内容
- 按 Esc 键后退出编辑模式回到一般模式
操作说明
操作 | 说明 |
---|---|
i | 当前光标前插入 |
a | 当前光标后插入 |
o | 当前光标行的下一行插入 |
I | 光标所在行最前插入 |
A | 光标所在行最后插入 |
O | 当前光标行的上一行插入 |
基本语法
- 在一般模式 中,输入【:、/、?】中的任何一个,就可以将光标移动至画面底部进入指令模式
- 按 Esc 键后退出编辑模式回到一般模式
操作说明
操作 | 说明 |
---|---|
:w | 保存 |
:q | 退出 |
:! | 强制执行(wq!三个操作可组合使用) |
/要查找的词 | n向下查找,N向上查找 |
:noh | 取消高亮显示 |
:set number | 显示行号 |
:set nonumber | 关闭行号 |
:%s/old/new/g | 替换内容,/g表示替换匹配到的所有内容,不加只会执行一次替换 |
使用VIM编辑器执行以下操作:
- 复制多行
- 删除多行
- 显示行号
- 查找字符
- 替换字符
- 撤销上一步操作
- 使用编辑模式写入任意内容,并保存文件
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。
为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用ll或者ls-l命令来显示一个文件的属性以及文件所属的用户和组。
案例实操
[root@cent0S7 ~]# ll
###中间部分省略
###中间部分省略
###中间部分省略
#文件权限 #链接数 #文件属主 #文件属组 #文件大小 #创建或最近修改时间 #文件名
drwxr-xr-x. 2 root root 30 1月 10 15:39 study
drwxr-xr-x. 2 root root 6 12月 8 09:40 公共
drwxr-xr-x. 2 root root 6 12月 8 09:40 模板
文件权限从左至右10位字符具体含义如下:
文件类型 | 属主权限 | 属组权限 | 其他用户权限 | |
---|---|---|---|---|
位置 | 0 | 123 | 456 | 789 |
示例 | d | rwx | r-x | r-x |
解释 | 目录或文件 | 读、写、执行 | 读、写、执行 | 读、写、执行 |
- 0位:表示文件类型,d 为目录、- 为文件、l 为链接文档、b为可存储设备、c为串行端口设备(键盘、鼠标等)
- 1-3位:表示文件属主的文件权限(user)
- 4-6位:表示属组的文件权限(group)
- 7-9位:表示其他用户拥有的文件权限(ohter)
rwx作用于文件和目录的不同解释
-
作用于文件
- 【r】可以读取、查看
- 【w】可以修改,但不一定能删除,删除需要对当前文件夹有写权限
- 【x】可以被系统执行
- 【-】表示无权限
-
作用于目录
- 【r】可以查看目录内容
- 【w】可以创建、删除、重命名目录
- 【x】可以进入目录
- 【-】表示无权限
基本语法
-
方法一:chmod [{ugoa}{+-=}{rwx}] 文件或目录
u:所有者 g:所属组 o:其他人 a:所有人(u、g、o的总和)
+:新增权限 -:移除权限 =:重新设置权限
案例实操
#所有者新增执行权限 [root@cent0S7 master]# chmod u+x abc.txt #所有者移除执行权限 [root@cent0S7 master]# chmod u-x abc.txt #所有者仅设置执行权限(所有者的其他权限会被移除) [root@cent0S7 master]# chmod u=x abc.txt #所有人新增读权限 [root@cent0S7 master]# chmod a+r abc.txt
-
方法二:chmod [mode=421] 文件或目录
r=4 w=2 x=1 rwx=4+2+1=7
案例实操
#为所有者设置读写执行权限、为所属组设置读写权限、其他用户不设置任何权限
[root@cent0S7 master]# chmod 760 abc.txt
[root@cent0S7 master]# ll
总用量 0
-rwxrw----. 1 root root 0 2月 28 10:20 abc.txt
选项说明
选项 | 说明 |
---|---|
-R | 递归操作 |
基本语法
chown [选项] [最终用户] [文件或目录]
选项说明
选项 | 说明 |
---|---|
-R | 递归操作 |
案例实操
#改变文件所有者
[root@cent0S7 master]# ll
总用量 0
-rwxrw----. 1 root root 0 2月 28 10:20 abc.txt
[root@cent0S7 master]# chown admin abc.txt
[root@cent0S7 master]# ll
总用量 0
-rwxrw----. 1 admin root 0 2月 28 10:20 abc.txt
#改变文件所有者和所属组
[root@cent0S7 master]# chown admin:ad abc.txt
[root@cent0S7 master]# ll
总用量 0
-rwxrw----. 1 admin ad 0 2月 28 10:20 abc.txt
基本语法
chgrp [最终用户组] [文件或目录]
选项说明
选项 | 说明 |
---|---|
-R | 递归操作 |
案例实操
#递归修改文件所属组
chgrp -R root /home/admin/
- 使用 ll 命令,说明文件权限一列各项参数的含义
- 说明rwx作用于文件和文件夹的区别
- 设置文件权限为属主全部权限、属组读写权限、其他用户无权限
- 改变文件属主信息
- 改变文件属组信息
gzip/gunzip只可解压缩*.gz结尾的文件
基本语法
- gzip 待压缩的文件名 (压缩文件)
- gunzip 待解压的文件名 (解压文件)
案例实操
#压缩
[root@localhost admin]# gzip abc.txt
#解压
[root@localhost admin]# gunzip abc.txt.gz
经验技巧
- 只能压缩文件,不能压缩目录
- 不会保留原来的文件
- 可以同时打包多个文件,但会出现多个压缩包
zip/unzip只可解压缩*.zip结尾的文件,zip压缩会保留源文件
基本语法
- zip [选项] 压缩包的文件名.zip 需要打包的文件名称
- unzip [选项] 压缩包的文件名.zip
选项说明
zip选项 | 功能 |
---|---|
-r | 压缩目录 |
unzip选项 | 功能 |
---|---|
-d <目录名称> | 解压至指定的目录 |
案例实操
#压缩目录
[root@localhost home]# zip -r admin.zip admin/
#解压文件至指定目录
[root@localhost home]# unzip -d /home/admin-bak admin.zip
tar命令用于解压缩文件,会保留源文件
基本语法
tar [选项] 压缩包文件名.tar.gz 需要打包的文件名称A(可多个) 需要打包的文件名称B ...
选项说明
选项 | 功能 |
---|---|
-c | 产生.tar打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解压.tar文件 |
-C | 解压到指定目录 |
案例实操
#压缩多个文件
[root@localhost admin]# tar -zcvf abc.tar.gz aaa.txt bbb.txt ccc.txt
#压缩目录
[root@localhost admin]# tar -zcvf admin.tar.gz admin
#解压到当前目录
[root@localhost home]# tar -zxvf admin.tar.gz
#解压到指定目录
[root@localhost home]# tar -zxvf admin.tar.gz admin -C /home/admin-bak
- 说明解压缩文件有哪几类命令,每类命令用于解压什么格式的文件
- 尝试用tar命令压缩、解压文件
find 命令将从指定目录向下递归遍历各个子目录,将满足条件的文件显示在终端。
基本语法
find [搜索范围] [选项]
选项说明
选项 | 说明 |
---|---|
-name | 指定文件名或目录 |
-user | 查找属于指定用户的文件 |
-size | 查找指定大小的文件 k-KB M-MB G-GB |
案例实操
#查找指定目录下的文件
[root@localhost home]# find /home/ -name admin*.gz
#查找指定目录下,指定用户的文件
[root@localhost home]# find /home/ -user root
#查找目录下指定大小的文件
[root@localhost home]# find /home/ -size +5M
locate 会根据系统中所有的文件名称及其路径生成locate数据库,从而实现快速定位文件。locate 指令无需遍历整个文件系统,查询速度较快。
基本语法
locate 文件名称
经验技巧
-
第一次使用locate命令,必须执行 updatedb 命令创建locate数据库
-
locate数据库的更新不是实时的,查找最新的文件前,建议执行 updatedb 命令更新数据库
案例实操
[root@localhost home]# updatedb
[root@localhost home]# locate admin.zip
/home/admin.zip
管道符 “|” 表示将前一个命令的处理结果输出传递给后面的命令处理。
基本语法
grep [选项] 查找内容
选项说明
选项 | 说明 |
---|---|
-n | 显示匹配的行号 |
案例实操
#过滤当前文件夹下包含admin的文件
[root@localhost home]# ll | grep -n admin
3:drwx------. 15 admin admin 4096 Mar 16 02:20 admin
4:drwxr-xr-x. 3 root root 19 Mar 16 01:13 admin-bak
5:-rw-r--r--. 1 root root 735498 Mar 20 00:51 admin.tar.gz
6:-rw-r--r--. 1 root root 734995 Mar 16 01:21 admin.tar.gz1
7:-rw-r--r--. 1 root root 764453 Mar 16 01:10 admin.zip
- 使用find命令查找文件、查找指定用户的文件、查找指定大小的文件
- 使用locate查找文件,并说明注意事项
- 使用grep和管道符过滤文本中的文件内容
du: disk usage 磁盘占用情况
基本语法
du 目录/文件 [选项] (功能描述:显示目录下每个子目录的磁盘使用情况)
选项说明
选项 | 说明 |
---|---|
-h | 以方便人们进行阅读的方式展示文件大小,如:GB、MB、KB |
-a | 显示个别文件或目录的大小 |
-c | 显示文件和目录的总和 |
-s | 只显示总和 |
--max-depth=n | 指定统计子目录的深度为第n层 |
案例实操
#查看当前文件夹占用的磁盘空间大小
[root@localhost home]# du -sh
112M .
#显示指定文件的大小及其总和
[root@localhost home]# du -ac *.zip
748 admin.zip
748 total
#显示第一层文件夹的大小
[root@localhost home]# du -h --max-depth=1
55M ./admin
4.2M ./admin-bak
0 ./ad-bak
112M .
df:disk free 空余磁盘
基本语法
df [选项] (功能描述:列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况)
选项说明
选项 | 说明 |
---|---|
-h | 以方便人们进行阅读的方式展示文件大小,如:GB、MB、KB |
案例实操
#查看磁盘使用情况
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 895M 0 895M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda3 18G 5.2G 13G 30% /
/dev/sda1 297M 163M 134M 55% /boot
tmpfs 182M 12K 182M 1% /run/user/42
tmpfs 182M 0 182M 0% /run/user/0
基本语法
lsblk [选项] (功能描述:查看设备挂载情况)
选项说明
选项 | 说明 |
---|---|
-f | 显示更为详细的信息,包括文件系统的信息 |
案例实操
#查看设备挂载情况(boot表示引导分区、SWAP表示内存交换分区、/表示根目录)
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 49021d45-f1f2-40e1-87c1-61f7f05f170e /boot
├─sda2 swap d0c1edb4-5c69-416f-9bfa-3be380d952b4 [SWAP]
└─sda3 xfs 865ac41c-3822-4134-9df6-a9ff41e7ba77 /
sr0
Linux的文件系统包含多个分区,每个分区对应一个挂载的目录,但整个文件系统都只有一个根目录,根目录下其他的子目录可以来自多个分区。
基本语法
mount [-t vfstype] [-o options] 挂载设备 挂载点 (功能描述:挂载设备)
umount 设备文件名或挂载点 (功能描述:卸载设备)
参数说明
参数 | 说明 |
---|---|
-t vfstype | 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有: 光盘或光盘镜像:iso9660 DOS fat16 文件系统:msdos Windows 9x fat32 文件系统:vfat Windows NT ntfs 文件系统:ntfs Mount Windows 文件网络共享:smbfs UNIX(LINUX) 文件网络共享:nfs |
-o options | 主要用来描述设备或档案的挂接方式。常用的参数有: loop:用来把一个文件当成硬盘分区挂接上系统 ro:采用只读方式挂接设备 rw:采用读写方式挂接设备 iocharset:指定访问文件系统所用字符集 |
案例实操
(1)挂载光盘镜像文件
#新建挂载目录
[root@localhost mnt]# mkdir cdrom
#挂载目录
[root@localhost mnt]# mount -t iso9660 /dev/cdrom /mnt/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only
#卸载目录
[root@localhost mnt]# umount /mnt/cdrom
(2)设置开机挂载
[root@localhost cdrom]# vim /etc/fstab
UUID=865ac41c-3822-4134-9df6-a9ff41e7ba77 / xfs defaults 0 0
UUID=49021d45-f1f2-40e1-87c1-61f7f05f170e /boot xfs defaults 0 0
UUID=d0c1edb4-5c69-416f-9bfa-3be380d952b4 swap swap defaults 0 0
##新增一行,UUID通过lsblk -f 获取
UUID=2020-11-04-11-36-43-00 /mnt/cdrom iso9660 defaults 0 0
#此处也可直接配置/dev/cdrom,但更推荐配置UUID,防止重名的设备冲突
#/dev/cdrom /mnt/cdrom iso9660 defaults 0 0
基本语法
fdisk -l (功能描述:查看磁盘分区详情)
fdisk 硬盘设备名 (功能描述:对新增磁盘进行分区操作)
选项说明
选项 | 说明 |
---|---|
-l | 显示所有硬盘的分区列表 |
功能说明
- fdisk -l
[root@localhost ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0002026e
#分区序列 #引导分区 #从X磁柱开始 #从Y磁柱结束 #容量 #分区类型ID #分区类型
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 616447 307200 83 Linux
/dev/sda2 616448 4810751 2097152 82 Linux swap / Solaris
/dev/sda3 4810752 41943039 18566144 83 Linux
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
-
fdisk 硬盘设备名
按键 说明 m 显示命令列表 p 显示当前磁盘分区 n 新增分区 w 写入分区信息并退出 q 不保存分区信息并退出
案例实操
看前须知
1.新增磁盘进行分区的时候,方可参照此方法,操作前请先对服务器建立快照
2.进行分区时,若命令操作有误,及时输入 q 退出,不会保存任何更改
3.fdisk最大只可创建2T分区的盘,超过2T需使用parted
1.新增挂载磁盘后,重启服务器才可看到新加的磁盘
[root@localhost ~]# reboot
2.查看新增磁盘的信息
[root@localhost ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0002026e
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 616447 307200 83 Linux
/dev/sda2 616448 4810751 2097152 82 Linux swap / Solaris
/dev/sda3 4810752 41943039 18566144 83 Linux
###此处为新增磁盘信息,尚未进行分区,磁盘大小为10GB
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
3.开始对磁盘/dev/sdb进行分区
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x8b6fa1f8.
Command (m for help):
4.输入 n ,新增一块分区
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
5.输入 p ,新增一个主分区
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
6.连续输入三次回车使用默认参数,确认主分区编号、扇区起始位置、扇区结束位置
#确认主分区编号
Partition number (1-4, default 1):
#确认扇区起始位置
First sector (2048-20971519, default 2048):
Using default value 2048
#确认扇区结束位置
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519):
Using default value 20971519
Partition 1 of type Linux and of size 10 GiB is set
7.输入 p ,确认新增分区的信息
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xc7a8cac9
#确认分区号、起始扇区、结束扇区
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20971519 10484736 83 Linux
8.输入 w,保存磁盘分区的变更
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
9.查看其他挂载磁盘的文件系统类型
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 49021d45-f1f2-40e1-87c1-61f7f05f170e /boot
├─sda2 swap d0c1edb4-5c69-416f-9bfa-3be380d952b4 [SWAP]
└─sda3 xfs 865ac41c-3822-4134-9df6-a9ff41e7ba77 /
sdb
└─sdb1
10.为新划分的分区创建文件系统xfs(根据实际情况指定,最好与之前的分区文件系统保持一致)
[root@localhost ~]# mkfs -t xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=655296 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2621184, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
11.将新的分区/dev/sdb1挂载到/data文件下
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount /dev/sdb1 /data/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 895M 0 895M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda3 18G 5.2G 13G 30% /
/dev/sda1 297M 163M 134M 55% /boot
tmpfs 182M 12K 182M 1% /run/user/42
tmpfs 182M 0 182M 0% /run/user/0
/dev/sdb1 10G 33M 10G 1% /data
12.设置开机挂载
[root@localhost ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Mar 8 08:43:52 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=865ac41c-3822-4134-9df6-a9ff41e7ba77 / xfs defaults 0 0
UUID=49021d45-f1f2-40e1-87c1-61f7f05f170e /boot xfs defaults 0 0
UUID=d0c1edb4-5c69-416f-9bfa-3be380d952b4 swap swap defaults 0 0
#新增一行,UUID通过 lsblk -f 命令获取
UUID=2ba4b44a-aa13-467d-92bd-bd73a7b7456c /data xfs defaults 0 0
基本语法
parted 硬盘设备名
案例实操
看前须知
1.parted的所有操作都是立即生效,进行操作前一定要做快照!
2.parted的所有操作都是立即生效,进行操作前一定要做快照!
3.parted的所有操作都是立即生效,进行操作前一定要做快照!
1.开始分区
[root@localhost ~]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
2.修改成 GPT 分区表
(parted) mklabel
New disk label type? gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will
be lost. Do you want to continue?
Yes/No? yes
3.建立分区,并设置对应文件系统类型xfs(根据实际情况设置)
(parted) mkpart
Partition name? []? part1
File system type? [ext2]? xfs
Start? 0%
End? 100%
4.查看分区信息
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 10.7GB 10.7GB part1
5.退出parted
(parted) quit
Information: You may need to update /etc/fstab.
6.建立文件系统
[root@localhost ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=655232 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2620928, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
7.挂载磁盘
[root@localhost ~]# mount /dev/sdb1 /data/
8.查看磁盘空间使用情况
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 895M 0 895M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda3 18G 5.2G 13G 30% /
/dev/sda1 297M 163M 134M 55% /boot
tmpfs 182M 28K 182M 1% /run/user/0
/dev/sr0 4.4G 4.4G 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 10G 33M 10G 1% /data
9.查看新增磁盘分区sdb1的UUID
#查看设备挂载情况
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 49021d45-f1f2-40e1-87c1-61f7f05f170e /boot
├─sda2 swap d0c1edb4-5c69-416f-9bfa-3be380d952b4 [SWAP]
└─sda3 xfs 865ac41c-3822-4134-9df6-a9ff41e7ba77 /
sdb
└─sdb1 xfs 7538b2f3-624d-4963-a1e2-6ee023d5152f /data
sr0 iso9660 CentOS 7 x86_64 2020-11-04-11-36-43-00 /run/media/root/CentOS 7
10.设置开机自动挂载
#设置开机自动挂载
[root@localhost ~]# vim /etc/fstab
# /etc/fstab
# Created by anaconda on Wed Mar 8 08:43:52 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=865ac41c-3822-4134-9df6-a9ff41e7ba77 / xfs defaults 0 0
UUID=49021d45-f1f2-40e1-87c1-61f7f05f170e /boot xfs defaults 0 0
UUID=d0c1edb4-5c69-416f-9bfa-3be380d952b4 swap swap defaults 0 0
#新增一行
UUID=7538b2f3-624d-4963-a1e2-6ee023d5152f /data xfs defaults 0 0
LVM(Logical Volume Manager)逻辑卷管理系统,可以对多个磁盘分区建立一个逻辑卷,可弹性调整逻辑卷的大小,每次新增一个磁盘分区至逻辑,只需对新加入的磁盘分区进行格式,不影响之前存储的数据。
名词解释
- PV:物理卷,为整个LVM的最底层,为整个物理硬盘的分区,划分了一个特殊区域记录LVM相关的管理参数
- VG:卷组,建立在物理卷之上,一个卷组至少包含一个物理卷,一个逻辑卷可以包含多个卷组
- LV:逻辑卷,逻辑卷建立在卷组之上,卷组中未分配的空间可建立新的逻辑卷,逻辑卷建立后可动态扩展和缩小空间
- PE:物理区域,物理区域是物理卷中的最小存储单元,物理区域在建立物理卷指定,一旦确定无法更改。同一卷组所有物理卷的物理区域大小一致,新的PV加入到VG,PE的大小自动变更为VG中定义的PE大小
- LE:逻辑区域,逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中物理区域的大小。一个逻辑卷最多只能包含65536个PE,所以PE的大小决定了逻辑卷的容量,4MB的PE决定了单个逻辑卷的最大容量为256GB。在Red Hat Enterprise Linux AS 4中PE大小范围为8 KB 到 16GB,并且必须总是 2 的倍数
1.PV物理卷
(1)创建物理卷
pvcreate [选项] 设备名称
选项说明
选项 | 说明 |
---|---|
-f | 强制创建逻辑卷,不需用户确认 |
-u | 指定设备UUID |
-y | 所有问题都回答yes |
(2)扫描物理卷
pvscan [选项]
选项说明
选项 | 说明 |
---|---|
-e | 仅显示属于输出卷组的物理卷 |
-n | 仅显示不属于任何卷组的物理卷 |
-u | 显示UUID |
(3)显示物理卷
pvdisplay [pv名称]
(4)移除物理卷
pvremove [选项] pv名称
选项 | 说明 |
---|---|
-f | 强制删除 |
-y | 所以问题都回答yes |
2.VG卷组
(1)创建卷组
vgcreate [选项] VG名称 PV名称
选项说明
选项 | 说明 |
---|---|
-s | 卷组中的物理卷PE大小,默认为4M |
-l | 卷组上允许创建的最大逻辑卷数 |
-p | 卷组中允许添加的最大物理卷数 |
(2)扫描卷组
vgscan
(3)显示卷组
vgdisplay [选项] [VG名称]
选项说明
选项 | 说明 |
---|---|
-A | 仅显示活动卷组信息 |
-s | 使用短格式输出信息 |
(4)扩容卷组
vgextend VG名称 PV名称
(5)缩容卷组
vgreduce VG名称 PV名称 (功能描述:不能移除卷组中最后一个物理卷PV)
(6)删除卷组
vgremove [选项] VG名称 (功能描述:删除时,其上的逻辑卷必须处于离线状态)
选项说明
选项 | 说明 |
---|---|
-f | 强制删除 |
(7)设置卷组活动状态
vgchange -a n/y VG名称 (功能描述:-a n 为休眠状态,休眠之前确保其上的逻辑卷都离线;-a y 为活动状态)
3.LV逻辑卷
(1)创建逻辑卷或快照
lvcreate [选项] [参数]
选项说明
选项 | 说明 |
---|---|
-L | 指定大小 |
-l | 指定大小(LE数) |
-n | 指定名称 |
-s | 创建快照 |
-p r | 设置为只读(该选项一般用于创建快照中) |
参数说明
使用该命令时,创建逻辑卷参数为指定卷组,创建快照为指定逻辑卷
(2)扫描逻辑卷
lvscan
(3)显示逻辑卷
lvdisplay [/dev/VG名称/LV名称]
(4)扩容逻辑卷
lvextend -r -L/-l 扩展的大小 /dev/VG名称/LV名称
参数说明
- -L:指定扩展后的大小(单位:M、G)
- -l:指定扩展后的大小(PE数)
- -r: 使扩容的文件系统立即生效
(5)缩容逻辑卷(离线卸载使用)
lvreduce -L/-l 缩减的大小 /dev/VG名称/LV名称
参数说明
- -L:指定缩减后的大小(单位:M、G)
- -l:指定缩减后的大小(PE数)
(6)删除逻辑卷(离线卸载使用)
lvremove [选项] /dev/VG名称/LV名称
选项说明
选项 | 说明 |
---|---|
-f | 强制删除 |
1.查看新挂载的磁盘(本案例新挂载的磁盘为500G的/dev/vdb)
[root@localhost ~]# fdisk -l
Disk /dev/vda:200 GiB,214748364800 字节,419430400 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:9538B717-B5E7-4EA8-9089-E07530DDFAB8
设备 起点 末尾 扇区 大小 类型
/dev/vda1 2048 411647 409600 200M EFI 系统
/dev/vda2 411648 2508799 2097152 1G Linux 文件系统
/dev/vda3 2508800 419428351 416919552 198.8G Linux LVM
Disk /dev/vdb:500 GiB,536870912000 字节,1048576000 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
Disk /dev/mapper/klas-root:198.82 GiB,213460713472 字节,416915456 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
2.开始分区
[root@localhost ~]# fdisk /dev/vdb
欢迎使用 fdisk (util-linux 2.35.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x7438dd1e 的新 DOS 磁盘标签。
###新建主分区
命令(输入 m 获取帮助):n
分区类型
p 主分区 (0 primary, 0 extended, 4 free)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认 1): 1
第一个扇区 (2048-1048575999, 默认 2048): 2048
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-1048575999, 默认 1048575999): 1048575999
创建了一个新分区 1,类型为“Linux”,大小为 500 GiB。
###将分区类型设置为Linux LVM
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e
已将分区“XENIX root”的类型更改为“Linux LVM”。
###查看新建分区信息
命令(输入 m 获取帮助):p
Disk /dev/vdb:500 GiB,536870912000 字节,1048576000 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7438dd1e
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/vdb1 2048 1048575999 1048573952 500G 8e Linux LVM
###写入此次操作
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
3.创建物理卷PV
#pvcreate [分区名称]
[root@localhost ~]# pvcreate /dev/vdb1
Physical volume "/dev/vdb1" successfully created.
4.创建卷组VG
#vgcreate [卷组名称] [分区名称]
[root@localhost ~]# vgcreate vg-vdb1 /dev/vdb1
Volume group "vg-data" successfully created
5.在卷组上创建逻辑卷LV
#lvcreate -L [逻辑卷大小] -n [逻辑卷名称] [卷组名称]
[root@localhost ~]# lvcreate -L 499.9G -n lv-vdb1 vg-vdb1
Rounding up size to full physical extent 499.90 GiB
6.格式化逻辑卷
lvscan
mke2fs -t ext4 /dev/data/lv-data
7.挂载逻辑卷
#新建挂载目录
mkdir /data
#挂载设备通过 lsblk -f 查看
#mount [挂载设备] [挂载目录]
mount /dev/mapper/data-lv--data /data
8.设置开机挂载
vim /etc/fstab
#修改以下内容
#
# /etc/fstab
# Created by anaconda on Mon Jul 17 09:08:44 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/klas-root / xfs defaults 0 0
UUID=b35fde7e-e423-426d-b74c-0bf8e42684b0 /boot xfs defaults 0 0
UUID=4952-D640 /boot/efi vfat umask=0077,shortname=winnt 0 2
#新增一行,UUID通过lsblk -f 获取
UUID=77b5a5f1-3556-4522-8740-32395782ad38 /data ext4 defaults 0 0
0.格式化新分区
fdisk /dev/vdc (具体操作不再赘述,参照之前部分)
1.新建磁盘分区创建对应PV
pvcreate /dev/vdc1
2.扩容VG
vgextend vg名称 /dev/vdc1
3.扩容LV(扩容时指定扩容后大小,并指定-r参数)
lvextend -r -L 700G lv名称
经验技巧
命令去除未知或已丢失的VG
vgreduce --removemissing /dev/VolGroup00
- 查看目录占用总大小
- 查看目录类某类文件占用总大小
- 查看磁盘空间使用情况
- 查看设备挂载情况
- 尝试挂载光驱
- 尝试新增一块磁盘进行fdisk分区,并创建文件系统,进行挂载
- 尝试新增一块磁盘进行parted分区,并创建文件系统,进行挂载
进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
ps:process status 进程状态
基本语法
ps aux | grep xxx (功能描述:查看系统中所有进程)
ps -ef | grep xxx (功能描述:可以查看子父进程之间的关系)
选项说明
选项 | 说明 |
---|---|
a | 列出带有终端所有用户的进程 |
x | 列出当前用户的偶有进程,包括没有终端的进程 |
u | 面向用户友好的显示风格 |
-e | 列出所有进程 |
-u | 列出某个用户关联的所有进程 |
-f | 显示完整格式的进程列表 |
功能说明
1.ps aux 显示信息说明
字段 | 说明 |
---|---|
USER | 该进程是由哪个用户产生的 |
PID | 进程的 ID 号 |
%CPU | 该进程占用 CPU 资源的百分比,占用越高,进程越耗费资源 |
%MEM | 该进程占用物理内存的百分比,占用越高,进程越耗费资源 |
VSZ | 该进程占用虚拟内存的大小,单位 KB |
RSS | 该进程占用实际物理内存的大小,单位 KB |
TTY | 该进程是在哪个终端中运行的。对于 CentOS 来说,tty1 是图形化终端,?表示没有任何终端 |
tty2-tty6 | 是本地的字符界面终端。pts/0-255 代表虚拟终端 |
STAT | 进程状态。常见的状态有:R:运行状态、S:睡眠状态、T:暂停状态、Z:僵尸状态、s:包含子进程、l:多线程、+:前台显示、<:高优先级、N:低优先级 |
START | 该进程的启动时间 |
TIME | 该进程占用 CPU 的运算时间,注意不是系统时间 |
COMMAND | 产生此进程的命令名 |
2.ps -ef 显示信息说明
字段 | 说明 |
---|---|
UID | 用户ID |
PID | 进程 ID |
PPID | 父进程 ID |
C | CPU 用于计算执行优先级的因子。数值越大,表明进程是 CPU 密集型运算,执行优先级会降低;数值越小,表明进程是 I/O 密集型运算,执行优先级会提高 |
STIME | 进程启动的时间 |
TTY | 完整的终端名称 |
TIME | CPU 时间 |
CMD | 启动进程所用的命令和参数 |
经验技巧
-
如果想查看进程的 CPU 占用率和内存占用率,可以使用 aux
-
如果想查看进程的父进程 ID 可以使用 ef
案例实操
#查看进程CPU占用率和内存使用率
[root@localhost data]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 194048 4296 ? Ss Apr24 0:25 /usr/lib/systemd/systemd --swit
root 2 0.0 0.0 0 0 ? S Apr24 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< Apr24 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S Apr24 0:04 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S Apr24 0:01 [migration/0]
#查看进程的父进程ID
[root@localhost data]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Apr24 ? 00:00:25 /usr/lib/systemd/systemd --switched-root --syst
root 2 0 0 Apr24 ? 00:00:00 [kthreadd]
root 4 2 0 Apr24 ? 00:00:00 [kworker/0:0H]
root 6 2 0 Apr24 ? 00:00:04 [ksoftirqd/0]
root 7 2 0 Apr24 ? 00:00:01 [migration/0]
#查找ssh进程
[root@localhost data]# ps -ef | grep ssh
root 1078 1 0 Apr24 ? 00:00:00 /usr/sbin/sshd -D
root 8918 8789 0 Apr24 ? 00:00:06 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
root 19897 1078 0 Apr25 ? 00:00:07 sshd: root@pts/1,pts/2,pts/3,pts/0
root 33595 79803 0 14:59 pts/0 00:00:00 grep --color=auto ssh
基本语法
kill [选项] 进程号 (功能描述:通过进程号杀死进程)
killall 进程名称 (功能描述:谨慎使用!!!通过进程名称杀死进程,也支持通配符,在系统因负载过大而变得很慢时可使用)
选项说明
选项 | 说明 |
---|---|
-9 | 表示强迫进程立即停止 |
案例实操
#根据进程号强制杀死指定进程
[root@localhost data]# kill 19897
#通过进程名称杀死进程
[root@localhost ~]# killall sshd
基本语法
pstree [选项]
选项说明
选项 | 说明 |
---|---|
-p | 显示进程的PID |
-u | 显示进程的所属用户 |
案例实操
#显示进程的PID
[root@localhost ~]# pstree -p
#显示进程的所属用户
[root@localhost ~]# pstree -u
基本语法
top [选项]
选项说明
选项 | 说明 |
---|---|
-d 秒数 | 指定top命令每隔几秒更新,默认为3秒 |
-i | 不显示任何闲置或者僵死进程 |
-p 进程号 | 指定进程ID来监控进程状态 |
操作说明
操作 | 说明 |
---|---|
P | 以CPU使用率降序 |
M | 以内存使用率降序 |
N | 以PID排序 |
k | 杀死进程 |
U | 筛选指定用户的进程 |
q | 退出top |
字段说明
第一行信息为任务队列信息
字段 | 说明 |
---|---|
top - 08:38:36 | 系统当前时间 |
up 2:05 | 系统运行时间,已运行2小时5分钟 |
1 user | 当前登录了2个用户 |
load average: 0.00, 0.01, 0.05 | 分别为系统在1分钟、5分钟、15分钟的CPU平均负载;小于1则负载较小,大于1则系统已超负荷;平均负载小于0.7则代表运行状态良好(以单核CPU估算,多核乘以处理器个数) |
第二行为进程信息
字段 | 说明 |
---|---|
Tasks: 167 total | 系统中的进程总数 |
2 running | 正在运行的进程数 |
165 sleeping | 睡眠的进程数 |
0 stopped | 正在停止的进程数 |
0 zombie | 僵尸进程,如果不是0,需要手工检查僵尸进程 |
第三行为CPU信息
字段 | 说明 |
---|---|
%Cpu(s): 0.0 us | 用户模式占用的 CPU 百分比 |
0.0 sy | 系统模式占用的 CPU 百分比 |
0.0 ni | 改变过优先级的用户进程占用的 CPU 百分比 |
99.9 id | 空闲 CPU 的 CPU 百分比 |
0.0 wa | 等待输入/输出的进程的占用 CPU 百分比 |
0.0 hi | 硬中断请求服务占用的 CPU 百分比 |
0.0 si | 软中断请求服务占用的 CPU 百分比 |
0.0 st | st(Steal time)虚拟时间百分比。就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比 |
第四行为物理内存信息
字段 | 说明 |
---|---|
KiB Mem : 1863032 total | 物理内存的总量,单位 KB |
928648 free | 已经使用的物理内存数量 |
551124 used | 空闲的物理内存数量 |
383260 buff/cache | 作为缓冲的内存数量 |
第五行为交换分区信息
字段 | 说明 |
---|---|
KiB Swap: 2097148 total | 交换分区(虚拟内存)的总大小 |
2097148 free | 已经使用的交换分区的大小 |
0 used | 空闲交换分区的大小 |
1133848 avail Mem | 作为缓存的交换分区的大小 |
第六行表头为进程信息
字段 | 说明 |
---|---|
PID | 进程号 |
USER | 进程所属用户 |
PR | 任务调度优先级 |
NI | 任务调度用户指定优先级 |
VIRT | 虚拟内存占用大小 |
RES | 物理内存占用大小 |
SHR | 共享内存占用大小 |
S | 进程状态,S代表睡眠,R代表运行 |
%CPU | 进程消耗CPU的百分比 |
%MEM | 进程消耗内存的百分比 |
TIME+ | 进行占用CPU运算的总时间 |
COMMAND | 生成当前进程的命令 |
案例实操
#指定top的刷新时间为10秒
[root@localhost ~]# top -d 10
#过滤闲置和僵死进程
[root@localhost ~]# top -i
#监控指定进程
[root@localhost ~]# top -p 1758
基本语法
netstat -anp | grep 进程号 (功能描述:查看该进程网络信息)
netstat -nlp | grep 端口号 (功能描述:查看网络端口号占用情况)
选项说明
选项 | 说明 |
---|---|
-a | 显示所有正在监听和未监听的套接字 |
-n | 禁止域名解析功能,套接字以IP地址进行展示,不显示主机名或域名 |
-l | 显示所有监听的端口 |
-p | 表示显示哪个进程在调用 |
案例实操
#显示sshd进程的网络信息
[root@localhost ~]# netstat -anp | grep sshd
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 1993/sshd: root@pts
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1092/sshd
tcp 0 36 192.168.220.141:22 192.168.220.1:60804 ESTABLISHED 1993/sshd: root@pts
tcp6 0 0 ::1:6010 :::* LISTEN 1993/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 1092/sshd
unix 2 [ ] DGRAM 33304 1993/sshd: root@pts
unix 3 [ ] STREAM CONNECTED 25453 1092/sshd
#查看22端口的使用情况
[root@localhost ~]# netstat -nlp | grep 22
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1396/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1092/sshd
tcp6 0 0 :::22 :::* LISTEN 1092/sshd
udp 0 0 192.168.122.1:53 0.0.0.0:* 1396/dnsmasq
经验技巧
麒麟V10操作系统查看端口连接情况
[root@localhost ~]# netstat -tn
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 10.20.30.159:49338 10.20.30.249:9685 ESTABLISHED
tcp 0 0 10.20.30.159:40800 10.20.30.249:9686 ESTABLISHED
tcp 0 180 10.20.30.159:22 10.20.30.168:56600 ESTABLISHED
基本语法
tcpdump [选项]
案例实操
#监听TCP端口80(HTTP)流量
tcpdump -i eth0 tcp port 80
#监听UDP端口53(DNS)流量
tcpdump -i eth0 udp port 53
#监听TCP或UDP端口80流量
tcpdump -i eth0 port 80
#监听从特定 IP 地址到端口 80 的流量
tcpdump -i eth0 src 192.168.1.100 and tcp port 80
合理的句柄数可提高系统并发性能,过多的句柄数会增加系统崩溃的风险
案例实操
#查看系统中所有进程的句柄数
cat /proc/sys/fs/file-nr
#查看指定进程的句柄数,PID为进程ID
lsof -p <PID> | wc -l
#查看句柄数限制
ulimit -n
#查看系统允许的最大句柄数
cat /proc/sys/fs/file-max
- 使用ps命令查找ssh进程,并使用kill命令终止该进程
- 显示进程树
- 讲解top命令中的各项参数的含义,找出CPU和内存占用率最高的进程
- 使用netstat命令查看22端口
- 使用netstat命令查找ssh进程
前置条件
验证服务是否启动,未启动则执行systemctl restart crond
[root@localhost ~]# systemctl status crond
基本语法
crontab [选项]
选项说明
选项 | 说明 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab定时任务 |
-r | 删除当前用户所有的crontab任务 |
参数说明
crontab -e 会打开编辑vim界面,建立定时任务,语法为:* * * * * 要执行的命令
#每隔一分钟执行一次文本追加
*/1 * * * * echo "hello,world!" >> hello.txt
crontab -e 中的任务参数说明
参数 | 含义 | 范围 |
---|---|---|
第一个* | 一小时中的第几分钟 | 0-59 |
第二个* | 一天当中的第几小时 | 0-23 |
第三个* | 一月当中的第几天 | 1-31 |
第四个* | 一年当中的第几月 | 1-12 |
第五个* | 一周中的星期几 | 0-7(0和7都代表周日) |
特殊符号
特殊符号 | 含义 |
---|---|
* | 代表任何时间,如:第一个*代表每分钟都执行,第二个*代表每小时都执行 |
, | 代表不连续的时间,如:“0 2,4,6,8 * * * 命令”,表示每天的2点0分、4点0分、6点0分、8点0分各执行一次 |
- | 代表连续的时间范围,如:“0 5 * * 1-6 命令”,表示星期一到星期六的每天5点0分执行一次 |
*/n | 代表每隔多久执行一次,如:“*/10 * * * * 命令”,表示每隔10分钟执行一次 |
注解
@reboot 每次重启的时候执行
参数示例
时间 | 含义 |
---|---|
45 22 * * * 命令 | 每天 22 点 45 分执行命令 |
0 17 * * 1 命令 | 每周 1 的 17 点 0 分执行命令 |
0 5 1,15 * * 命令 | 每月 1 号和 15 号的凌晨 5 点 0 分执行命令 |
40 4 * * 1-5 命令 | 每周一到周五的凌晨 4 点 40 分执行命令 |
*/10 4 * * * 命令 | 每天的凌晨 4 点,每隔 10 分钟执行一次命令 |
0 0 1,15 * 1 命令 | 每月 1 号和 15 号,每周 1 的 0 点 0 分都会执行命令(尽量避免同时使用日期和星期,不便于理解) |
RPM
RPM(RedHat Package Manager),RedHat软件包管理工具。
RPM包的名称格式,Apache-1.3.23-11.i386.rpm:
- Apache:软件名称
- 1.3.23-11:软件版本号
- i386:软件运行的硬件平台,Inter 32位处理器的统称
- rpm:文件扩展名,代表rpm包
基本语法
语法 | 含义 |
---|---|
rpm -qa | 查询所安装的RPM软件包,一般配合grep使用,如:rmp -qa | grep ssh |
rpm -e RPM软件包 | 卸载软件包 |
rpm -e --nodeps 软件包 | 卸载软件包,忽略依赖关系,会导致依赖此软件的其他软件不可用 |
rpm -ivh RPM 包全名 | 安装RPM包,-i:表示安装、-v:表示显示详细信息、-h:表示显示进度条,还可以添加 --nodeps:表示安装前不检查依赖 |
YUM
YUM是一个在 Fedora 和 RedHat 以及 CentOS中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装
基本语法
yum [选项] [参数]
选项说明
选项 | 说明 |
---|---|
-y | 对所有提问都回答"yes" |
参数说明
参数 | 说明 |
---|---|
install | 安装rpm软件包 |
update | 更新rpm软件包 |
check-update | 检查是否有可用的更新rpm软件包 |
remove | 删除指定的rpm软件包 |
list | 显示软件包信息 |
clean | 清理yum过期的缓存 |
deplist | 显示yum软件包的所有依赖关系 |
案例实操
[root@localhost ~]# yum -y firefox
# 检查服务是否启动
systemctl status firewalld
# 检查防火墙是否启用
firewall-cmd --state
# 开启防火墙
systemctl start firewalld
# 关闭防火墙
systemctl stop firewalld
# 重启防火墙
systemctl restart firewalld
# 开启防火墙开机自启
systemctl enable firewalld
# 禁用防火墙开机自启
systemctl disable firewalld
# 重新加载防火墙策略,若添加的端口没有配置【--permanent】,reload后将会失效
firewall-cmd --reload
# 重新加载防火墙策略,并重启防火墙服务
firewall-cmd --complete-reload
防火墙策略修改后,需要重载防火墙策略方可生效
# --permanent 表示策略永久生效
# --zone 表示策略添加到指定区域,防火墙可划分多个区域,通常配置成public
# 添加80/tcp端口访问策略
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 移除80/tcp端口访问策略
firewall-cmd --zone=public --remove-port=80/tcp --permanent
# 添加80-100端口/tcp访问策略
firewall-cmd --zone=public --add-port=80-100/tcp --permanent
# 允许ip为127.0.0.1访问80/tcp端口
firewall-cmd --add-rich-rule="rule family="ipv4" source address="127.0.0.1" port protocol="tcp" port="80" accept" --permanent
# 允许ip为192.168.3.0网段访问80/tcp端口
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.3.0/24" port protocol="tcp" port="80" accept" --permanent
# 允许ip为192.168.3.0网段访问80-100/tcp端口
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.3.0/24" port protocol="tcp" port="80-100,101,110" accept" --permanent
# 添加拒绝ip为127.0.0.1访问22/tcp端口策略
firewall-cmd --add-rich-rule="rule family="ipv4" source address="127.0.0.1" port protocol="tcp" port="22" reject" --permanent
#移除拒绝ip为127.0.0.1访问22/tcp端口策略
firewall-cmd --remove-rich-rule="rule family="ipv4" source address="127.0.0.1" port protocol="tcp" port="22" reject" --permanent
- nfs开放端口2049
# 查看防火墙及添加的端口
firewall-cmd --list-all
# 查看规则设置
firewall-cmd --list-rich-rules
# 查看添加的端口
firewall-cmd --list-ports
# 查看添加的服务
firewall-cmd --list-service
# 查看80端口防火墙策略是否生效
firewall-cmd --query-port=80/tcp
经验技巧
设置为--permanent
的防火墙策略,必须执firewall-cmd --reload
后方可生效;
不设置--permanent
的防火墙策略会立即生效,重载防火墙后失效;
防火墙添加、修改的规则只有在服务重启后才能查看;
- 开启防火墙
- 关闭防火墙
- 设置防火墙开机自启
- 重启防火墙
- 重载防火墙配置
- 开放指定端口防火墙策略
- 移除防火墙策略
- 根据端口段开放防火墙策略
- 根据指定IP开放防火墙策略
- 根据指定IP段开放防火墙策略
- 查看防火墙策略
#查看防火墙服务
systemctl status ufw
#查看防火墙状态
ufw status
#开启防火墙服务
systemctl start ufw
#关闭防火墙服务
systemctl stop ufw
#重启防火墙
systemctl restart ufw
#配置防火墙服务开机自启
systemctl enable ufw
#禁用防火墙服务开机自启
systemctl disable ufw
#开启防火墙
ufw enable
#关闭防火墙
ufw disable
#重新加载防火墙规则
ufw reload
#重置防火墙规则为初始状态
ufw reset
#限定指定IP访问所有端口
ufw allow from 192.168.3.2
#限定指定IP访问指定端口
ufw allow from 192.168.3.2 to any port 80
#拒绝指定IP访问所有端口
ufw deny from 192.168.3.2
#拒绝指定IP访问指定端口
ufw deny from 192.168.3.2 to any port 80
#允许指定网段访问所有端口
ufw allow from 10.20.19.0/24
#允许指定网段访问指定端口
ufw allow from 10.20.19.0/24 to any port 22
#拒绝指定网段访问所有端口
ufw deny from 10.20.19.0/24
#拒绝指定网段访问指定端口
ufw deny from 10.20.19.0/24 to any port 22
#开放端口访问
ufw allow 80
#限制端口访问
ufw deny 80
#删除防火墙策略,根据IP删除(deny可替换成allow)
ufw delete deny from 10.20.19.157
#删除防火墙策略,根据IP和端口删除(deny可替换成allow)
ufw delete deny from 10.20.19.157 to any port 22
#根据防火墙策略编号删除策略
ufw status numbered #查看防火墙策略编号
ufw delete [id] #根据防火墙编号删除策略
经验技巧
- 添加防火墙策略后,docke服务需要重启,防火墙策略方可生效
- 防火墙策略编号越小,优先级越高
- 开启防火墙
- 关闭防火墙
- 查看防火墙状态
- 查看防火墙规则
- 设置防火墙开机自启
- 开放指定端口全部IP的访问权限
- 开放指定IP访问指定端口的访问权限
- 根据指定IP段开通端口访问权限
- 禁止指定端口的访问权限
- 禁止指定IP访问指定端口
- 删除防火墙策略
1.将整块磁盘分配给对应的磁盘分区,磁盘分区名称通过 lsblk -f 命令查看
lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
2.重新计算磁盘空间大小
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
3.查看磁盘空间进行验证
df -h
1.修改配置文件/etc/netplan/00-installer-config.yaml,写入以下内容
network:
renderer: networkd
ethernets:
ens33:
dhcp4: no
addresses:
- 192.168.220.143/24 #静态IP
gateway4: 192.168.220.2 #网关
nameservers:
addresses: [8.8.8.8]
version: 2
2.使配置生效
netplan apply
1.修改配置文件
vi /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service
2.在文件末尾添加TimeoutStartSec=5sec
xx@ub:/etc/systemd/system/network-online.target.wants$ cat systemd-networkd-wait-online.service
# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Wait for Network to be Configured
Documentation=man:systemd-networkd-wait-online.service(8)
DefaultDependencies=no
Conflicts=shutdown.target
Requires=systemd-networkd.service
After=systemd-networkd.service
Before=network-online.target shutdown.target
[Service]
Type=oneshot
ExecStart=/lib/systemd/systemd-networkd-wait-online
RemainAfterExit=yes
TimeoutStartSec=5sec #新添加内容
1.停止systemd-resolved服务
sudo systemctl stop systemd-resolved
2.禁用systemd-resolved开机自启
sudo systemctl disable systemd-resolved
3.移除/etc/resolv.conf的符号链接,并创建一个静态的resolv.conf文件
sudo rm /etc/resolv.conf
sudo echo "nameserver 8.8.8.8" >> /etc/resolv.conf
4.重启网络服务应用
sudo netplan apply
1.开机界面快速按"Esc"进入Grub界面
2.选择”ubuntu“选项,按"e"进行编辑