修改主机信息命令
修改主机名/关机/重启
hostnamectl 命令
$ hostnamectl # 查看操作系统信息(内核、操作系统发行版本、主机名等)
$ hostnamectl set-hostname redhatu8 # 修改主机名
修改本地DNS
$ cat /etc/resolv.conf
nameserver x.x.x.x
nameserver 114.114.114.114
系统自带命令
watch 实时输出命令结果
# 实时输出命令的执行结果(交互式),如 free -h 查看内存的结果
$ watch free -h
要退出交互式,按 ctrl +c
history 查看系统历史命令
# 查看所有系统历史命令
$ history
# 执行某条命令,123为history中该命令的序号
$ !123
# 清除历史命令
$ history -c
关机与重启
2)shutdown 关机
$ shutdown -h now # 马上关机
3) 重启
$ reboot
systemctl 系统服务管理(centos版本系统)
在开机时启用一个服务:
$ systemctl enable firewalld.service
在开机时禁用一个服务:
$ systemctl disable firewalld.service
查看服务是否开机启动:
$ systemctl is-enabled firewalld.service
查看所有开机自启的服务:
$ systemctl list-unit-files --type=service --state=enabled
su 切换用户
$ su - username # 切换到用户
$ su username # 命令行层面的切换用户
date 显示时间
$ date +%s # 显示当前时间戳
$ date -d '@1683560962' # 将时间戳转换成时间显示
echo 打印输出
$ echo -e "123\n456" echo 输出字符(换行)
$ echo '' > /var/log/test.log 清空日志文件
bc | expr 算术
1) bc 进入算术交互界面
$ bc
8/2
4
2) expr 命令行表达式算数命令(非交互)
$ expr 2+2
2+2
查看文件/目录命令 *
1)cat 查看文件内容
2)ls 命令查看文件
$ ls --color # 显示颜色
3) head/tail 查看头部/尾部内容
$ head -n 3 /etc/passwd
$ tail -n 2 /etc/passwd
$ tail -f 2 /var/log/test.log # 实时输出
4)more/less 分页显示
$ more /var/log/test.log
5)file 显示文件类型
$ file /etc/
$ file /etc/passwd
alias 别名
1) 临时设置命令别名
$ alias ls='echo hellokitty'
2) 永久设置别名
$ vim .bashrc
$ source .bashrc
top 详解
top
命令是一个在 Linux 和 Unix 系统中常用的实时系统监控工具。它提供了一个动态的实时视图,显示系统中的进程和系统资源的使用情况:
以下是 top
命令输出的详细解释:
顶部信息栏:
时间信息:显示当前时间,系统运行时间,以及当前登录用户数。
负载平均值:显示系统在最近1分钟、5分钟和15分钟内的平均负载。负载是等待CPU时间的进程数量。负载值高于CPU核心数可能表明系统过载。
任务信息:
Tasks:显示系统中的进程总数、正在运行的进程数、休眠的进程数、停止的进程数和僵尸进程数。
%Cpu(s):显示CPU使用率的详细统计,包括用户空间占用CPU的百分比(us)、系统空间占用CPU的百分比(sy)、改变过优先级的进程占用CPU的百分比(ni)、空闲CPU的百分比(id)、等待输入输出的CPU时间百分比(wa)、硬件中断占用CPU的百分比(hi)、软件中断占用CPU的百分比(si)和虚拟机偷取时间的百分比(st)。
%Mem:显示内存使用率的详细统计,包括实际使用的物理内存百分比、缓冲区占用的内存百分比、缓存占用的内存百分比和空闲内存的百分比。
内存使用情况:
KiB Mem:以KiB为单位的内存使用情况。
total:总共的物理内存。
free:空闲的物理内存。
used:已使用的物理内存。
buff/cache:被内核用作缓冲区和缓存的内存。
available:估算的可用内存。
交换空间使用情况:
KiB Swap:以KiB为单位的交换空间使用情况。
total:总共的交换空间。
free:空闲的交换空间。
used:已使用的交换空间。
进程列表:
PID:进程ID。
USER:进程所有者。
PR:优先级。
NI:nice值。
VIRT:虚拟内存使用量。
RES:常驻内存大小。
SHR:共享内存使用量。
S:进程状态(R:运行,S:休眠,D:不可中断,Z:僵尸)。
%CPU:进程占用CPU的百分比。
%MEM:进程占用内存的百分比。
TIME+:自进程开始以来的CPU时间。
COMMAND:启动进程的命令行。
ls 命令常用参数
-l:长格式列出信息,包括文件权限、所有者、大小和时间等。
-a:包括隐藏文件(以点开头的文件)。
-h:与 -l 一起使用时,以人类可读的格式显示文件大小(例如 KB、MB)。
-R:递归地列出所有子目录的内容。
通配符
通配符?\''[]*
1) ? 代表一个非空字符
$ ls a??c
aggc appc awec
2) \ 转义字符,让特殊字符失去意义
$ touch l\\
$ ls
l\
3) '' 让特殊字符失去意义
$ touch 'g\'v
$ ls
g\
4) [] 匹配中括号中包含的一个字符
$ ls
a? aa aggc appc awec
$ ls a[pc][op]c
appc
5) * 匹配所有字符
$ ls a*c
aggc appc awec
6) [a-z] 匹配任意小写字母 [A-Z] 匹配任意大写字母 [1-9] 匹配任意数字
$ ls
a19b a1b aAAb aAb adb aDDb
$ ls a[1-9]b
a1b
$ ls a[1-9][1-9]b
a19b
$ ls a[a-z]b
aAb adb
$ ls a[A-Z][A-Z]b
aAAb aDDb
通配符与正则表达式
通配符匹配文件名、正则表达匹配文件内容
常用通配符:
^ 以什么开头
$ 以什么结尾
* 通常不会单独使用
? 可以重复前面字符一次
. 任意一个非空字符
.* 任意字符串
.? 任意两个字符
^$ 空行
常用正则表达:
^ 以什么开头
$ 以什么结尾
. 匹配任意一个字符
.* 匹配0个或若干个字符(任意字符串)
+ 匹配1个或若干个字符
? 匹配0个或1个h
{} 指定匹配多少个字符
[] 匹配中括号中的任一字符
用法示例:
a* 匹配0个或若干个a
a+ 匹配1个或若干个a
a? 匹配0个或1个a
a{3} 匹配3个a
[abc] 匹配a或b或c
[a-z] 匹配所有小写字符
[A-Z] 匹配所有大写字符
[a-Z] 匹配所有字符
[0-9] 匹配所有数字
常用正则表达式匹配文本内容
$ grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash
$ grep bash$ /etc/passwd
root:x:0:0:root:/root:/bin/bash
$ grep ^root.*bash$ /etc/passwd
root:x:0:0:root:/root:/bin/bash
$ grep -E -o spo{2}l /etc/passwd
spool
$ grep -E ^n.*[8-9]{2}.*n$ /etc/passwd
nobody:x:99:99:Nobody:/:/sbin/nologin
$ grep -vE '^.*#|^$|^\ ' /etc/httpd/conf/httpd.conf # 去除空行和有#的行和以空格开头的行
$ ip a | grep -E '[0-9]*\.' | awk '{print $2}' # 过滤出ip地址
127.0.0.1/8
172.18.161.51/20
文本编辑/过滤
vim 编辑文本 *
1. 进入编辑模式
1) i表示在光标的位置插入
2) I表示从该行最前面插入
3) a表示在光标后的位置插入
4) A表示从从该行最后面插入
5) o表示在当前的下一行插入
6) O表示在当前的上一行插入
2. 命令模式
1) 定位
gg 跳转到第一行
G 跳转到最后一行
nG 跳转到第n行
0 跳转到行首
$ 跳转到行尾
2) 删除
x 将光标所在处的字符进行剪切(删除)
nx 将光标之后的n的字符进行剪切(删除)
dd 将光标所在行进行剪切(删除)
ndd 将光标所在行之后的n行进行剪切(删除)
dG 将光标所在行到文章末尾进行剪切(删除)
D 将光标所在处到行尾进行剪切(删除)
3) 复制和粘贴
yy 复制当前行
nyy 复制当前行以下的n行
p 粘贴在当前光标所在行下
P 粘贴在当前光标所在行上
4)撤销操作
u
5) 搜索字符
/string 搜索指定字符串
n 搜索指定字符串的下一个位置
3. 行尾模式
1) 替换文本
:%s/old/new/g 全文替换指定字符串
:n1,n2s/old/new/g 在指定范围内替换指定字符串
:%s/^/#/ 在所有行首插入#
2) 定位
:n 跳转到第n行
3) 行号显示
:set nu 设置行号
:set nonu 取消行号
4.可视化模式
v 选中字符
V 选中行
Ctrl + v 矩形选择
5.vim 意外中断情况
vim 非正常退出会在当前命令生成一个.swp 文件
在确定没有其他人正在同时编辑文本时:
D 删除.swp 文件
R 恢复到之前编辑的文件
grep 过滤文本的行 *
常用参数
-i 不区分大小写
-v 反向抓取
-n 显示行号
-R/-r: 递归地读目录下的所有文件
-E 支持扩展的正则表达式
-o 只抓取该内容
示例
$ grep 'test' -R . # 从该目录下所有文件中过滤内容
$ cat /etc/passwd | grep -v 'root' # 过滤出没有 root 的行
扩展: "" 可抓取变量 '' 只会抓取文本
$ cat test-grep
11$a
22b
$ a=b
$ grep '$a' test-grep
11$a
$ grep "$a" test-grep
22b
cut 过滤文本的列
常用参数
-d 分隔符
-f 抓取第几列
示例1
抓取ip地址或者掩码
$ ip a | grep -E '[0-9]*\.' | awk '{print $2}'
127.0.0.1/8
172.18.161.51/20
$ ip a | grep -E '[0-9]*\.' | awk '{print $2}' | cut -d '/' -f1
127.0.0.1
172.18.161.51
$ ip a | grep -E '[0-9]*\.' | awk '{print $2}' | cut -d '/' -f2
8
20
示例2
浮点数取整数 98.2 > 98
$ a=98.2
$ echo $a
98.2
$ echo $a | cut -d '.' -f1
98
过滤环境变量
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
$ echo $PATH | cut -d ':' -f1
/usr/local/sbin
$ echo $PATH | cut -d ':' -f1-3 # 抓取 1-3 列
/usr/local/sbin:/usr/local/bin:/usr/sbin
$ echo $PATH | cut -d ':' -f1-3 # 抓取 1 和 3 列
/usr/local/sbin:/usr/local/bin:/usr/sbin
sed 非交互式文本编辑
sed 删除行 ( d )
-i 编辑真实生效
$ sed -i '1,3d' test_sed.txt # 删除文本1~3行
d 删除行(不加 -i 将不会对文本进行修改)
$ sed '/[cC]at/d' test_sed.txt | sed '/^$/d' # 删除带有 cat/Cat 和空行
# sed -i '/^#/d' test_sed.txt # 删除#开头的行
sed 添加行 ( i a )
i 行前添加
$ sed '2i tiger' test_sed.txt # 在第2行前插入 tiger
a 行后添加
$ sed '1a tiger' test_sed.txt # 在第1行后插入 tiger
在匹配到的行前添加
$ sed '/^Cat/i tiger' test_sed.txt # 在以Cat开头的行前插入 tiger
在匹配到 Cat 的第一行前插入 Tiger
$ num=`grep -n 'Cat' test_sed.txt | cut -d ':' -f1 | head -n 1` # 找到匹配到的第一个Cat是哪行
$ sed "${num}i Tiger" test_sed.txt # 插入 Tiger
sed 替换 ( s/ / / )
$ sed -i 's/Dog/dog/g' test_sed.txt # 将 Dog 替换成dog
sed 输出指定行内容
$ sed -n '6p' test_sed.txt # 输出第6行内容
$ sed -n '1,6p' test_sed.txt # 输出1到6行
awk 输出文本内容
输出行
$ wk 'NR==3' a.txt # 输出文本第三行
$ awk 'NR==3,NR==5' a.txt # 输出3~5行
其他方法
$ head -3 a.txt | tail -1
$ sed -n '3p' a.txt
输出列
-F 指定分隔符(默认为空格)
$ awk -F ':' '{print $3,$4}' a.txt # 打印第3和第4行
$ awk -F ':' 'NR==1,NR==4{print $1,$3}' a.txt # 打印1~4行的第1列和第3列
$ sed -n '1,4p' a.txt | awk -F ':' '{print $1,$3}' # 打印1~4行的第1列和第3列
包管理工具/命令
yum 软件包管理命令
列出已安装的软件包
$ yum list installed | grep htop
卸载软件包
$ yum remove htop.aarch64
rpm 软件包管理命令
文件管理命令
rz/sz 文件上传与下载
下载 rz/sz 命令(centos系统使用yum命令)
$ yum -y install lrzsz
rz 上传文件
$ rz
如下,输入rz命令即会跳出弹窗,选择需要上传到终端的文件即可:
sz 下载文件
$ sz /path/file
如下,sz 命令带上文件路径即可将终端的文件下载到本地:
网络管理
curl 命令查看本机使用的外网地址
在 Windows 系统中,可以通过命令行使用curl ifconfig.me
命令来查询外网IP地址
> curl ifconfig.me
在 Linux 系统中,可以使用curl ifconfig.me
或者curl ipinfo.io/ip
来获取外网IP地址
$ curl ifconfig.me
或者
$ curl ipinfo.io/ip
dig
telnet
nmap
磁盘管理
du -sh 查看文件及目录大小
df 查看文件系统使用情况
fdisk 磁盘分区管理
lsblk 查看磁盘及分区情况
lv vg pv lvm逻辑卷管理