说明:本文是记录一下方便自查的命令手册(博主平时遇到了这里没有的命令之后会动态更新)。这份手册旨在提供全面且实用的Linux命令参考,包含运维需要用到的所有命令以及平时所有常用的指令,分类进行展示便于查询。
Linux命令行介绍
Linux 命令行是与 Linux 操作系统交互的强大方式。通过命令行界面(CLI),用户可以执行各种操作,从简单的文件管理到复杂的系统配置。相比图形用户界面(GUI),命令行提供了更高的效率、灵活性和自动化能力。
要访问命令行,您可以使用终端应用程序。在大多数 Linux 发行版中,可以通过按 Ctrl+Alt+T 快速打开终端。
文件管理命令
ls(列出目录内容)
BASH
ls # 列出当前目录内容ls -l # 详细列表格式ls -a # 显示隐藏文件ls -h # 以人类可读的格式显示文件大小ls -lh # 详细列表并人类可读格式ls -ltr # 按时间排序(最新的在最后)ls -R # 递归显示子目录内容ls -i # 显示索引节点号ls --color=auto # 彩色显示(大多数发行版默认启用)cd(切换目录)
BASH
cd /path/to/directory # 切换到指定目录cd ~ # 切换到用户主目录cd .. # 返回上一级目录cd - # 返回上一个访问的目录cd / # 切换到根目录cd ../directory # 切换到上级目录下的其他目录pwd(打印工作目录)
BASH
pwd # 显示当前工作目录的完整路径pwd -P # 显示物理路径(解析符号链接)mkdir(创建目录)
BASH
mkdir directory # 创建单个目录mkdir -p dir1/dir2/dir3 # 递归创建多级目录mkdir -m 755 directory # 创建并指定权限模式mkdir dir1 dir2 dir3 # 一次创建多个目录cp(复制文件和目录)
BASH
cp file.txt destination/ # 复制文件到目标位置cp -r directory/ destination/ # 递归复制整个目录cp -a directory/ destination/ # 递归复制并保留所有属性cp -u file.txt destination/ # 只有当源文件比目标文件新或不存在时才复制cp -v file.txt destination/ # 显示复制过程详细信息cp -i file.txt destination/ # 覆盖前询问确认cp file.txt{,.bak} # 快速创建文件备份(创建file.txt.bak)mv(移动或重命名文件和目录)
BASH
mv file.txt newname.txt # 重命名文件mv file.txt /path/to/destination/ # 移动文件mv -i file.txt destination/ # 覆盖前询问确认mv -v file.txt destination/ # 显示移动过程详细信息mv -u file.txt destination/ # 只有当源文件比目标文件新时才移动mv file1.txt file2.txt destination/ # 一次移动多个文件mv directory/ newname/ # 重命名目录rm(删除文件和目录)
BASH
rm file.txt # 删除文件rm -f file.txt # 强制删除(不询问)rm -i file.txt # 删除前询问确认rm -r directory/ # 递归删除目录及其内容rm -rf directory/ # 强制递归删除目录rm -v file.txt # 显示删除过程详细信息rm -- -file-with-dash.txt # 删除以破折号开头的文件rmdir(删除空目录)
BASH
rmdir directory # 删除空目录rmdir -p dir1/dir2/dir3 # 递归删除目录,如果变为空目录touch(创建文件或更新时间戳)
BASH
touch file.txt # 创建空文件或更新现有文件的时间戳touch -a file.txt # 仅修改访问时间touch -m file.txt # 仅修改修改时间touch -t 202301011200 file.txt # 指定特定时间(年月日时分)touch -r ref_file.txt file.txt # 使用参考文件的时间戳ln(创建链接)
BASH
ln -s /path/to/file link_name # 创建符号链接ln /path/to/file link_name # 创建硬链接ln -sf /path/to/file link_name # 强制创建符号链接,覆盖已存在的链接ln -v /path/to/file link_name # 创建链接并显示详细信息find(查找文件和目录)
BASH
find /path -name "*.txt" # 按名称查找文件find /path -type f # 只查找文件find /path -type d # 只查找目录find /path -size +10M # 查找大于10MB的文件find /path -mtime -7 # 查找7天内修改过的文件find /path -user username # 查找特定用户拥有的文件find /path -perm 644 # 查找特定权限的文件find /path -name "*.log" -delete # 查找并删除匹配的文件find /path -exec command {} \; # 对查找结果执行命令find /path -name "*.txt" -exec chmod 644 {} \; # 查找并修改权限stat(显示文件或文件系统详细信息)
BASH
stat file.txt # 显示文件的详细信息stat -f /path # 显示文件系统信息file(确定文件类型)
BASH
file filename # 确定文件类型file -i filename # 显示MIME类型file -z compressed.gz # 查看压缩文件内容的类型realpath(显示文件或目录的绝对路径)
BASH
realpath file.txt # 显示文件的绝对路径
realpath -s symlink # 不解析符号链接文件查看与编辑命令
cat(连接并显示文件内容)
BASH
cat file.txt # 显示文件内容cat -n file.txt # 显示行号cat -A file.txt # 显示所有控制字符cat file1.txt file2.txt # 连接并显示多个文件cat > file.txt # 创建新文件(Ctrl+D结束)cat >> file.txt # 追加内容到文件less(分页查看文件内容)
BASH
less file.txt # 分页查看文件内容less -N file.txt # 显示行号less -S file.txt # 不折行显示less +100 file.txt # 从第100行开始显示less +/pattern file.txt # 从匹配模式的地方开始显示常用快捷键:空格(向下翻页),b(向上翻页),q(退出),/pattern(向下搜索),?pattern(向上搜索),n(下一个匹配),N(上一个匹配)
more(分页查看文件内容,比less功能少)
BASH
more file.txt # 分页查看文件内容more -num file.txt # 设置每屏行数more +num file.txt # 从第num行开始显示head(显示文件头部内容)
BASH
head file.txt # 显示文件前10行head -n 20 file.txt # 显示文件前20行head -c 100 file.txt # 显示前100个字节head -n -5 file.txt # 显示除最后5行外的所有内容tail(显示文件尾部内容)
BASH
tail file.txt # 显示文件最后10行tail -n 20 file.txt # 显示文件最后20行tail -c 100 file.txt # 显示最后100个字节tail -f file.txt # 实时查看文件追加内容(常用于日志监控)tail -F file.txt # 实时查看,即使文件被删除再创建也继续跟踪tail -n +10 file.txt # 从第10行开始显示grep(文本搜索)
BASH
grep "pattern" file.txt # 在文件中查找匹配行grep -i "pattern" file.txt # 忽略大小写查找grep -r "pattern" directory/ # 递归查找目录中的匹配grep -v "pattern" file.txt # 显示不匹配的行grep -n "pattern" file.txt # 显示匹配行及行号grep -w "word" file.txt # 只匹配整个单词grep -A 3 "pattern" file.txt # 显示匹配行及后3行grep -B 3 "pattern" file.txt # 显示匹配行及前3行grep -C 3 "pattern" file.txt # 显示匹配行及前后各3行grep -E "regex" file.txt # 使用扩展正则表达式grep -l "pattern" *.txt # 只显示包含匹配的文件名grep -c "pattern" file.txt # 计算匹配行数grep "pattern" file.txt --color=auto # 高亮显示匹配部分vi/vim(文本编辑器)
BASH
vi file.txt # 打开文件进行编辑vim file.txt # 打开文件进行编辑(增强版)常用模式和命令:
插入模式:按’i’进入,用于输入文本
命令模式:按’Esc’进入,用于执行命令
命令行模式:在命令模式下输入’:',用于执行底线命令
命令模式下的常用命令:
PLAINTEXT
:w # 保存文件
:q # 退出
:wq # 保存并退出
:q! # 强制退出不保存
:set number # 显示行号
:set nonumber # 不显示行号
/pattern # 向下搜索
?pattern # 向上搜索
dd # 删除当前行
yy # 复制当前行
p # 粘贴复制的内容
u # 撤销操作
G # 跳到文件最后一行
gg # 跳到文件第一行
:n # 跳到第n行
nano(简单的文本编辑器)
BASH
nano file.txt # 打开文件进行编辑nano -m file.txt # 启用鼠标支持nano -i file.txt # 自动缩进nano -B file.txt # 自动备份sed(流编辑器)
BASH
sed 's/old/new/' file.txt # 替换文件中的第一个匹配项sed 's/old/new/g' file.txt # 全局替换所有匹配项sed -i 's/old/new/g' file.txt # 直接修改文件内容sed '1,5s/old/new/g' file.txt # 只在第1-5行中替换sed '/pattern/s/old/new/g' file.txt # 只在包含pattern的行中替换sed '/pattern/d' file.txt # 删除包含pattern的行sed '1,5d' file.txt # 删除第1-5行sed '$d' file.txt # 删除最后一行sed 'G' file.txt # 每行后添加空行sed '/^$/d' file.txt # 删除空行awk(文本处理语言)
BASH
awk '{print $1}' file.txt # 打印第一列awk '{print $1,$3}' file.txt # 打印第一列和第三列awk -F: '{print $1,$3}' /etc/passwd # 使用:作为分隔符awk 'NR==1,NR==5 {print}' file.txt # 打印第1-5行awk '/pattern/ {print}' file.txt # 打印匹配pattern的行awk '{sum+=$1} END {print sum}' file.txt # 计算第一列的总和awk 'length > 80' file.txt # 打印长度超过80的行awk '{ print NR, $0 }' file.txt # 添加行号sort(排序)
BASH
sort file.txt # 按字母顺序排序sort -n file.txt # 按数字顺序排序sort -r file.txt # 逆序排序sort -k 2 file.txt # 按第二列排序sort -t: -k 3 file.txt # 使用:作为分隔符,按第三列排序sort -u file.txt # 排序并去重sort -h file.txt # 按人类可读大小排序(如1K、2M、3G)uniq(去除重复行)
BASH
uniq file.txt # 删除连续的重复行sort file.txt | uniq # 删除所有重复行(先排序)uniq -c file.txt # 计算每行出现的次数uniq -d file.txt # 只显示重复的行uniq -u file.txt # 只显示不重复的行cut(裁剪文件内容)
BASH
cut -c 1-5 file.txt # 提取每行第1-5个字符cut -d: -f1,3 /etc/passwd # 使用:分隔,提取第1、3列cut -d' ' -f3- file.txt # 提取第3列及以后的列tr(转换字符)
BASH
cat file.txt | tr 'a-z' 'A-Z' # 小写转大写cat file.txt | tr -d '\r' # 删除回车符tr -s ' ' < file.txt # 压缩连续空格为单个空格diff(比较文件差异)
BASH
diff file1.txt file2.txt # 比较两个文件的差异diff -u file1.txt file2.txt # 统一格式输出差异diff -r dir1/ dir2/ # 递归比较两个目录patch(应用diff补丁)
BASH
diff -u old_file new_file > patch_file # 创建补丁
patch old_file < patch_file # 应用补丁
patch -R file < patch_file # 撤销补丁tee(读取标准输入并写入文件和标准输出)
BASH
command | tee file.txt # 输出到屏幕并保存到文件command | tee -a file.txt # 追加到文件wc(字数统计)
BASH
wc file.txt # 显示行数、单词数和字节数wc -l file.txt # 只显示行数wc -w file.txt # 只显示单词数wc -c file.txt # 只显示字节数wc -m file.txt # 只显示字符数权限管理命令
chmod(更改文件权限)
BASH
chmod 755 file.txt # 使用数字设置权限chmod u+x file.txt # 给文件所有者添加执行权限chmod g+w file.txt # 给组添加写权限chmod o-r file.txt # 移除其他用户读权限chmod a+x file.txt # 给所有用户添加执行权限chmod -R 755 directory/ # 递归设置目录及内容权限chmod --reference=ref_file file.txt # 复制参考文件的权限chown(更改文件所有者和组)
BASH
chown user file.txt # 更改文件所有者chown user:group file.txt # 同时更改所有者和组chown :group file.txt # 只更改组chown -R user:group directory/ # 递归更改目录及内容的所有者和组chown --reference=ref_file file.txt # 复制参考文件的所有者和组chgrp(更改文件组)
BASH
chgrp group file.txt # 更改文件所属组chgrp -R group directory/ # 递归更改目录及内容的组chgrp --reference=ref_file file.txt # 复制参考文件的组umask(设置默认权限掩码)
BASH
umask # 显示当前umask值umask 022 # 设置umask值(创建文件权限为644,目录为755)umask -S # 以符号形式显示umaskgetfacl/setfacl(访问控制列表)
BASH
getfacl file.txt # 显示文件的ACL
setfacl -m u:user:rw- file.txt # 为用户设置ACL
setfacl -m g:group:r-- file.txt # 为组设置ACL
setfacl -x u:user file.txt # 删除用户的ACL
setfacl -b file.txt # 删除所有ACL
setfacl -R -m u:user:rwx dir/ # 递归设置目录ACL系统管理命令
uname(显示系统信息)
BASH
uname -a # 显示所有系统信息uname -r # 显示内核版本uname -m # 显示硬件架构uname -n # 显示网络主机名hostname(显示或设置主机名)
BASH
hostname # 显示当前主机名hostname newname # 临时设置主机名
hostnamectl set-hostname newname # 永久设置主机名(systemd系统)uptime(显示系统运行时间和负载)
BASH
uptime # 显示运行时间、用户数和负载平均值date(显示或设置系统日期和时间)
BASH
date # 显示当前日期和时间date +"%Y-%m-%d %H:%M:%S" # 按指定格式显示date -s "2023-01-01 12:00:00" # 设置系统日期和时间date -u # 显示UTC时间hwclock(硬件时钟控制)
BASH
hwclock --show # 显示硬件时钟时间
hwclock --systohc # 系统时间复制到硬件时钟
hwclock --hctosys # 硬件时钟复制到系统时间timedatectl(控制系统时间和日期)
BASH
timedatectl # 显示时间和日期设置
timedatectl list-timezones # 列出可用时区
timedatectl set-timezone Asia/Shanghai # 设置时区
timedatectl set-time "2023-01-01 12:00:00" # 设置系统时间
timedatectl set-ntp true # 启用NTP同步cal(显示日历)
BASH
cal # 显示当月日历cal -y # 显示当年日历cal 12 2023 # 显示指定月份的日历lsb_release(显示发行版信息)
BASH
lsb_release -a # 显示所有发行版信息
lsb_release -d # 只显示描述信息dmidecode(显示硬件信息)
BASH
dmidecode # 显示DMI表内容
dmidecode -t system # 显示系统信息
dmidecode -t bios # 显示BIOS信息
dmidecode -t processor # 显示处理器信息
dmidecode -t memory # 显示内存信息lshw(列出硬件信息)
BASH
lshw # 列出详细硬件信息
lshw -short # 简洁输出
lshw -C network # 只显示网络硬件
lshw -C disk # 只显示磁盘信息lscpu(显示CPU信息)
BASH
lscpu # 显示CPU架构信息lsmem(显示内存信息)
BASH
lsmem # 显示内存范围和设备信息
lsmem --summary # 显示内存总结信息free(显示内存使用情况)
BASH
free # 显示内存使用情况free -h # 以人类可读格式显示free -s 5 # 每5秒更新一次free -t # 显示总计行vmstat(报告虚拟内存统计)
BASH
vmstat # 显示虚拟内存统计vmstat 5 # 每5秒更新一次vmstat -s # 显示内存统计信息last(显示用户登录历史)
BASH
last # 显示所有用户的登录历史
last username # 显示特定用户的登录历史
last -n 10 # 显示最近10条登录记录
last reboot # 显示系统重启历史who(显示当前登录用户)
BASH
who # 显示当前登录的用户who -a # 显示所有信息whoami # 显示当前有效用户w(显示登录用户及其活动)
BASH
w # 显示登录用户及其活动
w username # 显示特定用户信息id(显示用户ID和组ID)
BASH
id # 显示当前用户的ID信息id username # 显示指定用户的ID信息dmesg(显示系统消息缓冲区)
BASH
dmesg # 显示内核环形缓冲区的所有消息dmesg | grep -i error # 只显示错误消息dmesg -H # 人类可读格式显示dmesg -w # 实时监控内核消息dmesg -T # 显示人类可读时间戳dmesg -l err,warn # 只显示错误和警告lsof(列出打开的文件)
BASH
lsof # 列出所有打开的文件lsof -u username # 列出特定用户打开的文件lsof -i :22 # 列出使用22端口的进程lsof -p pid # 列出特定进程打开的文件lsof /path/to/file # 列出访问特定文件的进程lsof -c httpd # 列出特定命令打开的文件lsof -i tcp # 列出所有TCP连接lsof -i udp # 列出所有UDP连接sysctl(配置内核参数)
BASH
sysctl -a # 显示所有可用的内核参数
sysctl kernel.hostname # 显示单个参数值
sysctl -w kernel.hostname=newname # 临时设置内核参数
sysctl -p # 加载/etc/sysctl.conf中的设置chroot(更改根目录)
BASH
chroot /mnt/newroot /bin/bash # 更改根目录并在新环境中运行命令shutdown(关机或重启系统)
BASH
shutdown -h now # 立即关机shutdown -r now # 立即重启shutdown -h +10 # 10分钟后关机shutdown -c # 取消计划的关机reboot(重启系统)
BASH
reboot # 重启系统reboot -f # 强制重启,不会执行正常关机序列poweroff(关闭系统)
BASH
poweroff # 关闭系统
poweroff -f # 强制关机halt(停止系统)
BASH
halt # 停止系统halt -f # 强制停止进程管理命令
ps(进程状态)
BASH
ps # 显示当前终端的进程ps aux # 显示所有进程详情ps -ef # 显示所有进程(完整格式)ps aux --sort=-%cpu # 按CPU占用率降序排列ps aux --sort=-%mem # 按内存占用降序排列ps -o pid,user,%cpu,%mem,cmd # 自定义输出格式ps -C nginx # 显示特定命令的进程ps -p 1234 # 显示特定PID的进程ps -t pts/0 # 显示特定终端的进程ps -u username # 显示特定用户的进程top(动态监控进程)
BASH
top # 实时显示进程信息top -n 5 # 只显示5次更新top -u username # 只显示特定用户的进程top -p 1234,5678 # 只监控特定PID的进程交互命令:
M:按内存使用排序
P:按CPU使用排序
k:杀死进程
r:重新调整优先级
h:帮助
q:退出
htop(增强版top)
BASH
htop # 启动htophtop相比top提供了更友好的界面和更多功能:
F2:设置
F3:搜索
F4:过滤
F5:树状视图
F6:排序
F9:杀死进程
F10:退出
kill(结束进程)
BASH
kill PID # 向进程发送TERM信号kill -9 PID # 强制终止进程(KILL信号)kill -l # 列出所有可用信号kill -HUP PID # 发送HUP信号(一般用于重载配置)killall(按名称杀死进程)
BASH
killall processname # 杀死所有匹配的进程killall -9 processname # 强制杀死所有匹配的进程killall -u username processname # 杀死特定用户的进程killall -i processname # 交互式确认每个进程pkill(按模式杀死进程)
BASH
pkill processname # 按名称杀死进程pkill -9 processname # 强制杀死进程pkill -u username # 杀死特定用户的所有进程pkill -t pts/0 # 杀死特定终端的所有进程pgrep(按模式查找进程)
BASH
pgrep processname # 列出进程PID
pgrep -u username # 列出特定用户的进程PID
pgrep -l processname # 列出进程PID和名称
pgrep -a processname # 列出进程PID和完整命令行nice/renice(设置进程优先级)
BASH
nice -n 10 command # 以较低优先级启动命令(值越大优先级越低)nice -n -10 command # 以较高优先级启动命令(需要root权限)renice 10 -p 1234 # 调整运行中进程的优先级renice 10 -u username # 调整用户所有进程的优先级nohup(忽略挂起信号)
BASH
nohup command & # 在后台运行命令,忽略终端关闭nohup command > output.log 2>&1 & # 后台运行并重定向输出time(测量命令执行时间)
BASH
time command # 显示命令执行时间
/usr/bin/time -v command # 显示详细的资源使用情况watch(定期执行命令)
BASH
watch command # 每2秒执行一次命令watch -n 5 command # 每5秒执行一次命令watch -d command # 高亮显示变化部分bg/fg(后台/前台作业控制)
BASH
command & # 在后台启动命令
Ctrl+Z # 暂停当前作业bg # 继续执行最近的作业在后台bg %2 # 将作业2移到后台fg # 将最近的后台作业移到前台fg %2 # 将作业2移到前台jobs(列出作业)
BASH
jobs # 显示当前shell中的所有作业jobs -l # 包括PID信息jobs -r # 只显示运行中的作业jobs -s # 只显示已停止的作业stress(系统压力测试)
BASH
stress --cpu 4 # 生成4个CPU负载
stress --io 2 # 生成2个IO负载
stress --vm 1 --vm-bytes 1G # 生成1GB内存负载
stress --timeout 60s # 运行60秒后停止strace(跟踪系统调用)
BASH
strace command # 跟踪命令的系统调用strace -p PID # 跟踪运行中进程的系统调用strace -e open command # 只跟踪特定系统调用strace -o output.log command # 将输出保存到文件strace -c command # 统计系统调用计数和时间ltrace(库调用跟踪)
BASH
ltrace command # 跟踪命令的库调用
ltrace -p PID # 跟踪运行中进程的库调用
ltrace -o output.log command # 将输出保存到文件磁盘与存储管理
df(报告文件系统磁盘空间使用情况)
BASH
df # 显示所有文件系统磁盘使用情况df -h # 以人类可读格式显示df -T # 显示文件系统类型df -i # 显示inode信息df /path # 显示特定文件系统信息du(估计文件空间使用量)
BASH
du # 显示当前目录及子目录的磁盘使用量du -h # 以人类可读格式显示du -s # 只显示总计du -a # 显示所有文件而不只是目录du -h --max-depth=1 /path # 只显示一级子目录的使用量du -h -c # 显示总计du -h --apparent-size # 显示文件大小而不是磁盘使用量fdisk(磁盘分区工具)
BASH
fdisk -l # 列出所有分区fdisk /dev/sda # 管理特定磁盘分区fdisk交互式命令:
m:显示帮助
p:打印分区表
n:创建新分区
d:删除分区
w:写入更改并退出
q:不保存退出
l:列出已知的分区类型
t:更改分区类型
parted(磁盘分区工具)
BASH
parted -l # 列出所有分区表parted /dev/sda print # 显示特定磁盘的分区表parted /dev/sda mkpart primary ext4 1MiB 100MiB # 创建新分区gdisk(GPT分区工具)
BASH
gdisk /dev/sda # 管理GPT分区表
gdisk -l /dev/sda # 显示分区信息mount(挂载文件系统)
BASH
mount # 显示所有挂载的文件系统mount /dev/sda1 /mnt # 挂载分区到挂载点mount -t ext4 /dev/sda1 /mnt # 指定文件系统类型mount -o remount,rw / # 重新挂载根分区为读写mount -a # 挂载/etc/fstab中的所有文件系统umount(卸载文件系统)
BASH
umount /mnt # 卸载挂载点umount /dev/sda1 # 卸载设备umount -l /mnt # 懒惰卸载(等待设备不再繁忙)umount -f /mnt # 强制卸载lsblk(列出块设备)
BASH
lsblk # 以树形列出所有块设备
lsblk -f # 显示文件系统信息
lsblk -m # 显示设备权限信息
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT # 自定义输出列blkid(显示块设备属性)
BASH
blkid # 显示所有块设备的UUID和文件系统类型
blkid /dev/sda1 # 显示特定设备信息mkfs(创建文件系统)
BASH
mkfs.ext4 /dev/sda1 # 在分区上创建ext4文件系统
mkfs.xfs /dev/sda2 # 创建XFS文件系统
mkfs.ntfs /dev/sda3 # 创建NTFS文件系统(需要ntfs-3g包)mkfs -t ext4 /dev/sda1 # 另一种语法创建ext4文件系统fsck(检查和修复文件系统)
BASH
fsck /dev/sda1 # 检查文件系统错误fsck -f /dev/sda1 # 强制检查fsck -y /dev/sda1 # 自动回答yesfsck -t ext4 /dev/sda1 # 指定文件系统类型badblocks(检查坏块)
BASH
badblocks -v /dev/sda1 # 检查分区坏块
badblocks -w /dev/sda1 # 写入测试(破坏性)tune2fs(调整ext文件系统参数)
BASH
tune2fs -l /dev/sda1 # 列出超级块内容
tune2fs -c 30 /dev/sda1 # 设置挂载次数检查
tune2fs -i 1m /dev/sda1 # 设置时间检查间隔
tune2fs -L "LABEL" /dev/sda1 # 设置卷标swapoff/swapon(管理交换空间)
BASH
swapon --show # 显示交换信息swapon /dev/sdb1 # 激活交换分区
swapoff /dev/sdb1 # 停用交换分区swapon -a # 激活所有交换空间mkswap(创建交换分区)
BASH
mkswap /dev/sdb1 # 创建交换分区sync(同步数据到磁盘)
BASH
sync # 将所有缓冲区数据写入磁盘hdparm(硬盘参数调整)
BASH
hdparm -i /dev/sda # 显示硬盘信息
hdparm -t /dev/sda # 测试读取速度
hdparm -T /dev/sda # 测试缓存读取速度
hdparm -S 120 /dev/sda # 设置硬盘休眠时间smartctl(监控磁盘健康状态)
BASH
smartctl -a /dev/sda # 显示所有SMART信息
smartctl -H /dev/sda # 显示健康状态
smartctl -t short /dev/sda # 启动短自检
smartctl -t long /dev/sda # 启动长时间自检LVM命令(逻辑卷管理)
BASH
# 物理卷管理
pvcreate /dev/sdb1 # 创建物理卷
pvdisplay # 显示物理卷信息
pvs # 简洁显示物理卷信息
# 卷组管理
vgcreate vg_name /dev/sdb1 # 创建卷组
vgextend vg_name /dev/sdc1 # 扩展卷组
vgdisplay # 显示卷组信息
vgs # 简洁显示卷组信息
# 逻辑卷管理
lvcreate -L 10G -n lv_name vg_name # 创建10G逻辑卷
lvextend -L +5G /dev/vg_name/lv_name # 扩展逻辑卷大小
lvreduce -L -5G /dev/vg_name/lv_name # 减小逻辑卷大小
lvdisplay # 显示逻辑卷信息
lvs # 简洁显示逻辑卷信息
resize2fs /dev/vg_name/lv_name # 调整文件系统大小以匹配逻辑卷dd(转换和复制文件)
BASH
dd if=/dev/zero of=file.img bs=1M count=100 # 创建100MB的文件dd if=/dev/sda of=/dev/sdb # 克隆整个磁盘dd if=/dev/sda of=disk.img # 创建磁盘镜像dd if=disk.img of=/dev/sda # 将镜像写回磁盘dd if=/dev/urandom of=file bs=1M count=1 # 生成随机数据dd if=/dev/zero of=/dev/sda bs=512 count=1 # 清除MBR网络管理命令
ifconfig(配置网络接口)
BASH
ifconfig # 显示所有活动接口的网络配置ifconfig eth0 # 显示特定接口的配置ifconfig eth0 192.168.1.2 netmask 255.255.255.0 # 配置IP地址和子网掩码ifconfig eth0 up # 启用接口ifconfig eth0 down # 禁用接口ip(取代ifconfig的现代网络工具)
BASH
ip addr show # 显示所有接口的地址信息ip addr show dev eth0 # 显示特定接口的地址信息ip addr add 192.168.1.2/24 dev eth0 # 添加IP地址ip addr del 192.168.1.2/24 dev eth0 # 删除IP地址ip link set eth0 up # 启用接口ip link set eth0 down # 禁用接口ip route show # 显示路由表ip route add default via 192.168.1.1 # 添加默认网关ip route add 10.0.0.0/8 via 192.168.1.1 # 添加静态路由ip -s link # 显示接口统计信息ping(测试网络连接)
BASH
ping google.com # 持续测试到google.com的连接ping -c 4 google.com # 只发送4个数据包ping -i 0.5 google.com # 每0.5秒发送一个数据包ping -s 1500 google.com # 使用1500字节的数据包ping -f google.com # 洪水ping(需要root权限)ping -I eth0 google.com # 使用指定接口发送pingtraceroute(显示到目标主机的路由路径)
BASH
traceroute google.com # 跟踪到google.com的路由traceroute -n google.com # 不解析IP到主机名traceroute -m 30 google.com # 设置最大跳数traceroute -w 2 google.com # 设置响应超时时间mtr(组合了ping和traceroute功能)
BASH
mtr google.com # 实时显示到google.com的网络路径和延迟mtr -c 10 google.com # 发送10个数据包后退出mtr -n google.com # 不解析主机名mtr -r google.com # 报告模式,不进入交互界面netstat(网络统计)
BASH
netstat -a # 显示所有连接和监听端口netstat -tulpn # 显示所有监听的TCP和UDP端口及程序netstat -tn # 显示所有TCP连接(不解析主机名)netstat -r # 显示路由表netstat -s # 显示每个协议的统计信息netstat -i # 显示网络接口统计信息ss(Socket统计,netstat的替代)
BASH
ss -a # 显示所有连接
ss -t # 只显示TCP连接
ss -u # 只显示UDP连接
ss -l # 只显示监听的套接字
ss -p # 显示使用套接字的进程
ss -s # 显示套接字统计信息
ss -tn state established # 显示已建立的TCP连接nmap(网络扫描工具)
BASH
nmap 192.168.1.1 # 扫描单个IP
nmap 192.168.1.0/24 # 扫描整个子网
nmap -p 80,443 192.168.1.1 # 扫描特定端口
nmap -p 1-65535 192.168.1.1 # 扫描所有端口
nmap -sV 192.168.1.1 # 服务版本检测
nmap -O 192.168.1.1 # 操作系统检测
nmap -A 192.168.1.1 # 全面扫描(启用操作系统检测、版本检测等)route(显示和管理路由表)
BASH
route # 显示路由表
route -n # 不解析主机名显示路由表
route add default gw 192.168.1.1 # 添加默认网关
route add -net 10.0.0.0/8 gw 192.168.1.1 # 添加静态路由
route del default # 删除默认网关arp(地址解析协议)
BASH
arp # 显示ARP缓存
arp -a # 显示所有条目
arp -d 192.168.1.1 # 删除特定条目
arp -s 192.168.1.100 00:11:22:33:44:55 # 添加静态ARP条目dig(DNS查询工具)
BASH
dig google.com # 查询A记录dig google.com +short # 简洁输出dig -t MX google.com # 查询MX记录dig -t ANY google.com # 查询所有记录dig @8.8.8.8 google.com # 使用指定的DNS服务器dig -x 8.8.8.8 # 反向DNS查询nslookup(DNS查询工具)
BASH
nslookup google.com # 查询A记录nslookup -type=MX google.com # 查询MX记录nslookup -type=ANY google.com # 查询所有记录nslookup google.com 8.8.8.8 # 使用指定的DNS服务器nslookup 8.8.8.8 # 反向DNS查询host(DNS查询工具)
BASH
host google.com # 查询A记录host -t MX google.com # 查询MX记录host -a google.com # 查询所有记录host google.com 8.8.8.8 # 使用指定的DNS服务器host 8.8.8.8 # 反向DNS查询whois(查询域名注册信息)
BASH
whois google.com # 查询域名注册信息ssh(安全Shell)
BASH
ssh user@hostname # 连接到远程主机ssh -p 2222 user@hostname # 使用指定端口连接ssh -i key.pem user@hostname # 使用私钥连接ssh -X user@hostname # 启用X11转发ssh -L 8080:localhost:80 user@hostname # 本地端口转发ssh -R 8080:localhost:80 user@hostname # 远程端口转发ssh -D 8080 user@hostname # 动态端口转发(SOCKS代理)
ssh-copy-id user@hostname # 复制SSH公钥到远程主机scp(安全复制)
BASH
scp file.txt user@hostname:/path # 复制本地文件到远程主机scp user@hostname:/path/file.txt . # 从远程主机复制文件到本地scp -r directory/ user@hostname:/path # 递归复制目录scp -P 2222 file.txt user@hostname:/path # 使用指定端口rsync(高效文件同步)
BASH
rsync -av directory/ user@hostname:/path # 同步本地目录到远程rsync -av user@hostname:/path/ directory/ # 同步远程目录到本地rsync -avz directory/ user@hostname:/path # 使用压缩传输rsync -av --delete directory/ user@hostname:/path # 删除目标中不存在于源的文件rsync -av --exclude="*.tmp" directory/ user@hostname:/path # 排除特定文件iptables(防火墙管理)
BASH
iptables -L # 列出所有规则
iptables -L -n # 不解析主机名
iptables -L -v # 详细输出
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许SSH
iptables -A INPUT -j DROP # 丢弃所有其他输入
iptables -F # 清除所有规则
iptables -t nat -L # 列出NAT表规则
iptables-save > rules.txt # 保存规则
iptables-restore < rules.txt # 恢复规则firewalld(RHEL/CentOS防火墙管理)
BASH
firewall-cmd --state # 查看防火墙状态
firewall-cmd --list-all # 列出所有配置
firewall-cmd --add-service=http # 允许HTTP
firewall-cmd --add-port=8080/tcp # 添加端口
firewall-cmd --permanent --add-port=8080/tcp # 永久添加规则
firewall-cmd --reload # 重载规则ufw(Ubuntu防火墙管理)
BASH
ufw status # 查看状态
ufw enable # 启用防火墙
ufw disable # 禁用防火墙
ufw allow 22 # 允许SSH端口
ufw allow ssh # 允许SSH服务
ufw deny 80 # 阻止端口
ufw delete allow 22 # 删除规则wget(网络下载器)
BASH
wget URL # 下载文件wget -c URL # 断点续传wget -b URL # 后台下载wget -O filename URL # 指定保存的文件名wget -q URL # 静默模式wget --user=USER --password=PASS URL # 使用身份验证wget -r URL # 递归下载wget -r -np -k URL # 递归下载网站,不跟随父目录链接curl(多协议数据传输工具)
BASH
curl URL # 显示URL内容curl -o filename URL # 保存到文件curl -O URL # 使用远程文件名保存curl -C - -O URL # 断点续传curl -I URL # 仅获取HTTP头curl -v URL # 显示详细信息curl -X POST -d "data" URL # 发送POST请求curl -H "Header: Value" URL # 添加自定义头curl -u user:password URL # 使用身份验证curl -F "file=@filename" URL # 上传文件nc/netcat(网络工具)
BASH
nc -l 1234 # 监听端口nc hostname 1234 # 连接到主机和端口nc -z hostname 22 # 检查端口是否开放nc -v hostname 22 # 详细输出nc -l 1234 > file.txt # 接收文件nc hostname 1234 < file.txt # 发送文件tcpdump(网络数据包分析)
BASH
tcpdump -i eth0 # 捕获特定接口的数据包
tcpdump -n # 不解析主机名
tcpdump host 192.168.1.1 # 捕获特定主机的数据包
tcpdump port 80 # 捕获特定端口的数据包
tcpdump -w capture.pcap # 保存捕获到文件
tcpdump -r capture.pcap # 读取捕获文件
tcpdump 'tcp port 80 and not host 192.168.1.1' # 复杂过滤ifup/ifdown(启用/禁用网络接口)
BASH
ifup eth0 # 启用网络接口ifdown eth0 # 禁用网络接口dhclient(DHCP客户端)
BASH
dhclient eth0 # 为接口请求IP地址
dhclient -r eth0 # 释放IP地址hostnamectl(主机名管理)
BASH
hostnamectl # 显示系统主机信息
hostnamectl set-hostname newname # 设置主机名用户管理命令
useradd(添加用户)
BASH
useradd username # 创建新用户useradd -m username # 创建用户及其主目录useradd -m -d /path/to/home username # 指定主目录路径useradd -g group username # 指定主组useradd -G group1,group2 username # 指定附加组useradd -s /bin/bash username # 指定默认shelluseradd -e 2023-12-31 username # 设置账户过期日期useradd -c "Full Name" username # 添加注释/全名useradd -u 1500 username # 指定UIDusermod(修改用户账户)
BASH
usermod -L username # 锁定用户账户usermod -U username # 解锁用户账户usermod -g group username # 修改用户的主组usermod -aG group username # 向用户添加附加组usermod -l newname oldname # 修改用户名usermod -d /path/to/home -m username # 修改主目录并移动文件usermod -s /bin/zsh username # 修改默认shellusermod -c "New Comment" username # 修改注释/全名usermod -e 2023-12-31 username # 设置账户过期日期userdel(删除用户)
BASH
userdel username # 删除用户userdel -r username # 删除用户及其主目录passwd(管理用户密码)
BASH
passwd # 修改当前用户密码passwd username # 修改指定用户密码passwd -l username # 锁定用户密码passwd -u username # 解锁用户密码passwd -d username # 删除用户密码passwd -e username # 强制用户下次登录时修改密码passwd -S username # 显示密码状态groupadd(添加用户组)
BASH
groupadd groupname # 创建新组groupadd -g 1500 groupname # 指定GIDgroupmod(修改用户组)
BASH
groupmod -n newname oldname # 修改组名groupmod -g 1600 groupname # 修改GIDgroupdel(删除用户组)
BASH
groupdel groupname # 删除组gpasswd(管理用户组)
BASH
gpasswd -a user group # 添加用户到组
gpasswd -d user group # 从组中删除用户
gpasswd -A user group # 设置组管理员groups(显示用户组成员关系)
BASH
groups # 显示当前用户所属组groups username # 显示指定用户所属组chage(修改用户密码过期信息)
BASH
chage -l username # 显示用户密码过期信息
chage -E 2023-12-31 username # 设置账户过期日期
chage -M 90 username # 设置密码最长有效期
chage -m 7 username # 设置密码最短有效期
chage -W 14 username # 设置密码过期前警告天数
chage -I 30 username # 设置密码过期后账户锁定天数
chage -d 0 username # 强制用户下次登录时修改密码su(切换用户)
BASH
su # 切换到root用户(需要密码)su username # 切换到指定用户su - # 切换到root用户并使用root的环境su - username # 切换到指定用户并使用其环境sudo(以其他用户身份执行命令)
BASH
sudo command # 以root身份执行命令sudo -u username command # 以指定用户身份执行命令sudo -l # 列出当前用户可用的sudo命令sudo -i # 切换到root用户环境sudo su - # 另一种切换到root用户环境的方式visudo(安全编辑sudoers文件)
BASH
visudo # 编辑/etc/sudoers文件id(显示用户和组ID信息)
BASH
id # 显示当前用户的ID信息id username # 显示指定用户的ID信息id -u # 只显示UIDid -g # 只显示主GIDid -G # 显示所有GIDid -n # 显示名称而不是IDlast(显示最近登录信息)
BASH
last # 显示最近登录的用户
last username # 显示特定用户的登录历史
last -n 10 # 只显示最近10条记录
last reboot # 显示系统重启历史lastlog(显示所有用户最后登录信息)
BASH
lastlog # 显示所有用户的最后登录信息
lastlog -u username # 显示特定用户的最后登录信息getent(获取系统数据库条目)
BASH
getent passwd # 显示所有用户信息
getent passwd username # 显示特定用户信息
getent group # 显示所有组信息
getent group groupname # 显示特定组信息软件包管理命令
APT (Debian/Ubuntu)
BASH
apt update # 更新软件包索引apt upgrade # 升级所有可升级的软件包apt full-upgrade # 升级软件包,可能会删除一些软件包apt install package-name # 安装软件包apt remove package-name # 移除软件包apt purge package-name # 移除软件包及其配置文件apt autoremove # 移除不再需要的依赖包apt search keyword # 搜索软件包apt show package-name # 显示软件包详细信息apt list --installed # 列出所有已安装的软件包apt list --upgradable # 列出可升级的软件包apt-get update # apt的替代命令apt-get install package-name # apt的替代命令apt-cache search keyword # 搜索软件包(替代命令)DPKG (Debian/Ubuntu底层包管理)
BASH
dpkg -i package.deb # 安装.deb包
dpkg -r package-name # 移除软件包
dpkg -P package-name # 完全移除软件包及其配置
dpkg -l # 列出已安装的软件包
dpkg -l | grep keyword # 搜索已安装的软件包
dpkg -s package-name # 显示软件包状态
dpkg -L package-name # 列出软件包的所有文件
dpkg -S /path/to/file # 查找文件属于哪个软件包
dpkg-reconfigure package-name # 重新配置已安装的软件包YUM/DNF (RHEL/CentOS/Fedora)
BASH
yum update # 更新所有软件包
yum install package-name # 安装软件包
yum remove package-name # 移除软件包
yum search keyword # 搜索软件包
yum info package-name # 显示软件包信息
yum list installed # 列出已安装的软件包
yum list available # 列出可用的软件包
yum clean all # 清除缓存
yum repolist # 列出启用的仓库
yum history # 显示事务历史DNF (YUM的新一代替代品)
BASH
dnf check-update # 检查可用更新
dnf upgrade # 升级所有软件包
dnf install package-name # 安装软件包
dnf remove package-name # 移除软件包
dnf search keyword # 搜索软件包
dnf info package-name # 显示软件包信息
dnf list installed # 列出已安装的软件包
dnf clean all # 清除缓存
dnf repolist # 列出启用的仓库
dnf history # 显示事务历史
dnf module list # 列出可用模块
dnf module enable module:stream # 启用模块流RPM (RHEL/CentOS/Fedora底层包管理)
BASH
rpm -i package.rpm # 安装RPM包rpm -U package.rpm # 升级RPM包rpm -e package-name # 移除软件包rpm -q package-name # 查询软件包rpm -qa # 列出所有已安装的软件包rpm -qf /path/to/file # 查找文件属于哪个软件包rpm -ql package-name # 列出软件包的所有文件rpm -qi package-name # 显示软件包信息rpm -V package-name # 验证软件包rpm --import key.asc # 导入GPG密钥Pacman (Arch Linux)
BASH
pacman -Syu # 同步数据库并更新系统
pacman -S package-name # 安装软件包
pacman -R package-name # 移除软件包
pacman -Rs package-name # 移除软件包及其依赖
pacman -Ss keyword # 搜索软件包
pacman -Si package-name # 显示远程软件包信息
pacman -Qi package-name # 显示本地软件包信息
pacman -Ql package-name # 列出软件包的所有文件
pacman -Qo /path/to/file # 查找文件属于哪个软件包
pacman -Qdt # 列出不再需要的软件包Zypper (SUSE)
BASH
zypper refresh # 刷新仓库zypper update # 更新已安装的软件包zypper install package-name # 安装软件包zypper remove package-name # 移除软件包zypper search keyword # 搜索软件包zypper info package-name # 显示软件包信息zypper list-updates # 列出可更新的软件包zypper repos # 列出配置的仓库zypper patch-check # 检查可用补丁zypper patches # 列出所有补丁Snap (跨Linux发行版的包管理)
BASH
snap find keyword # 搜索软件包
snap info package-name # 显示软件包信息
snap install package-name # 安装软件包
snap refresh package-name # 更新软件包
snap remove package-name # 移除软件包
snap list # 列出已安装的软件包
snap refresh # 更新所有snap包Flatpak (跨桌面Linux应用分发)
BASH
flatpak search keyword # 搜索应用
flatpak install app-id # 安装应用
flatpak uninstall app-id # 卸载应用
flatpak update # 更新所有应用
flatpak update app-id # 更新特定应用
flatpak list # 列出已安装的应用
flatpak run app-id # 运行应用压缩与归档命令
tar(归档工具)
BASH
tar -cf archive.tar file1 file2 # 创建归档文件tar -xf archive.tar # 解压归档文件tar -tvf archive.tar # 列出归档文件内容tar -czf archive.tar.gz directory/ # 创建gzip压缩归档tar -xzf archive.tar.gz # 解压gzip压缩归档tar -cjf archive.tar.bz2 directory/ # 创建bzip2压缩归档tar -xjf archive.tar.bz2 # 解压bzip2压缩归档tar -cJf archive.tar.xz directory/ # 创建xz压缩归档tar -xJf archive.tar.xz # 解压xz压缩归档tar --exclude='*.log' -czf archive.tar.gz directory/ # 排除特定文件gzip/gunzip(GNU压缩工具)
BASH
gzip file.txt # 压缩文件(创建file.txt.gz并删除原文件)gzip -k file.txt # 压缩并保留原文件gzip -9 file.txt # 最高压缩率gzip -d file.txt.gz # 解压文件
gunzip file.txt.gz # 解压文件bzip2/bunzip2(高压缩率工具)
BASH
bzip2 file.txt # 压缩文件bzip2 -k file.txt # 压缩并保留原文件bzip2 -d file.txt.bz2 # 解压文件
bunzip2 file.txt.bz2 # 解压文件xz(高压缩率工具)
BASH
xz file.txt # 压缩文件
xz -k file.txt # 压缩并保留原文件
xz -d file.txt.xz # 解压文件zip/unzip(兼容Windows的压缩工具)
BASH
zip archive.zip file1 file2 # 创建zip归档zip -r archive.zip directory/ # 递归压缩目录unzip archive.zip # 解压zip归档unzip -l archive.zip # 列出zip归档内容unzip archive.zip -d /target/directory # 解压到指定目录7z(高压缩率多格式工具)
BASH
7z a archive.7z file1 file2 # 创建7z归档
7z a -r archive.7z directory/ # 递归压缩目录
7z x archive.7z # 解压7z归档
7z l archive.7z # 列出7z归档内容
7z x archive.7z -o/target/directory # 解压到指定目录rar/unrar(RAR格式支持)
BASH
rar a archive.rar file1 file2 # 创建rar归档rar a -r archive.rar directory/ # 递归压缩目录unrar x archive.rar # 解压rar归档unrar l archive.rar # 列出rar归档内容unrar x archive.rar /target/directory/ # 解压到指定目录cpio(复制文件归档)
BASH
find . -name "*.txt" | cpio -ov > archive.cpio # 创建cpio归档
cpio -idv < archive.cpio # 解压cpio归档zstd(高压缩比和速度的压缩工具)
BASH
zstd file.txt # 压缩文件
zstd -d file.txt.zst # 解压文件
zstd -19 file.txt # 最高压缩率
zstd --rm file.txt # 压缩后删除原文件日志与监控命令
journalctl(systemd日志查询)
BASH
journalctl # 显示所有日志
journalctl -f # 跟踪最新日志(类似tail -f)
journalctl -u service-name # 显示特定服务的日志
journalctl --since today # 显示今天的日志
journalctl --since "2023-01-01" --until "2023-01-31" # 指定时间范围
journalctl -p err # 只显示错误及更高级别的日志
journalctl -b # 显示本次启动的日志
journalctl -b -1 # 显示上次启动的日志
journalctl --disk-usage # 显示日志占用的磁盘空间
journalctl --vacuum-time=1w # 删除一周前的日志dmesg(显示内核环形缓冲区消息)
BASH
dmesg # 显示内核消息dmesg -T # 显示带可读时间戳的消息dmesg | grep -i error # 过滤显示错误消息dmesg -w # 实时显示内核消息dmesg -c # 显示并清除消息tail(查看文件尾部)
BASH
tail -f /var/log/syslog # 实时查看系统日志tail -n 100 /var/log/syslog # 查看最后100行tail -f -n 100 /var/log/syslog # 查看最后100行并实时跟踪less(阅读日志文件)
BASH
less /var/log/syslog # 分页查看系统日志less +F /var/log/syslog # 类似tail -f的实时查看模式zcat/zless/zgrep(查看压缩日志)
BASH
zcat /var/log/syslog.1.gz # 查看压缩日志文件内容
zless /var/log/syslog.1.gz # 分页查看压缩日志
zgrep "error" /var/log/syslog.1.gz # 在压缩日志中搜索logrotate(日志轮转配置)
BASH
logrotate -d /etc/logrotate.conf # 调试模式,显示会做什么但不执行logrotate -f /etc/logrotate.conf # 强制执行日志轮转sar(系统活动报告)
BASH
sar # 显示当天的CPU使用情况
sar -r # 显示内存使用情况
sar -b # 显示I/O和传输速率统计
sar -n DEV # 显示网络设备统计
sar -f /var/log/sa/sa20 # 查看特定日期的报告
sar -o output.file 5 10 # 每5秒收集一次,共收集10次iostat(磁盘I/O统计)
BASH
iostat # 显示CPU和磁盘I/O统计
iostat -d # 只显示磁盘统计
iostat -x # 显示扩展磁盘统计
iostat -y 2 10 # 每2秒收集一次,共10次,去掉第一次mpstat(多处理器统计)
BASH
mpstat # 显示所有CPU使用情况
mpstat -P ALL # 分别显示每个CPU的统计
mpstat 2 5 # 每2秒一次,共5次vmstat(虚拟内存统计)
BASH
vmstat # 显示虚拟内存统计vmstat 2 5 # 每2秒一次,共5次vmstat -s # 显示内存使用详情vmstat -d # 显示磁盘统计nmon(系统监控工具)
BASH
nmon # 启动交互式监控工具
nmon -f -s 60 -c 60 # 每60秒收集一次,共60次,保存到文件collectd(系统统计收集守护进程)
BASH
systemctl status collectd # 查看collectd服务状态
systemctl start collectd # 启动collectd服务
systemctl stop collectd # 停止collectd服务atop(高级系统和进程监控)
BASH
atop # 启动交互式系统监控
atop -r /var/log/atop/atop_20230101 # 查看历史数据htop(增强的进程查看器)
BASH
htop # 启动交互式进程查看器glances(跨平台系统监控工具)
BASH
glances # 启动交互式监控
glances -w # 启动Web服务器模式netdata(实时性能监控)
BASH
systemctl status netdata # 查看netdata服务状态
systemctl start netdata # 启动netdata服务服务管理命令
systemctl(systemd服务管理)
BASH
systemctl status service-name # 检查服务状态
systemctl start service-name # 启动服务
systemctl stop service-name # 停止服务
systemctl restart service-name # 重启服务
systemctl reload service-name # 重新加载配置
systemctl enable service-name # 设置服务开机自启
systemctl disable service-name # 禁用服务开机自启
systemctl is-enabled service-name # 检查服务是否开机自启
systemctl mask service-name # 屏蔽服务(防止启动)
systemctl unmask service-name # 解除屏蔽
systemctl list-units --type=service # 列出所有活动服务单元
systemctl list-unit-files --type=service # 列出所有已安装的服务单元文件
systemctl daemon-reload # 重新加载systemd配置service(传统服务管理,兼容SysV)
BASH
service service-name status # 检查服务状态service service-name start # 启动服务service service-name stop # 停止服务service service-name restart # 重启服务service service-name reload # 重新加载配置service --status-all # 显示所有服务状态chkconfig(SysV服务配置)
BASH
chkconfig --list # 列出所有服务及其运行级别配置chkconfig service-name on # 启用服务自启动chkconfig service-name off # 禁用服务自启动chkconfig --level 35 service-name on # 设置特定运行级别的自启动update-rc.d(Debian/Ubuntu SysV服务配置)
BASH
update-rc.d service-name defaults # 添加默认启动脚本链接
update-rc.d service-name enable # 启用服务自启动
update-rc.d service-name disable # 禁用服务自启动
update-rc.d -f service-name remove # 删除启动脚本链接systemd-analyze(分析systemd启动性能)
BASH
systemd-analyze # 显示系统启动总时间
systemd-analyze blame # 按时间排序显示每个单元的启动时间
systemd-analyze critical-chain # 显示最慢的启动链
systemd-analyze plot > boot.svg # 创建启动过程可视化图表initctl(Upstart服务控制)
BASH
initctl list # 列出所有Upstart作业
initctl status service-name # 检查服务状态
initctl start service-name # 启动服务
initctl stop service-name # 停止服务
initctl restart service-name # 重启服务rc-service/rc-update(OpenRC服务控制)
BASH
rc-service service-name status # 检查服务状态
rc-service service-name start # 启动服务
rc-service service-name stop # 停止服务
rc-service service-name restart # 重启服务
rc-update show # 显示所有运行级别的服务
rc-update add service-name default # 添加服务到默认运行级别
rc-update del service-name default # 从默认运行级别删除服务journalctl(查看服务日志)
BASH
journalctl -u service-name # 查看特定服务的日志
journalctl -u service-name -f # 实时查看服务日志
journalctl -u service-name --since today # 查看今天的服务日志Shell脚本相关命令
bash(Bourne Again Shell)
BASH
bash script.sh # 运行bash脚本bash -x script.sh # 调试模式运行脚本bash -c "command" # 执行命令字符串bash -n script.sh # 语法检查不执行sh(POSIX shell)
BASH
sh script.sh # 运行shell脚本sh -x script.sh # 调试模式运行脚本chmod(更改脚本权限)
BASH
chmod +x script.sh # 添加执行权限env(设置环境并执行命令)
BASH
env VAR=value command # 设置环境变量并执行命令env -i command # 清空环境并执行命令env # 显示当前环境变量export(设置环境变量)
BASH
export VAR=value # 设置环境变量export VAR # 导出已存在的变量到环境export -p # 显示所有导出的变量set(设置Shell选项)
BASH
set -e # 遇到错误立即退出set -x # 显示执行的命令set -u # 使用未定义变量时报错set -o pipefail # 管道中任何命令失败都报错set +e # 关闭-e选项readonly(声明只读变量)
BASH
readonly VAR=value # 设置只读变量readonly VAR # 将已存在的变量标记为只读readonly -p # 显示所有只读变量trap(捕获信号)
BASH
trap "echo 'Caught signal'" SIGINT # 捕获SIGINT信号trap - SIGINT # 恢复SIGINT的默认处理trap "cleanup; exit" EXIT # 在脚本退出时执行清理函数source/. (执行脚本在当前shell)
BASH
source script.sh # 在当前shell中执行脚本. script.sh # 与source相同echo(显示消息)
BASH
echo "Hello World" # 显示文本echo -e "Hello\nWorld" # 解释转义序列echo -n "No newline" # 不添加换行符printf(格式化输出)
BASH
printf "Name: %s, Age: %d\n" "John" 30 # 格式化输出printf "%.2f\n" 3.1415926 # 保留小数点后两位read(读取输入)
BASH
read var # 从标准输入读取一行到变量read -p "Enter name: " name # 显示提示并读取输入read -s -p "Password: " password # 静默模式读取(不显示输入)read -t 5 var # 设置超时(5秒)read -a array # 读取到数组read -r var # 原始模式(不解释反斜杠)eval(执行参数作为命令)
BASH
eval "ls -la" # 执行字符串作为命令cmd="find . -name '*.txt'"eval $cmd # 执行复杂命令exec(执行命令并替换当前进程)
BASH
exec ls # 执行ls并替换当前shellexec 3> file.txt # 打开文件描述符用于写入exec 4< file.txt # 打开文件描述符用于读取exec 3>&- # 关闭文件描述符ulimit(限制shell资源)
BASH
ulimit -a # 显示所有限制ulimit -f 1024 # 限制文件大小(块)ulimit -n 1024 # 限制打开文件数ulimit -u 100 # 限制用户进程数test/[ ](条件测试)
BASH
test -f file.txt # 测试文件是否存在且是普通文件[ -d directory ] # 测试目录是否存在[ string1 = string2 ] # 测试字符串是否相同[ $num1 -eq $num2 ] # 测试数字是否相等[ -n "$var" ] # 测试变量是否非空[ -z "$var" ] # 测试变量是否为空[ condition1 -a condition2 ] # 逻辑AND[ condition1 -o condition2 ] # 逻辑OR[[ ]](增强的条件测试)
BASH
[[ -f file.txt ]] # 测试文件是否存在且是普通文件[[ string1 == string2 ]] # 测试字符串是否相同[[ string =~ regex ]] # 正则表达式匹配[[ $num1 -eq $num2 ]] # 测试数字是否相等[[ condition1 && condition2 ]] # 逻辑AND[[ condition1 || condition2 ]] # 逻辑ORfor(循环)
BASH
for i in 1 2 3; do echo $i; done # 基本for循环for i in {1..10}; do echo $i; done # 范围循环for i in $(seq 1 2 10); do echo $i; done # 步长为2的循环for ((i=0; i<10; i++)); do echo $i; done # C风格循环for file in *.txt; do echo $file; done # 遍历文件while(条件循环)
BASH
while [ $i -lt 10 ]; do # 当条件为真时循环
echo $i
i=$((i+1))done
while read line; do # 按行读取文件
echo $linedone < file.txt
until(条件循环)
BASH
until [ $i -ge 10 ]; do # 当条件为假时循环
echo $i
i=$((i+1))donecase(分支选择)
BASH
case $var in
pattern1)
commands;;
pattern2|pattern3)
commands;;
*)
default commands;;esacselect(创建菜单)
BASH
select option in "Option 1" "Option 2" "Quit"; do
case $option in
"Option 1")
echo "Selected Option 1";;
"Option 2")
echo "Selected Option 2";;
"Quit")
break;;
*)
echo "Invalid option";;
esacdonefunction(函数定义)
BASH
function myfunc() {
echo "Function argument: $1"
return 0}
# 或myfunc() {
echo "Function argument: $1"
return 0}
# 调用函数
myfunc argument
declare(声明变量及属性)
BASH
declare -i num=10 # 声明整数变量declare -r var="readonly" # 声明只读变量declare -a array # 声明数组declare -A map # 声明关联数组declare -p var # 显示变量信息let(执行算术表达式)
BASH
let "a = 5 + 3" # 执行算术运算let "a++" # 增量let "a += 2" # 加并赋值expr(执行表达式)
BASH
expr 5 + 3 # 计算并输出表达式expr length "string" # 计算字符串长度expr substr "string" 2 3 # 提取子字符串expr index "string" "s" # 查找字符位置bc(精确计算器)
BASH
echo "5.5 + 3.2" | bc # 计算浮点数echo "scale=2; 10/3" | bc # 设置小数精度echo "obase=16; 255" | bc # 十进制转十六进制安全相关命令
ssh-keygen(生成SSH密钥)
BASH
ssh-keygen # 生成SSH密钥对
ssh-keygen -t rsa -b 4096 # 生成4096位RSA密钥
ssh-keygen -t ed25519 # 生成Ed25519密钥(更安全)
ssh-keygen -f keyfile # 指定密钥文件名
ssh-keygen -p -f keyfile # 修改密钥密码ssh-copy-id(复制SSH公钥到远程主机)
BASH
ssh-copy-id user@hostname # 复制默认公钥到远程主机
ssh-copy-id -i keyfile.pub user@hostname # 指定公钥文件openssl(OpenSSL工具集)
BASH
# 对称加密
openssl enc -aes-256-cbc -in file.txt -out file.enc # 加密文件
openssl enc -aes-256-cbc -d -in file.enc -out file.txt # 解密文件
# 生成哈希
openssl dgst -sha256 file.txt # 生成SHA256哈希
openssl dgst -md5 file.txt # 生成MD5哈希
# 生成随机数据
openssl rand -base64 32 # 生成Base64编码的随机数据
openssl rand -hex 16 # 生成十六进制编码的随机数据
# 证书管理
openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout key.pem # 生成自签名证书
openssl x509 -in cert.pem -text -noout # 查看证书内容gpg(GNU Privacy Guard)
BASH
gpg --gen-key # 生成新密钥对
gpg --encrypt --recipient user file.txt # 加密文件
gpg --decrypt file.txt.gpg # 解密文件
gpg --sign file.txt # 签名文件
gpg --verify file.txt.sig # 验证签名
gpg --list-keys # 列出公钥
gpg --list-secret-keys # 列出私钥chage(修改用户密码有效期)
BASH
chage -l username # 显示用户密码策略
chage -M 90 username # 设置密码最长有效期为90天
chage -m 7 username # 设置密码最短有效期为7天
chage -d 0 username # 强制用户下次登录修改密码fail2ban-client(管理fail2ban服务)
BASH
fail2ban-client status # 显示所有监狱状态
fail2ban-client status sshd # 显示SSH监狱状态
fail2ban-client set sshd banip 192.168.1.100 # 手动禁止IP
fail2ban-client set sshd unbanip 192.168.1.100 # 解除IP禁止lastb(查看失败登录尝试)
BASH
lastb # 显示登录失败记录
lastb -n 20 # 显示最近20条失败记录ausearch(搜索审计日志)
BASH
ausearch -m login # 搜索登录相关审计事件
ausearch -ua 1000 # 搜索特定用户ID的事件
ausearch -ts today # 搜索今天的事件
ausearch -f /etc/passwd # 搜索与特定文件相关的事件auditctl(管理审计规则)
BASH
auditctl -l # 列出当前审计规则
auditctl -w /etc/passwd -p war -k passwd_changes # 监控文件更改
auditctl -a always,exit -S unlink -S rmdir # 监控删除操作getfacl/setfacl(管理文件访问控制列表)
BASH
getfacl file # 显示文件ACL
setfacl -m u:user:rw file # 设置用户ACL权限
setfacl -m g:group:r file # 设置组ACL权限
setfacl -x u:user file # 删除用户ACL
setfacl -b file # 删除所有ACLsestatus(SELinux状态)
BASH
sestatus # 显示SELinux状态setenforce(设置SELinux模式)
BASH
setenforce 0 # 设置SELinux为允许模式
setenforce 1 # 设置SELinux为强制模式restorecon(恢复SELinux上下文)
BASH
restorecon -v file # 恢复文件的默认SELinux上下文
restorecon -R -v /path # 递归恢复目录及内容的SELinux上下文chcon(更改SELinux安全上下文)
BASH
chcon -t httpd_sys_content_t file # 更改文件的SELinux类型
chcon -R -t httpd_sys_content_t /path # 递归更改目录及内容ufw(Ubuntu简化防火墙)
BASH
ufw status # 查看状态
ufw enable # 启用防火墙
ufw disable # 禁用防火墙
ufw allow 22 # 允许SSH端口
ufw deny 23 # 拒绝端口
ufw allow from 192.168.1.0/24 # 允许特定网段
ufw delete allow 22 # 删除规则firewall-cmd(FirewallD防火墙)
BASH
firewall-cmd --state # 查看状态
firewall-cmd --list-all # 列出所有设置
firewall-cmd --add-service=http # 允许HTTP服务
firewall-cmd --add-port=8080/tcp # 允许特定端口
firewall-cmd --permanent --add-service=https # 永久允许HTTPS
firewall-cmd --reload # 重新加载配置visudo(安全编辑sudoers文件)
BASH
visudo # 编辑sudoers文件lynis(安全审计工具)
BASH
lynis audit system # 审计系统安全
lynis show commands # 显示可用命令rkhunter(Rootkit检测器)
BASH
rkhunter --check # 检查系统安全隐患
rkhunter --update # 更新特征数据库实用技巧与快捷方式
命令行快捷键
PLAINTEXT
Ctrl+C - 中断当前命令
Ctrl+Z - 挂起当前命令(使用fg恢复)
Ctrl+D - 发送EOF信号,通常用于退出当前shell或终止输入
Ctrl+L - 清屏(相当于clear命令)
Ctrl+A - 移动到行首
Ctrl+E - 移动到行尾
Ctrl+U - 删除光标前所有内容
Ctrl+K - 删除光标后所有内容
Ctrl+W - 删除光标前的一个单词
Alt+F - 向前移动一个单词
Alt+B - 向后移动一个单词
Ctrl+R - 搜索命令历史
Ctrl+G - 退出搜索模式
Ctrl+P/Up Arrow - 上一条命令
Ctrl+N/Down Arrow - 下一条命令
Tab - 自动补全命令或文件名
历史命令技巧
BASH
!! # 重复上一条命令!n # 重复历史中第n条命令!-n # 重复倒数第n条命令!string # 重复最近以string开头的命令!?string # 重复最近包含string的命令
^string1^string2 # 将上一条命令中的string1替换为string2并执行!!:gs/string1/string2/ # 将上一条命令中的所有string1替换为string2并执行!$ 或 $_ # 引用上一条命令的最后一个参数!* # 引用上一条命令的所有参数!^ # 引用上一条命令的第一个参数输入/输出重定向
BASH
command > file # 将输出重定向到文件(覆盖)command >> file # 将输出追加到文件command < file # 从文件读取输入command 2> file # 将错误输出重定向到文件command &> file # 将标准输出和错误输出重定向到文件command >&2 # 将标准输出重定向到标准错误command 2>&1 # 将标准错误重定向到标准输出command | tee file # 将输出发送到标准输出和文件command |& tee file # 将标准输出和错误都发送到标准输出和文件进程管理快捷键
BASH
command & # 在后台运行命令jobs # 列出后台作业fg %n # 将作业号n切换到前台bg %n # 将作业号n切换到后台继续运行kill %n # 终止作业号n
disown %n # 使作业脱离shell控制nohup command & # 使命令免疫挂起和终端关闭别名与函数
BASH
# 创建别名alias ll='ls -alh'alias ..='cd ..'alias ...='cd ../..'
# 创建函数mcd() {
mkdir -p "$1" && cd "$1"}
extract() {
if [ -f $1 ]; then
case $1 in
*.tar.bz2) tar xjf $1 ;;
*.tar.gz) tar xzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) unrar e $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xf $1 ;;
*.tbz2) tar xjf $1 ;;
*.tgz) tar xzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*.7z) 7z x $1 ;;
*) echo "'$1' cannot be extracted via extract()" ;;
esac
else
echo "'$1' is not a valid file"
fi}命令组合
BASH
command1 && command2 # 只有command1成功时才执行command2
command1 || command2 # 只有command1失败时才执行command2
command1 ; command2 # 无论command1结果如何都执行command2(command1 ; command2) # 在子shell中执行命令{ command1 ; command2; } # 在当前shell中执行命令组双引号与单引号
BASH
echo "$HOME" # 变量会被解析,输出/home/userecho '$HOME' # 变量不会被解析,输出$HOMEecho "The date is $(date)" # 命令替换会被解析通配符和模式匹配
BASH
ls *.txt # 匹配所有.txt文件ls file[123].txt # 匹配file1.txt, file2.txt, file3.txtls file[1-5].txt # 匹配file1.txt到file5.txtls file[!1-5].txt # 匹配不在范围内的文件ls file?.txt # 匹配file后跟任意单个字符控制命令行操作
BASH
set -e # 脚本中任何命令失败就退出set -x # 显示执行的每条命令set -u # 引用未定义变量时报错set -o pipefail # 管道中任何命令失败都报错参数展开技巧
BASH
${var:-default} # 如果var未设置或为空,返回default${var:=default} # 如果var未设置或为空,将default赋给var并返回${var:+value} # 如果var已设置且非空,返回value,否则返回空${var:?error} # 如果var未设置或为空,打印error并退出${#var} # 返回var的长度${var:offset:length} # 返回var的子字符串${var#pattern} # 从头删除最短匹配pattern的部分${var##pattern} # 从头删除最长匹配pattern的部分${var%pattern} # 从尾删除最短匹配pattern的部分${var%%pattern} # 从尾删除最长匹配pattern的部分${var/pattern/replacement} # 替换第一个匹配${var//pattern/replacement} # 替换所有匹配推荐的Linux命令查询网站
以下是几个非常实用的Linux命令查询网站,可以帮助你快速查找和学习Linux命令:
Linux命令大全(手册) - 提供全面的Linux命令分类查询,包括文件管理、文档编辑、系统管理等多个分类的命令详解。
菜鸟教程 - Linux命令大全 - 提供详细的Linux命令使用说明和参数解释,适合初学者和有经验用户。
freeCodeCamp - Linux命令手册 - 提供详细解释和实用示例的Linux命令入门指南。
这些网站提供了丰富的命令参考资料和使用示例,无论是日常使用还是系统管理,都能找到需要的命令信息。当遇到不熟悉的命令或需要了解特定参数时,可以在这些网站上快速查询。

