Linux 常用命令大全及实战指南
Cactus li2024年9月26日...大约 12 分钟Linux系统管理命令行Linux命令行Shell系统管理Bash运维CLI终端Unix
本指南涵盖了 Linux 系统中最常用和最实用的命令,适合初学者快速上手和经验丰富的用户参考。每个命令都包含详细的说明、参数解释和实用示例。
使用建议
- 初学者:建议按顺序学习,从系统信息命令开始
- 进阶用户:可以直接查找需要的命令分类
- 实际操作:建议先在测试环境中练习,特别是涉及文件删除的命令
安全提醒
使用 rm
, mv
, chmod
等命令时请格外小心,错误操作可能导致数据丢失或系统损坏。
命令 | 功能说明 | 常用参数 | 示例 |
---|
uname | 显示系统信息 | -a 显示所有信息
-r 显示内核版本 | uname -a |
hostnamectl | 显示主机名信息 | set-hostname 设置主机名 | hostnamectl |
uptime | 显示系统运行时间 | 无常用参数 | uptime |
date | 显示/设置系统时间 | -d 显示指定时间
+FORMAT 格式化输出 | date '+%Y-%m-%d %H:%M:%S' |
timedatectl | 时间日期管理 | set-timezone 设置时区 | timedatectl set-timezone Asia/Shanghai |
cal | 显示日历 | -y 显示全年日历 | cal 2024 |
命令 | 功能说明 | 常用参数 | 示例 |
---|
whoami | 显示当前用户名 | 无参数 | whoami |
id | 显示用户和组ID信息 | -u 只显示用户ID
-g 只显示组ID | id username |
who | 显示已登录用户 | -b 显示启动时间 | who -u |
w | 显示登录用户详情 | -h 不显示标题 | w |
last | 显示用户登录历史 | -n NUM 显示最近NUM次 | last -10 |
lastlog | 显示所有用户最后登录时间 | -u USER 指定用户 | lastlog -u root |
命令 | 功能说明 | 常用参数 | 示例 |
---|
free | 显示内存使用情况 | -h 人性化显示
-m 以MB显示
-g 以GB显示 | free -h |
cat /proc/cpuinfo | 显示CPU详细信息 | 配合 grep 过滤 | cat /proc/cpuinfo | grep 'model name' |
cat /proc/meminfo | 显示内存详细信息 | 配合 grep 过滤 | cat /proc/meminfo | grep MemTotal |
lscpu | 显示CPU架构信息 | 无常用参数 | lscpu |
top | 实时显示系统进程 | -d 刷新间隔
-p PID 监控指定进程 | top -d 2 |
htop | 增强版top | 交互式操作 | htop |
命令 | 功能说明 | 常用参数 | 示例 |
---|
df | 显示磁盘空间使用 | -h 人性化显示
-i 显示inode使用 | df -h |
du | 显示目录大小 | -h 人性化显示
-s 只显示总计
-d NUM 显示深度 | du -sh /var/log |
lsblk | 显示块设备信息 | -f 显示文件系统信息 | lsblk -f |
fdisk | 磁盘分区管理 | -l 列出分区信息 | sudo fdisk -l |
mount | 显示挂载信息 | 配合 findmnt | findmnt |
lsof | 显示打开的文件 | -u USER 指定用户
+D DIR 指定目录 | lsof /var/log |
命令 | 功能说明 | 常用参数 | 示例 |
---|
lshw | 显示硬件详细信息 | -short 简化显示
-class TYPE 指定类型 | sudo lshw -short |
lspci | 显示PCI设备 | -v 详细信息
-t 树状显示 | lspci -tv |
lsusb | 显示USB设备 | -v 详细信息
-t 树状显示 | lsusb -tv |
dmidecode | 显示BIOS硬件信息 | -t TYPE 指定类型 | sudo dmidecode -t memory |
dmesg | 显示内核消息 | -T 显示时间戳
| tail 显示最新消息 | dmesg -T | tail |
命令 | 功能说明 | 常用参数 | 示例 |
---|
useradd | 添加用户 | -m 创建主目录
-s SHELL 指定shell
-G GROUP 附加组 | sudo useradd -m -s /bin/bash john |
userdel | 删除用户 | -r 删除主目录 | sudo userdel -r john |
usermod | 修改用户信息 | -g GROUP 修改主组
-G GROUP 修改附加组
-s SHELL 修改shell | sudo usermod -G wheel john |
passwd | 修改密码 | -l 锁定用户
-u 解锁用户 | passwd john |
groupadd | 添加组 | -g GID 指定组ID | sudo groupadd -g 1001 developers |
groupdel | 删除组 | 无常用参数 | sudo groupdel developers |
groups | 显示用户所属组 | 无参数 | groups username |
命令 | 功能说明 | 常用参数 | 示例 |
---|
su | 切换用户 | - 完整环境切换
-c COMMAND 执行命令 | su - root |
sudo | 以其他用户身份执行 | -u USER 指定用户
-i 交互式shell | sudo -u apache cat /var/log/httpd/access.log |
visudo | 编辑sudo配置 | 安全编辑/etc/sudoers | sudo visudo |
命令 | 功能说明 | 常用参数 | 示例 |
---|
ip | 网络配置管理 | addr show 显示IP
route show 显示路由
link show 显示接口 | ip addr show eth0 |
ifconfig | 网络接口配置 | -a 显示所有接口 | ifconfig eth0 |
netstat | 网络连接状态 | -tuln 显示监听端口
-r 显示路由表 | netstat -tuln |
ss | 现代版netstat | -tuln 显示监听端口
-p 显示进程 | ss -tulnp |
ping | 测试网络连通性 | -c NUM 指定次数
-i SEC 间隔时间 | ping -c 4 google.com |
traceroute | 跟踪网络路径 | -n 不解析主机名 | traceroute google.com |
命令 | 功能说明 | 常用参数 | 示例 |
---|
nslookup | DNS查询 | 交互式和非交互式 | nslookup google.com |
dig | DNS查询工具 | @SERVER 指定DNS服务器
-x 反向查询 | dig @8.8.8.8 google.com |
host | DNS查询 | -t TYPE 指定查询类型 | host -t MX google.com |
whois | 域名信息查询 | 无常用参数 | whois google.com |
命令 | 功能说明 | 常用参数 | 示例 |
---|
wget | 下载文件 | -c 断点续传
-r 递归下载
-P DIR 指定目录 | wget -c https://example.com/file.zip |
curl | 数据传输工具 | -O 保存文件
-L 跟随重定向
-H 添加头部 | curl -O https://example.com/file.zip |
scp | 安全复制 | -r 递归复制
-P PORT 指定端口 | scp -r /local/path user@host:/remote/path |
rsync | 同步工具 | -av 归档+详细
--delete 删除目标多余文件 | rsync -av --delete /src/ /dst/ |
命令 | 解释 |
---|
ls -al | 列出文件-包括常规文件和隐藏文件以及它们的权限 |
tree | 以树形结构列出文件,常用参数有:-d 查看目录,-L num 查看num层文件,-a 查看隐藏文件 |
pwd | 显示当前目录文件路径 |
mkdir 'directory_name' | 创建一个新目录 |
rm file_name | 删除一个文件 |
rm -f filename | 强制删除文件 |
rm -r directory_name | 递归地删除一个目录 |
rm -rf directory_name | 强制并递归地删除一个目录 |
cp file1 file2 | 将file1的内容复制到file2 |
cp -r dir1 dir2 | 递归地将dir1复制到dir2。如果dir2不存在,则创建它 |
mv file1 file2 | 将file1重命名为file2 |
ln -s /path/to/file_name link_name | 创建到file_name的软链接 |
touch file_name | 创建一个新文件 |
cat > file_name | 从键盘创建一个文件 |
more file_name | 输出文件的内容 |
head file_name | 显示文件的前10行 |
tail file_name | 显示文件的最后10行 |
gpg -c file_name | 加密一个文件 |
gpg file_name.gpg | 解密文件 |
wc | 打印文件中的字节、单词和行数 |
xargs | 从标准输入执行命令 |
命令 | 解释 |
---|
scp file1.txt server2/tmp | 安全地将file1.txt复制到/tmp目录中的server2 |
rsync -a /home/apps /backup/ | 将/home/apps目录中的内容与/backup目录进行同步 |
scp check_linux.sh [email protected]:/work | 将check_linux.sh文件复制到远程机器/work 目录下 |
命令 | 解释 |
---|
cd .. | 在目录树结构中向上移动一层 |
cd | 将目录更改为$HOME目录 |
cd /test | 将目录更改为/test目录 |
命令 | 解释 |
---|
chmod octal filename | 将文件权限更改为八进制 |
chmod 777 /data/test.c | 将rwx权限设置为owner、group和everyone(其他可以访问服务器的人) |
chmod 755 /data/test.c | 将rwx设置为所有者,将r_x设置为组和所有人 |
chmod 766 /data/test.c | 为所有者设置rwx,为组和每个人设置rw |
chown owner user-file | 更改文件的所有权 |
chown owner-user:owner-group file_name | 更改文件的所有者和组所有者 |
chown owner-user:owner-group directory | 更改目录的所有者和组所有者 |
命令 | 解释 |
---|
tar -cf home.tar home<:code> | 创建名为"home"的存档文件。tar文件’home' |
tar -xf files.tar | 解压档案文件"files.tar" |
tar -zcvf home.tar.gz source-folder | 从源文件夹创建压缩的tar存档文件 |
gzip file | 压缩扩展名为.gz的文件 |
zip -r compressed.zip folder/ | 递归压缩目录folder 为压缩文件compressed.zip |
unzip compressed.zip -d folder/ | 在目录folder 下解压文件 |
unzip -v compressed.zip | 查看但不解压文件 |
命令 | 解释 |
---|
ps | 显示当前活动的进程 |
**`ps aux | grep 'telnet'`** |
pmap | 显示进程的内存映射 |
top | 显示所有正在运行的进程 |
kill pid | 使用给定的pid终止进程 |
killall proc | 杀死/终止所有名为proc的进程 |
pkill process-name | 向具有其名称的进程发送信号 |
lsof | 列出进程打开的文件 # |
renice 19 PID | 使进程以非常低的优先级运行 |
pgrep firefox | 查找Firefox进程ID |
pstree | 在树模型中可视化过程 |
命令 | 解释 |
---|
./configure | 检查系统,以获得构建程序所需的软件。它将构建包含有效构建项目所需的指令的Makefile |
make | |
make install | 编译后,该命令将二进制文件安装在默认/修改的路径中 |
命令 | 解释 |
---|
grep ‘pattern’ files | 在文件中搜索给定的模式 |
grep -r pattern dir | Search recursively for a pattern in a given directory |
locate file | 查找文件的所有实例 |
find /home/ -name "index" | 在/home文件夹中查找以’index’开头的文件名 |
find /home -size +10000k | 在主文件夹中查找大于10000k的文件 |
命令 | 解释 |
---|
df -h | 显示安装系统上的空闲空间 |
df -i | 显示文件系统上的空闲inode |
fdisk -l | 显示磁盘分区、大小和类型 |
du -sh | 以人类可读的格式显示当前目录中的磁盘使用情况 |
findmnt | 显示所有文件系统的目标挂载点 |
mount device-path mount-point | |
命令 | 解释 |
---|
rpm -i pkg_name.rpm | 安装 rpm 包 |
rpm -e pkg_name | 删除 rpm 包 |
dnf install pkg_name | 使用 dnf 工具安装软件包 |
命令 | 解释 |
---|
ip addr show | 显示IP地址和所有网络接口 |
ip address add 192.168.0.1/24 dev eth0 | 将IP地址192.168.0.1分配给接口eth0 |
ifconfig | 显示所有网络接口的IP地址 |
ping host | ping命令发送ICMP回送请求以建立到服务器/PC的连接 |
whois domain | 检索有关域名的更多信息 |
dig domain | 检索关于域的DNS信息 |
dig -x host | 对域执行反向查找 |
host google.com | 执行域名的IP查找 |
hostname -i | 显示本地IP地址 |
wget file_name | 从在线资源下载文件 |
netstat -pnltu | 显示所有活动监听端口 |
命令 | 解释 |
---|
0 | 标准输入 |
1 | 标准输出 |
2 | 错误输出 |
/dev/null | Linux的空设备文件,俗称“黑洞” |
命令 | 解释 |
---|
> | 覆盖运算符 |
>> | 追加运算符 |
>& | 重定向合并运算符 |
command > filename | 标准输出覆盖写入新文件 |
command 1> filename | 标准输出覆盖写入新文件(同上) |
command 2> filename | 标准错误覆盖写入新文件 |
command >> filename | 标准输出追加到新文件 |
command 1>> filename | 标准输出追加到新文件(同上) |
command 2>> filename | 标准错误追加到新文件 |
2>&1 | 标准错误重定向到标准输出 |
1>&2 | 标准输出重定向到标准错误 |
命令 | 解释 |
---|
command & | 使用后台进程模式执行 command |
Ctrl+Z | 将当前进程放到后台(但程序是Stopped状态) |
jobs | 查看任务(状态、ID等) |
fg n | 将jobID为n的任务切到前台运行 |
bg n | 将jobID为n的任务切到后台运行 |
命令 | 解释 |
---|
nohup command & | 后台执行 command,标准输出到 nohup.out |
nohup command > log_file & | 后台执行 command,标准输出到 log_file |
nohup command > log_file 2>&1 & | 后台执行 command,标准输出和错误输出到 log_file |
nohup command > log_file 2>err_log & | 后台执行 command,标准输出到 log_file,错误输出到 err_log |
ps/kill | 查看进程/结束进程 |
命令 | 解释 |
---|
screen -S my_session | 创建一个名为 my_session 的会话 |
screen -ls | 列出当前所有的 session |
screen -r my_session | 重新连接 my_session 这个会话 |
screen -d my_session | 脱离 my_session 这个会话 |
Ctrl+a+d | 在 screen 中,脱离当前会话 |
exit | 在 screen 中,退出并删除当前 screen |
-X -S my_session quit | 删除 my_session 这个会话 |
screen -wipe | 删除所有已经失效的会话 |
高效使用技巧
- 历史命令搜索:
Ctrl+R
快速搜索历史命令 - Tab补全:使用Tab键自动补全命令和文件名
- 别名设置:
alias ll='ls -la'
设置常用命令别名 - 命令替换:
!!
重复上一条命令,!$
使用上次命令的最后一个参数 - 后台任务:
Ctrl+Z
暂停,bg
后台继续,fg
前台恢复
安全注意事项
- 谨慎使用
rm -rf
:删除前反复确认路径 - 文件备份:重要操作前先备份文件
- 权限原则:不要滥用
sudo
和 chmod 777
- 日志检查:定期检查系统日志,及时发现问题
- 更新系统:保持系统和软件包更新
# 设置有用的别名
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
alias ..='cd ..'
alias ...='cd ../..'
alias grep='grep --color=auto'
alias mkdir='mkdir -pv'
alias df='df -h'
alias du='du -h'
# 设置命令行颜色
export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
# 启用命令历史搜索
export HISTSIZE=10000
export HISTFILESIZE=10000
# 查找占用空间最大的文件
du -ah /var | sort -rh | head -20
# 批量重命名文件
for file in *.txt; do mv "$file" "${file%.txt}.bak"; done
# 查找并删除空文件
find /path/to/search -empty -type f -delete
# 实时监控系统资源
watch -n 1 'ps aux | head -20'
# 网络连接统计
netstat -ant | awk '{print $6}' | sort | uniq -c | sort -rn
# 查找大文件
find / -size +100M -ls 2>/dev/null
# 批量修改文件权限
find /path -type f -exec chmod 644 {} \;
find /path -type d -exec chmod 755 {} \;
学习路径建议
- 基础命令:先掌握文件管理、目录操作等基本命令
- 进阶功能:学习权限管理、进程控制、网络配置
- 脚本编程:结合Shell脚本,实现自动化任务
- 实战练习:在实际环境中多练习,逐步掌握高级功能
此指南涵盖了 Linux 系统管理和日常操作中的绝大部分常用命令,适合作为参考手册使用。建议结合实际需求,逐步练习和掌握这些命令。