【linux】Linux常用命令

一 关机

1.1 关机重启相关操作命令

1
2
3
4
5
6
7
shutdown -h now
shutdown -h 5
poweroff
# 重启
shutdown -r now
shutdown -r 5
reboot

二 目录操作命令

2.1 增删改查

1
2
3
4
5
6
7
8
9
10
11
cd  # 进入
ls # 查看
mkdir # 增 创建
rm -rf # 删除
mv [选项] [源文件路径][目标文件路径]#源目录 #新目录 #还有重命名 移动功能
cp [选项] [源文件路径][目标文件路径] #源文件 #目标目录文件
scp [选项] [源文件路径][目标文件路径]
scp user@remote:/path/on/remote /path/to/local/directory # 远程到本地 加-r是递归
scp /path/to/local/file user@remote:/path/on/remote # 从本地复制文件到远程主机:
find [目录] [参数] [文件名称]
find /usr/tmp -name 'a*' 查找/usr/tmp目录下的所有以a开头的目录或文件

三 文件操作命令

3.1 增删改查

1
2
3
toch 文件名 # 创建,不过一般用vim创建
rm -rf [文件名] # 删
vim 改

3.1.2 vim

  • 模式:

  • 命令模式(command mode ):命令模式就是最开始啥都不按的模式,光标移动,查看文件的

    • 可以控制屏幕光标的移动,字符、字或者行的查找删除和移动 也可以在指定光标下进入插入模式
    • 控制光标移动:↑,↓,
      • h 左j 上k 下l 右
      • Ctrl + f上翻页Ctrl + b下翻页 Ctrl + u`上翻半页Ctrl + d下翻半页
    • 改:按 i 进入插入模式 改也是一个意思
    • 删除: 按dd 删除当前行,dd dG是清空所有
    • 复制:按yy复制当前行
    • 粘贴:按pp 粘贴刚刚复制的文本
    • 撤销:按uu撤销上一步
  • 插入模式(insert mode)

    • i :在光标字符前开始插入
    • a :在光标字符后开始插入
    • o : 在光标所在的行下面
  • 底行模式: 冒号q和wq和!

  • 如果要匹配(搜索)对应的文本,用/

    • 比如说/con
    • 按回车进入文,按n 查找下一个,按Shift+n进入上一个
  • 进入命令模式:按下 Esc 键确保处于正常模式(Normal mode)。

  • 输入以下命令之一来切换行号显示:

    • 显示绝对行号:输入 :set number 并按下 Enter 键。
    • 显示相对行号:输入 :set relativenumber 并按下 Enter 键。

3.1.3 文件查看

  • cat 直接看

  • more :会显示百分比。跟vim的命令模式差不多,可以Ctrl +f b u d 翻页

    • 也可以回车空格向下翻【这个好用】
  • less:未找到命令,要安装的,先不学

  • taill : 指定行数或者动态查看

    • 一般看日志用的,tail -f 100 [文件名]

3.2 权限的解读跟修改及用户管理

查看详情:ll或者 ls -l

1
2
3
4
5
6
7
8
9
10
11
ll # 或者ls -l 
-rw-r--r-- 1 user group 4096 Jan 1 10:00 file.txt
drwxr-xr-x 2 user group 4096 Jan 1 10:00 directory
d # 代表是目录
rwx #第一组(rwx) 表示所有者的权限,r读 w写 x执行
xr # 第二组(xr)同组用户的权限
x # 第三组(x) 表示其他用户,非同组用户的权限
user # 所属用户
group # 用户所属组
chmod +x # 添加执行权限
chmod 777 # 添加所有权限

添加管理用户

1
2
3
4
5
6
useradd user1 # 添加用户1
id user1 # 查看用户所属信息
uid=1001(user1) gid=1001(user1) 组=1001(user1),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),122(lpadmin),135(lxd),1000(wang),136(sambashare)
useradd -g root user2 # 为新添加的用户添加组
useradd -d /etc/nologin -g apache -s /bin/false user1
passwd user3 # 更改或者设置用户密码

四、压缩文件操作

4.1 打包和压缩

linux 中一般都是打包tar 文件 压缩就是gz文件

而一般情况下打包盒压缩是一起进行的,打包并且压缩后的文件的后缀名一般是.tar.gz

1
2
3
4
5
6
7
8
9
tar -zcvf [打包后的文件名.tar] [要打包的文件] # 打包
-z # z就是gz 调用gzip 压缩命令进行压缩
-c # 打包文件 就是tar的作用
-v # 显示打包运行的过程(跑代码)
-f # 指定文件名
tar -zcvf test.tar test.py
# 解压
tar -zxvf [压缩文件名]
-x # x 就是解压缩质量

五、查找命令及三剑客【重点】

5.1 grep 强大的文本搜索工具

5.2 sed (Stream Editor)简单介绍

Stream Editor 流编辑器 ,用于对文本进行转换、替换、删除、插入和打印

1
2
3
4
5
6
7
8
9
10
11
# sed 有两种模式 -e 不修改生产新文本 -i修改文件内容
sed -e '旧内容 新内容' xx文件 # 不修改文件内容 用-e
sed -i '旧内容 新内容' xx文件 # 修改文件内容 用-i
sed -e 后面可以接指令
a # 新增
c # 取代
d # 删除
i # 插入
p # 打印
Reading the configuration file, at line 416 'locale-collate ""'

5.3 awk 切片,强大的文本处理【重点】

主要用来将数据进行切片输出的

1
2
3
4
5
6
awk '{print $1}' # 用awk对内容进行进行切片,每一行,取第一个字段,以空格进行分隔
address: cosmos1g920yuxdmqtfxg4w8a0j9sgaazfryr2cx0d755
# 取出address的值
awk ‘/address/{print $2}’ #得到cosmos1g920yuxdmqtfxg4w8a0j9sgaazfryr2cx0d755
原理是:其中 `/address/` 表示匹配包含 `address` 的行,`{print $2}` 表示输出该行的第二个字段。输出结果为 `cosmos1g920yuxdmqtfxg4w8a0j9sgaazfryr2cx0d755`
$2 里面的2可以换成1、3、4等任何数字,数字表示你匹配到的字段的后几位开始的数据,例如你匹配到的cosmosxxxxxx是在address的后面的3个字符后才出现的,那就是$3 第四个字符出现的就是$4,以此类推

比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
docker ps 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a7a584dfd04a django-vue-admin_dvadmin-django "/backend/docker_sta…" 13 days ago Up Less than a second 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp dvadmin-django
286cc8be5d9f mysql:5.7 "docker-entrypoint.s…" 13 days ago Up Less than a second 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp dvadmin-mysql
1cb7df749dec mysql:8.0.30 "docker-entrypoint.s…" 2 weeks ago Up Less than a second 33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp django_mysql
93b06a5f97a1 portainer/portainer-ce:latest "/portainer" 2 weeks ago Up Less than a second 8000/tcp, 9443/tcp, 0.0.0.0:1009->9000/tcp, :::1009->9000/tcp portainer

docker ps | awk '{print $1}' # 使用 awk 工具对前一个命令的输出进行处理,提取每行的第一个字段(以空格为分隔符),并将其打印出来
CONTAINER
a7a584dfd04a
286cc8be5d9f
1cb7df749dec
93b06a5f97a1
docker ps | awk '{print $1}'|tail +2 # 从第二个开始取
a7a584dfd04a
286cc8be5d9f
1cb7df749dec
93b06a5f97a1
docker stop $(docker ps | awk '{print $1}'|tail +2) # 停止容器

5.4 find 找文件

find命令再目录结构中搜索文件,并对搜索结果进行知道的操作

find 默认搜索当前目录机器子目录,并且不过滤任何结果(也就是返回所有文件)将它们全部显示再公屏上

所以使用find的时候最好要跟一下目标目录 一般用**-ls查找当前目录**

1
2
3
4
5
find . -name "*.log" -ls  在当前目录查找以.log结尾的文件,并显示详细信息。 
find /root/ -perm 600 查找/root/目录下权限为600的文件
find . -type f -name "*.log" 查找当目录,以.log结尾的普通文件
find . -type d | sort 查找当前所有目录并排序
find . -size +100M 查找当前目录大于100M的文件

5.5 which

which命令的作用实在PATH变量指定的路径钟,搜索某一个系统命令的位置,并且返回第一个搜索结果一般用于查找某个指令所在的位置

1
2
3
which pwd # 查找pwd 命令所在的路径
which java # 查找PATH中java所在的路径
which python # 查找PATH中python所在的路径

5.6whereis 没用过

whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件

1
whereis ls    将和ls文件相关的文件都查找出来

5.7 locate 没用过 记笔记

六 su 和sudo

七、系统服务

7.1 systemctl

systemctl 命令用于管理 systemd 系统和服务管理器。它可以启动、停止、重启、重新加载和查询系统服务的状态。一些常用的 systemctl 命令包括:

1
2
3
4
systemctl start service_name # 启动服务
systemctl stop service_name # 停止服务
systemctl restart service_name # 重启服务
systemctl status service_name # 查看服务信息

也可以用 service ,一样的意思

7.2 service

7.3 ps

ps 查看当前正在运行的进程

1
2
3
4
ps -e | grep process_name # 查看指定进程名
ps -ef # 列出当前的所有进程,静态的
ps -aux | grep process_name # aux 显示所有进程及其详情信息包括其他用户的进程,一般配合grep
# 三个命令一样的

7.4 端口

netstatnetstat 命令用于显示网络连接、路由表和网络接口信息。你可以使用不同的选项来过滤和显示特定的网络信息。一些常用的 netstat 命令选项包括:

1
netstat -tuln # 显示所有正在监听的tcp 和 udp 端口 可以配合grep port_number 查找特定端口的监听进程

lsoflosf命令用于列出打开文件和网络链接的进程 【常用】

1
2
3
lsof -i:8000 # 查看8000端口有没有被占用,谁占用,显示端口详细信息
losf -i TCP:prot_number # 显示对应的TCP端口详情
losf -i UDP:prot_number # 显示对应的UDP端口详情

ss:ss命令用户显示套接字统计信息,包括监听端口和与之相关的进程。

1
ss -tuln # 显示所有正在监听的TCP和UDP端口

7.4 内存/CPU监控之top或者htop(彩色)

top强大的实时监控系统工具,用于查看和管理正在运行的进程以及系统的性能指标,

解读所展示参数

1
2
3
4
5
6
7
8
9
top 
进程号 USER PR NI VIRT RES SHR %CPU %MEM TIME+ COMMAND
87753 wang 20 0 48.8g 240336 79328 R 10.9 0.7 1141:51 com.ali+
VIRT # 虚拟内存占用大小
RES # 物理内存占用大小
SHR # 共享内存占用大小
% # 占用百分比
TIME+ # 进程累计CPU时间

【重点】top -p PID_number 查看指定的进程的实时占用情况

7.5 内存/CPU监控之free 和vmstat

free :free命令用于显示系统的内存使用情况,它会显示总内存、已使用内存、空闲内存等信息。

可以使用free -h 以更友好的方式显示内存大小(单位用G,默认单位是M)

1
2
3
4
5
6
7
8
9
free
total used free shared buff/cache available
内存: 32595208 18936688 1550264 2450668 12108256 10649300
交换: 15999996 2212136 13787860
free -h
total used free shared buff/cache available
内存: 31Gi 17Gi 1.5Gi 2.4Gi 11Gi 10Gi
交换: 15Gi 2.1Gi 13Gi

vmstatvmstat 命令用于显示虚拟内存的统计信息,包括内存、CPU、磁盘、交换等。运行 vmstat 1 可以每秒更新一次统计信息

1
2
3
4
vmstat
-----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b 交换 空闲 缓冲 缓存 si so bi bo in cs us sy id wa st
0 0 2212136 1595296 1335748 10787504 0 0 2 14 2 1 3 1 96 0 0

7.6 使用网络流量统计

ifconfig : ifconfig用于查看网络接口配置信息,也可以查看发送【上传】和接收【下载】数据包的值

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
ifconfig
enp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.120 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::5a11:22ff:fe47:c52e prefixlen 64 scopeid 0x20<link>
ether 58:11:22:47:c5:2e txqueuelen 1000 (以太网)
RX packets 22011398 bytes 12495616225 (12.4 GB)
RX errors 0 dropped 154785 overruns 0 frame 0
TX packets 11342485 bytes 5780291167 (5.7 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
enp4s0 # 网络接口名称,网卡名称
flags=4163<UP,BROADCAST,RUNNING,MULTICAST>
#4163标志 up启动,BROADCAST广播,RUNNING运行,MULTICAST接口支持多广播
inet 192.168.0.120 # 本机ip 也就是接口的IPv4地址
netmask 255.255.255.0 # 接口子望掩码,用于确定网络地址和主机地址的界限
broadcast 192.168.0.255 # 接口的广播地址,用于向同一子网中的所有主机发送广播消息。
ether 58:11:22:47:c5:2e # 本机mac地址,物理地址
txqueuelen 1000(以太网):# 发送队列长度,指定接口发送数据包的队列的最大长度
RX packets 22011398 # RX是接收,接收包的数量 接收就是【下载】
bytes 12495616225 (12.4 GB) # 接受包的字节数,也就是接收包耗流量 【下载】
RX errors 0 # 接收过程中的错误数
dropped 154785 # 接收过程中的丢包数
overruns 0 # 接收过程中的溢出数据包数
frame 0 # 接收过程中的帧错误数量
TX packets 11342485 # TX是发送,发送包的数量 【上传】
bytes 5780291167 (5.7 GB) # 接受包的字节数,也就是接受包耗流量【上传】
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0


netstat -inetstat -i 用于显示网络接口的统计信息。它会列出系统上所有网络接口的详细信息,包括接口名称、MTU(最大传输单元)、接收和发送的数据包数量、错误数量等【重点】【统计用】

1
2
3
4
5
6
7
8
9
10
11
netstat -i  # 这个看的更直观
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
br-0bc39 1500 0 0 0 0 73 0 0 0 BMU
br-31a15 1500 0 0 0 0 0 0 0 0 BMU
br-701c9 1500 0 0 0 0 0 0 0 0 BMU
br-cbf44 1500 0 0 0 0 71 0 0 0 BMU
docker0 1500 23665 0 0 0 41823 0 0 0 BMRU
enp4s0 1500 22050803 0 155200 0 11352806 0 0 0 BMRU
lo 65536 8078343 0 0 0 8078343 0 0 0 LRU
veth9712 1500 18992 0 0 0 35983 0 0 0 BMRU

ip a 现在不用ifconfig 这个命令比较老,用ip a 也是一样的,因为ip 集成了很多东西在里面

nethogs : nethogs可以实时监控网络流量,会像抓包一样实时的显示每个进程的网络使用情况,这个要装的

iftop:iftop工具可以实时监听当前网络流量和统计发送接收总量

sudo iftop -P -F :实时监听对应进程的网络流量和统计发送接收总量

1
2
sudo iftop  # 监听和统计全部流量
sudo iftop -P -F 4785 # 监听和统计单个进程的流程数据

tcpdump :tcpdump 抓包本机所有网络请求接收,如果要抓包筛选的话,可以用Wireshark工具

1
2
tshark -r capture.pcap -Y "<filter_expression>"
# 将 `<filter_expression>` 替换为你想要使用的过滤表达式,例如 `http.request` 或 `tcp.port == 80`。你还可以添加进程名称或进程 ID 过滤条件,以限制结果只包含特定进程的流量。

流畅度 【这个要去看一下详解后做笔记】

功耗 【这个要去看一下详解后做笔记】

网络抓包tcpdump【这个要去看一下详解后做笔记】

八、网络管理

九、定时任务

十、其他

pexels


【linux】Linux常用命令
http://example.com/2024/01/09/Linux常用基础命令/
作者
Wangxiaowang
发布于
2024年1月9日
许可协议