除了简单的cd、cat、ls等简单的指令,其他的稍微复杂一点的指令几乎我一般是问chatGPT,有一些可能在做实验和项目的时候会经常用到,当时记得挺清楚,但是时间一久还是容易忘记。
所以创建这篇博客,记录一下我所用到的一些比较常用的指令。
(持续更新)
1 | netstat -tuln |
-t:显示 TCP 连接。
-u:显示 UDP 连接。
-l:仅显示在监听状态的连接(即正在等待传入连接的端口)。
-n:以数字形式显示地址和端口号,而不是尝试解析为主机名或服务名。
一个可能的输出如下:
1 | Proto Recv-Q Send-Q Local Address Foreign Address State |
输出字段解释:
Proto: 协议类型(tcp、udp、tcp6、udp6 等)。
Recv-Q: 接收队列的字节数。表示当前接收队列中有多少字节数据尚未处理。
Send-Q: 发送队列的字节数。表示当前发送队列中有多少字节数据尚未发送。
Local Address: 本地地址和端口。格式为 [IP地址]:[端口号]。如果是 IPv6 地址,则显示为 [IPv6地址]:[端口号]。
Foreign Address: 外部地址和端口。对于监听状态的连接,这一列显示为 *。
State: 连接状态(如 LISTEN、ESTABLISHED、CLOSE_WAIT 等)。对于监听端口,状态通常为 LISTEN。
一个可能的输出:
1 | top - 07:55:07 up 4:32, 1 user, load average: 0.07, 0.04, 0.03 |
1 | top - 07:55:07 up 4:32, 1 user, load average: 0.07, 0.04, 0.03 |
1 | Tasks: 111 total, 2 running, 108 sleeping, 1 stopped, 0 zombie |
Tasks:
**%Cpu(s)**:
1 | MiB Mem : 883.6 total, 76.0 free, 444.9 used, 362.8 buff/cache |
Mem(内存):
Swap(交换区):
1 | PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND |
PID:进程 ID。
USER:启动进程的用户。
PR:进程优先级。
NI:进程的 nice 值。
VIRT:进程使用的虚拟内存量。 (KB)
RES:进程使用的实际物理内存量。 (KB)
SHR:进程共享的内存量。 (KB)
S:进程状态(S=睡眠,R=运行,Z=僵尸,T=停止等)。
%CPU:进程使用的 CPU 百分比。
%MEM:进程使用的内存百分比。
**TIME+**:进程的总 CPU 时间。
COMMAND:进程的命令名。
top 命令的交互操作:
q 退出 top。P 根据 CPU 使用率排序进程。M 根据内存使用量排序进程。N 根据进程 ID 排序进程。R 反转排序顺序。定时刷新:
top 每 3 秒刷新一次。可以通过 -d 参数指定自定义刷新间隔。例如,top -d 5 每 5 秒刷新一次。free 命令用于显示系统的内存使用情况,包括物理内存(RAM)和交换内存(swap)。它可以帮助你快速了解系统的内存资源使用情况。
可以有以下选项:
-h:以人类可读的格式显示(例如,GB 和 MB)。
-m:以 MB 为单位显示。
-g:以 GB 为单位显示。
-t:显示总内存和交换内存的统计信息。
一个可能的输出如下:
1 | total used free shared buff/cache available |
内存使用情况:系统总共有 883 MiB 的物理内存,其中 438 MiB 已被使用,116 MiB 是空闲的,还有 328 MiB 用于缓存和缓冲。可用内存为 295 MiB。
交换空间使用情况:系统总共有 15 GiB 的交换内存,其中 426 MiB 已被使用,剩余的 15 GiB 是空闲的。
可以看出系统的内存使用情况相对较低,缓存的内存也在合理范围内,交换空间使用量不大。这通常意味着系统性能较好,没有特别严重的内存压力。
systemctl 是一个用于管理和控制系统和服务的工具,主要用于与 systemd 系统和服务管理器交互。允许启动、停止、重启、查看状态等操作服务和系统单元。
systemctl status [service]例如,查看apache2服务状态
1 | $ sudo systemctl status apache2 |
systemctl start [service]systemctl start nginx。systemctl stop [service]systemctl stop nginx。systemctl restart [service]systemctl restart nginx。在服务的配置改变之后,应用新配置需要用到该命令。
systemctl reload [service]systemctl reload nginx。systemctl enable [service]systemctl enable nginx。systemctl disable [service]systemctl disable nginx。是 vi 的升级版
vim 有三种基本模式:
vim 的默认模式,在这个模式下,你可以进行文本导航、删除、复制等操作。按 Esc 键可以进入普通模式。i(在光标前插入)、I(在行首插入)、a(在光标后插入)、A(在行尾插入)进入插入模式。按 Esc 返回普通模式。: 进入命令模式,输入命令后按 Enter 执行。h:左移j:下移k:上移l:右移0:跳到行首$:跳到行尾gg:跳到文件开头G:跳到文件末尾x:删除光标处的字符dd:删除当前行d$:删除光标到行尾的内容d0:删除光标到行首的内容yy:复制当前行p(小写p):将复制的内容粘贴到当前行的下一行P(大写P):粘贴到当前行的上一行u:撤销上一个操作/pattern:查找 pattern,按 n 跳到下一个匹配,按 N 跳到上一个匹配:s/old/new/:在当前行替换 old 为 new:%s/old/new/g:在整个文件中替换 old 为 new:w:保存文件:q:退出 vim:wq 或 :x:保存文件并退出 vim:q!:强制退出而不保存更改:e filename:编辑指定的文件:r filename:将指定文件的内容插入到当前文件中:!command:在 vim 中执行外部命令清空文件就是ggdG:gg将光标移动到文件的第一行,d 是 vim 中的删除命令的前缀,G 表示文件的最后一行。因此,dG 意味着从当前光标位置(文件的第一行)删除到文件的最后一行的所有内容。所以合起来就是清空文件。
docker ps列出所有正在运行的容器。
-a 选项列出所有容器。
相关指令:
docker start <container_id>
docker stop <container_id>
docker rm <container_id>
docker rm -f <container_id>强制删除一个运行中的容器
docker images列出所有镜像
相关指令:
docker pull <image_name>从 Docker 仓库拉取一个镜像。
docker rmi <image_id>
docker inspect <image_id>
docker network ls列出所有Docker网络。
docker logs <container_id> --tail 5查看某个Docker容器日志的最后50行。
docker-compose up -d以分离模式(在后台运行)启动docker-compose.yml文件中定义的Docker服务。
docker-compose down停止并移除docker-compose.yml文件中定义的Docker服务。
docker-compose restartdocker-compose restart 命令用于重新启动已经运行的容器。它不会重新创建容器,也不会重新加载任何配置文件的变化。
docker-compose down和docker-compose up
docker-compose down命令会停止并移除容器、网络、卷和镜像(停止和删除所有相关资源)。docker-compose up命令会创建并启动所有服务。会重新加载配置文件的变化,容器会被重新创建,之前的容器中的数据和状态会丢失(除非使用卷来持久化数据)
docker volume ls列出所有Docker卷。
docker volume inspect my_volume显示名为 my_volume 的卷的详细信息。
docker statsdocker stats 命令用于显示正在运行的容器的实时资源使用统计信息,包括 CPU 使用率、内存使用情况、网络 I/O 和磁盘 I/O 等。
--no-stream只显示一次统计信息
1 | CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS |
MEM USAGE / LIMIT: 内存使用量与内存限制。
MEM %: 内存使用百分比。
NET I/O: 网络输入/输出数据量。
BLOCK I/O: 磁盘输入/输出数据量。