一、Linux终端多任务下如何实现后台安全运行会话
1.1、tmux是什么
tmux是一款Linux的终端复用器,它可以让你在一个终端中同时管理多个会话、窗口和面板(即使断开了SSH连接,里面的程序也能继续运行)主要价值是【会话保活、多面板与窗口管理;解决终端断开、多任务切换痛点】。
bash
#红帽系系统安装tmux命令
yum install tmux -y

1.2、tmux工具的结构与使用场景
|--------|-----------------|----------------------------|
| 序号 | tmux工具的结构 | 说明 |
| 1 | 会话(session) | 是tmux的独立运行环境,一个会话可以包含多个窗口。 |
| 2 | 窗口(window) | 类似浏览器的标签页,一个窗口可以分割为多个面板。 |
| 3 | 面板(pane) | 窗口内的分屏,如上下、左右分割的区域。 |
[tmux工具的结构]
|--------|---------------|--------------------------------------------------------------------------------------|
| 序号 | tmux使用场景 | 说明 |
| 1 | SSH连接远程工作 | 可用tmux创建的新会话运行一些耗时的任务(如:源码编译、数据处理等操作)即使SSH断开连接,执行中的任务也不会中断,重新使用【tmux attach】连接后即可恢复。 |
| 2 | 多任务并行 | 每个面板可以执行不同的任务(如:一个面板运行服务、一个面板查看日志、一个面板执行命令)而不用切换多个终端窗口。 |
| 3 | 协作开发 | 可通过【tmux attach -t 共享会话名称】实现多个人操作同一个终端会话。 |
[tmux工具的典型使用场景]


1.3、tmux的使用方法
bash
#tmux的常用命令
#1-创建新会话
tmux new -s 会话名称
#2-退出当前会话(即:只是断开与会话的连接,但是会话会在内存中继续运行)
前缀键【ctrl+b】后再按下【d】即可
#3-列出所有正在运行中的会话
tmux ls
#4-重新连接到指定会话
tmux attach-sessio -t 会话名称
#5-切换会话(在不同会话间切换)
tmux switch-client -t 会话名称
#6-彻底关闭指定会话
tmux kill-session -t 会话名称
|--------|-----------------|----------------------|
| 序号 | tmux的窗口管理按键 | 说明 |
| 1 | c | 创建新窗口 |
| 2 | w | 列出所有窗口(可使用上下左右方向键切换) |
| 3 | n | 切换到下一个窗口 |
| 4 | p | 切换到上一个窗口 |
| 5 | & | 需确认的关闭当前窗口 |
| 6 | , | 重命名当前窗口 |
[tmux的窗口管理【前缀键(ctrl+b)+如下按键】]
|--------|-----------------|-----------------|
| 序号 | tmux的面板管理按键 | 说明 |
| 1 | % | 垂直分割面板(分为左右) |
| 2 | " | 水平分割面板(分为上下) |
| 3 | 方向键【↑↓←→】 | 切换到对应面板上 |
| 4 | z | 最大化/还原当前面板 |
| 5 | x | 关闭当前面板 |
| 6 | 空格键 | 切换面板布局(如:平铺、堆叠) |
[tmux的面板管理【前缀键(ctrl+b)+如下按键】]




二、Linux端口与命令提示
2.1、端口连通性测试
bash
#端口连通性测试
#1-tcp协议端口连通性测试命令【telnet只能用于测试tcp协议的端口】
telnet ip port
#2-udp协议端口连通性测试命令【netcat【nc】可用于测试tcp与udp协议的端口】
nc -Z -V -u ip port
#3-tcp端口扫描
nmap ip
#4-udp端口扫描
nmap -sU ip



2.2、Linux命令提示工具
Linux中的命令及其对应的参数内容有很多,特别是对于初学者来说更是难以记住。而tldr工具就是解决这个问题的。
bash
#安装Linux各种命令操作提示工具(会给出各种命令的使用示例),可以实现命令的快速上手使用
pip3 install tldr
tldr --update
#比如我不熟悉tar命令的使用则可以使用如下命令查看使用方法
tldr tar
#比如我不熟悉scp命令的使用则可以使用如下命令查看使用方法
tldr scp
#比如我不熟悉ssh命令的使用则可以使用如下命令查看使用方法
tldr ssh




三、Linux中的swap分区与rm命令无法使用
3.1、Linux服务器上是否需要划分swap分区
swap本质上是通过硬盘虚拟出来的内存空间;典型的使用场景是【当服务器的物理内存不足的时候,操作系统可以将一些不活跃的内存页转到swap中,从而释放服务器的物理内存】。
使用swap的优点是【在物理内存不足的情况下,通过临时使用swap空间,可以减少内存溢出(OOM Out Of Memory)情况的发生】 (内存溢出对应的核心机制是 OOM Killer(内存耗尽杀手),它是 Linux 内核的一个保护机制,用于在系统物理内存和交换空间都被耗尽时,主动终止部分进程来释放内存,避免系统整体崩溃)。但是过多的使用swap会导致应用程序的性能急剧下降【建议swap分配在4-8G即可】。
bash
#临时关闭所有已启用的 swap(需 root 权限)
swapoff -a
#2-临时启用 /etc/fstab 中所有配置的 swap(需 root 权限)
swapon -a
#查看Linux系统中有哪些应用占用swap空间命令
for file in /proc/[0-9]*/status ; do awk '/VmSwap|Name|Pid/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 3 -n -r | head -20



3.2、rm命令无法使用解决方法
在一次性删除一百万个小文件时,执行【rm -rf ./*】就报错提示"-bash: /usr/bin/rm: 参数列表过长",也就是说rm命令无法使用了。

bash
#解决rm无法使用的三个方法
#方法一:通过xargs分批处理(可查看处理时间)
#参数说明:
#【-maxdepth 1】仅处理当前目录,不递归子目录(避免误删);
#【-type f】仅匹配文件(排除目录);
#【-delete】直接删除匹配的文件(无需额外调用 rm)。
time find . -maxdepth 1 -type f -print0 | xargs -0 rm -f
time find . -maxdepth 1 -type f -name "*.txt" | xargs rm -f
#方法二:使用find命令(推荐使用)
#1-删除当前目录下所有文件(保留目录结构)
time find . -maxdepth 1 -type f -delete
#2-删除指定类型的文件(比如 .log 后缀)
time find . -maxdepth 1 -type f -name "*.log" -delete
#3-先查看要删除的文件(确认无误后再删,推荐新手)
time find . -maxdepth 1 -type f -name "*.log"
#确认后执行删除
time find . -maxdepth 1 -type f -name "*.log" -delete
#方法三:使用rsync将空目录内容同步到需删除目录中
time rsync -a --delete --exclude '*.sh' 空目录 需删除目录

