一、 文件与目录操作
1.1 文件重命名与移动 (mv)
命令简述:mv(源自英文 "move")用于移动文件或对文件、目录进行重命名。
语法格式:
mv [选项] 源文件或目录 目标文件或目录
示例:
mv lay lby
将当前目录下的文件 lay 重命名为 lby。
注意事项:执行此命令会改变文件的存储位置。
💡 命令辨析:mv 与 cp 的区别
cp(copy):复制文件。操作后原文件依然保留在原路径,同时在目标路径生成一份全新的副本。
mv(move):移动/重命名。操作后原路径的文件不复存在,相当于剪切。
1.2 删除文件 (rm)
命令简述:rm(源自 "remove")用于删除文件或目录。
语法格式:
rm [选项] 文件名
示例:
rm lay
交互机制:
在默认交互式环境下,系统会弹出确认提示。输入 y(yes)确认删除,输入 n(no)取消删除。
强制删除:添加 -f(force)参数可以跳过确认提示,直接强行删除。
rm -f lay
1.3 目录管理
创建目录 (mkdir)
命令简述:mkdir(源自 "make directory")用于在指定路径创建新目录。
语法格式:
mkdir [选项] 目录名
单级目录示例:
mkdir zeropoint
多级目录示例:若想一次性创建多层嵌套的子目录,需添加 -p(parents)参数:
mkdir -p zero_point/TV_show/logo
删除目录 (rmdir)
命令简述:rmdir(源自 "remove directory")用于删除空目录。
语法格式:
rmdir 目录名
安全机制:rmdir 只能删除不含任何文件或子目录的空目录。如果目录非空,系统会报错并拒绝删除。这一防误删机制设计非常安全。
💡 若要强制删除非空目录及其所有内容,需使用 rm -rf 目录名。
二、 查看文件内容
在 Linux 中,无需打开复杂的文本编辑器即可直接通过终端查看文件内容。
2.1 探测文件类型 (file)
原理解析:在直接查看文件之前,建议先确认其文件类型。如果直接用文本查看命令打开一个二进制文件(如可执行文件),会导致终端被乱码淹没甚至卡死。
语法格式:
file 文件名
常见输出类型:
文本文件:文件名: ASCII text 或 UTF-8 Unicode text 等(标识字符编码)。
目录:文件名: directory。
符号链接:文件名: symbolic link to 目标文件。
可执行文件:文件名: ELF 64-bit LSB executable... 或脚本文件 文件名: POSIX shell script, ASCII text executable。
2.2 查看完整文件
① cat 命令
适用场景:适合快速查看内容较少的小型文本文件。
语法格式:
cat [选项] 文件名
常用参数:
-n:为输出的所有行进行编号(包括空行)。
-b:仅为非空行编号。
缺点:如果文件非常大,cat 会瞬间将所有内容输出到终端并滚动到末尾,极不方便阅读。
② more 命令
适用场景:需要简单分页阅读的大型文本。
语法格式:
more 文件名
操作方式:
按 Space(空格键):向下翻一页。
按 Enter(回车键):向下滚一行。
按 q:退出阅读。
③ less 命令
适用场景:more 命令的升级版,也是日常查看大文件最推荐的工具。
语法格式:
less 文件名
优势功能:
支持使用键盘方向键或 PageUp / PageDown 自由向上、向下滚动页面。
支持输入 /关键字 在文件内快速进行文本搜索。
2.3 查看部分文件
① tail 命令
功能:查看文件的尾部内容,默认显示文件的最后 10 行。
语法格式:
tail [选项] 文件名
常用参数:
-n <数字>:指定显示的行数。例如显示最后 4 行:
tail -n 4 zero_point.txt
-f:实时追踪。让终端保持挂起状态并实时输出文件新追加的内容,非常适合用来监控系统动态日志文件。
② head 命令
功能:与 tail 正好相反,用于查看文件的头部内容,默认显示前 10 行。
语法格式:
head [选项] 文件名
常用参数:
-n <数字>:指定显示开头的行数。
⚠️ 注意:head 命令没有类似于 tail -f 的实时追踪参数。
三、 Bash Shell 深入:进程监测与管理
作为 Linux 系统管理员,跟踪、了解并控制系统中正在运行的程序(即"进程")是一项核心任务。
3.1 静态探查进程 (ps)
基本概念:正在内存中运行的程序实体即为进程。
语法格式:
ps [参数]
常用参数划分
参数风格
参数
详细说明
标准风格 (带 -)
-e 或 -A
显示系统中的所有进程。
-d
显示除系统会话引导进程之外的所有进程。
-C <命令名>
根据指定的命令/可执行文件名来筛选进程。
-u <用户名>
根据有效用户 ID(EUID)筛选进程。
-U <用户名>
根据真实用户 ID(RUID)筛选进程。
-p
精确筛选指定 PID 的进程。
--ppid
筛选指定父进程号(PPID)的进程。
-t
按照终端设备进行筛选。
BSD 风格 (不带 -)
a
显示所有与终端关联的进程(包括其他用户)。
x
显示所有不带终端控制的进程(常用于后台守护进程)。
g
显示所有包含终端的进程,包括会话引导进程。
U <用户名>
筛选属于指定用户的进程。
常见的输出字段含义
UID / USER:启动并运行该进程的用户。
PID:进程的唯一标识号(Process ID)。
PPID:当前进程的父进程号(Parent Process ID)。
C:进程生命周期内的 CPU 利用率估值。
STIME:进程启动时的系统时间。
TTY:进程启动时所依附的终端设备(若为 ? 则表示无终端,通常是系统后台服务)。
TIME:该进程累计消耗的 CPU 时间总量。
CMD:启动该进程的命令行/程序名称。
3.2 动态实时监测 (top)
命令简述:ps 仅能提供当前瞬间的系统快照,而 top 可以提供全屏的、动态更新的实时监测界面。
语法格式:
top [参数]
常用参数:
-d <秒数>:设置界面的刷新时间间隔。
-p :只监控指定 PID 的进程(多个 PID 用逗号隔开)。
-u <用户名>:仅显示指定用户的进程。
-n <次数>:在更新指定次数后自动退出命令。
-b:批处理模式。不进入交互式界面,直接将监控数据按行打印,通常用于脚本或输出重定向。
输出界面核心字段解析
PID:进程 ID。
USER:进程的所有者用户名。
PR:进程调度的优先级。
NI:进程的谦让度值(Nice值,负值表示高优先级,正值表示低优先级)。
VIRT:进程占用的虚拟内存总量。
RES:进程当前实际占用的、未被交换出去的物理内存总量(Resident Size)。
S:进程状态:
D:不可中断的睡眠状态(通常在等待 I/O)。
R:运行状态(Running / Runnable)。
S:睡眠/休眠状态(Sleeping)。
T:跟踪或已停止状态(Traced / Stopped)。
Z:僵尸状态(Zombie,进程已死但资源未被回收)。
%CPU:进程自上次刷新以来占用的 CPU 时间比例。
%MEM:进程占用的物理内存百分比。
TIME+:自进程启动起,所占用的 CPU 时间总计(精度更高)。
COMMAND:对应的启动命令行名称。
退出指令:在 top 交互界面中,随时按键盘上的 q 键即可退出。
3.3 结束进程
在 Linux 中,管理员通过向进程发送信号(Signal)来与其进行通信,进而控制其运行、挂起或消亡。
3.3.1 常用系统信号
信号值
信号名称
作用与描述
1
SIGHUP
挂起。通常用于让后台守护进程/服务重新加载其配置文件,而无需彻底重启进程。
2
SIGINT
中断。等同于在前台运行程序时按下快捷键 Ctrl + C。
3
SIGQUIT
退出。类似于 SIGINT,但退出时会尝试产生核心转储文件(core dump)。
9
SIGKILL
无条件终止(强杀)。进程接收到此信号后必须立即无条件消亡,无法被捕获、阻塞或忽略。常用于清理卡死的顽固进程。
11
SIGSEGV
段错误。表示进程尝试访问未分配给它的非法内存空间。
15
SIGTERM
尽可能终止(默认信号)。属于温和的正常退出请求,允许进程清理临时文件、释放资源并安全退出。
17
SIGSTOP
无条件停止运行。强制暂停进程的运行,使其转入后台。
18
SIGTSTP
终端停止运行。类似于在控制台按下 Ctrl + Z,使进程暂停。
19
SIGCONT
恢复执行。用于将处于 STOP 或 TSTP 暂停状态的进程恢复至运行状态。
3.3.2 进程清理命令
① kill 命令
工作机制:通过进程 ID(PID)向指定进程发送信号。
语法格式:
kill [-信号值] PID
示例:
正常结束进程(默认发送 15 号信号):
kill 1523
强制杀死卡死进程(发送 9 号强杀信号):
kill -9 1523
② killall 命令
工作机制:允许直接通过进程名称来批量杀死进程,无需查找 PID。该命令非常强大,并且支持通配符匹配。
语法格式:
killall [选项] 进程名
示例:
killall httpd
此命令会终止系统上所有名为 httpd 的进程。