Linux 内核常用 Shell 命令详解

【投稿赢 iPhone 17】「我的第一个开源项目」故事征集:用代码换C位出道! 10w+人浏览 1.6k人参与

Linux 内核常用 Shell 命令详解

目录


1. 文件系统操作

1.1 ls - 列出目录内容

# 列出当前目录的所有文件和目录(包括隐藏文件)
ls -la

# 按修改时间排序,最新的在前面
ls -lt

# 递归列出子目录内容
ls -R /home

# 显示文件类型标识符(/表示目录,*表示可执行文件等)
ls -F

1.2 cd - 切换目录

# 切换到用户主目录
cd

# 切换到指定目录
cd /var/log

# 返回上一级目录
cd ..

# 返回上次所在的目录
cd -

1.3 pwd - 显示当前工作目录

# 显示当前完整路径
pwd

# 显示物理路径(不包含符号链接)
pwd -P

1.4 mkdir - 创建目录

# 创建单个目录
mkdir new_folder

# 递归创建多级目录
mkdir -p parent/child/grandchild

# 创建目录并设置权限(755 = rwxr-xr-x)
mkdir -m 755 secure_dir

1.5 touch - 创建空文件或更新文件时间戳

# 创建新文件
touch newfile.txt

# 同时创建多个文件
touch file1.txt file2.txt file3.txt

# 更新文件的访问和修改时间到指定时间
touch -t 202312011200 logfile.log

1.6 cp - 复制文件或目录

# 复制单个文件
cp source.txt destination.txt

# 递归复制整个目录
cp -r /source/directory /destination/directory

# 保留文件属性(权限、时间戳等)进行复制
cp -p important_file.txt backup_file.txt

# 交互式复制(覆盖前询问)
cp -i file.txt existing_file.txt

1.7 mv - 移动或重命名文件

# 重命名文件
mv old_name.txt new_name.txt

# 移动文件到其他目录
mv document.pdf /home/user/documents/

# 交互式移动(覆盖前询问)
mv -i file.txt /target/directory/

1.8 rm - 删除文件或目录

# 删除单个文件
rm unwanted_file.txt

# 强制删除文件(不提示确认)
rm -f force_delete.txt

# 递归删除目录及其内容
rm -r old_directory

# 交互式删除(每个文件都询问确认)
rm -i *.tmp

1.9 find - 查找文件

# 在当前目录及子目录中查找所有 .txt 文件
find . -name "*.txt"

# 查找最近7天内修改过的文件
find /home -mtime -7

# 查找大于100MB的文件
find / -size +100M

# 查找并删除所有临时文件
find /tmp -name "*.tmp" -delete

1.10 chmod - 修改文件权限

# 给文件所有者添加执行权限
chmod u+x script.sh

# 设置文件权限为755(rwxr-xr-x)
chmod 755 program

# 递归修改目录及其内容的权限
chmod -R 644 /var/www/html/

# 给组用户和其他用户添加读权限
chmod go+r document.pdf

1.11 chown - 修改文件所有者

# 将文件所有者改为 user1
chown user1 file.txt

# 同时修改所有者和组
chown user1:group1 file.txt

# 递归修改目录及其内容的所有者
chown -R user1:group1 /home/user1/

2. 进程管理

2.1 ps - 显示进程状态

# 显示当前终端的所有进程
ps

# 显示所有进程的详细信息
ps aux

# 显示进程树结构
ps axjf

# 显示特定用户的进程
ps -u username

2.2 top - 实时显示系统进程

# 启动top并按CPU使用率排序
top

# 启动top并按内存使用率排序
top -o %MEM

# 显示特定用户的进程
top -u username

2.3 htop - 增强版进程查看器

# 启动htop(需要先安装)
htop

# 显示所有进程树
htop --tree

2.4 kill - 终止进程

# 正常终止进程(发送SIGTERM信号)
kill 1234

# 强制终止进程(发送SIGKILL信号)
kill -9 1234

# 终止进程组
kill -- -1234

2.5 pkill - 根据进程名终止进程

# 终止所有名为firefox的进程
pkill firefox

# 终止特定用户的进程
pkill -u username

# 发送SIGUSR1信号给进程
pkill -USR1 process_name

2.6 pgrep - 根据条件查找进程ID

# 查找名为nginx的进程ID
pgrep nginx

# 查找特定用户的进程ID
pgrep -u username

# 显示进程的完整命令行
pgrep -lf nginx

2.7 nice - 设置进程优先级

# 以较低优先级运行命令(优先级值10)
nice -n 10 ./cpu_intensive_program

# 以较高优先级运行命令(优先级值-10,需要root权限)
sudo nice -n -10 ./important_program

2.8 renice - 修改运行中进程的优先级

# 修改进程ID为1234的优先级为5
renice 5 -p 1234

# 修改特定用户所有进程的优先级
renice 10 -u username

2.9 nohup - 忽略挂起信号运行命令

# 在后台运行程序,即使终端关闭也不会终止
nohup ./long_running_script.sh &

# 将输出重定向到指定文件
nohup ./server.sh > server.log 2>&1 &

3. 网络操作

3.1 ping - 测试网络连通性

# 向指定主机发送4个ICMP包
ping -c 4 www.google.com

# 设置包间隔时间为2秒
ping -i 2 192.168.1.1

# 限制ping包大小为100字节
ping -s 100 www.example.com

3.2 ifconfig - 配置网络接口(已逐渐被ip命令替代)

# 显示所有网络接口信息
ifconfig

# 显示特定接口信息
ifconfig eth0

# 启用网络接口
sudo ifconfig eth0 up

# 禁用网络接口
sudo ifconfig eth0 down

3.3 ip - 现代网络配置工具

# 显示所有网络接口
ip addr show

# 显示路由表
ip route show

# 启用网络接口
sudo ip link set eth0 up

# 为接口分配IP地址
sudo ip addr add 192.168.1.100/24 dev eth0

# 添加默认网关
sudo ip route add default via 192.168.1.1

3.4 netstat - 网络统计信息

# 显示所有监听的端口
netstat -tuln

# 显示网络连接状态
netstat -an

# 显示路由表
netstat -r

# 显示网络接口统计信息
netstat -i

3.5 ss - socket统计信息(netstat的现代替代品)

# 显示所有监听的TCP端口
ss -tuln

# 显示建立的连接
ss -tn

# 显示进程和端口对应关系
ss -tunlp

3.6 curl - 传输数据工具

# 下载网页内容
curl https://www.example.com

# 下载文件并保存为指定名称
curl -o filename.html https://www.example.com

# 发送POST请求
curl -X POST -d "param1=value1&param2=value2" https://api.example.com

# 跟随重定向
curl -L https://short.url

3.7 wget - 非交互式网络下载器

# 下载单个文件
wget https://example.com/file.zip

# 递归下载整个网站
wget -r https://example.com

# 继续未完成的下载
wget -c https://example.com/largefile.iso

# 从文件中读取URL列表进行下载
wget -i urls.txt

3.8 traceroute - 跟踪数据包路由路径

# 跟踪到目标主机的路由路径
traceroute www.google.com

# 使用ICMP协议进行跟踪
traceroute -I www.example.com

# 限制最大跳数为10
traceroute -m 10 www.example.com

3.9 nslookup - DNS查询工具

# 查询域名的A记录
nslookup www.example.com

# 查询MX记录(邮件服务器)
nslookup -type=mx example.com

# 使用指定DNS服务器查询
nslookup www.example.com 8.8.8.8

3.10 dig - DNS查询工具(更详细的信息)

# 查询域名的A记录
dig www.example.com

# 查询所有DNS记录类型
dig www.example.com ANY

# 使用简短输出格式
dig +short www.example.com

# 查询特定DNS服务器
dig @8.8.8.8 www.example.com

4. 系统信息与管理

4.1 uname - 显示系统信息

# 显示内核名称
uname -s

# 显示内核版本
uname -r

# 显示所有系统信息
uname -a

# 显示机器硬件架构
uname -m

4.2 hostname - 显示或设置主机名

# 显示当前主机名
hostname

# 临时设置主机名
sudo hostname new-hostname

# 显示FQDN(完全限定域名)
hostname -f

4.3 df - 显示磁盘空间使用情况

# 以人类可读格式显示磁盘使用情况
df -h

# 显示inode使用情况
df -i

# 显示特定文件系统的使用情况
df /home

4.4 du - 显示目录空间使用情况

# 显示当前目录各子目录的大小
du -h

# 显示目录总大小
du -sh /var/log

# 显示深度为1的目录大小
du -h --max-depth=1 /home

# 排除特定文件类型
du -h --exclude="*.log" /var

4.5 free - 显示内存使用情况

# 以人类可读格式显示内存信息
free -h

# 显示内存信息并每2秒刷新一次
free -h -s 2

# 显示详细内存统计信息
free -w

4.6 uptime - 显示系统运行时间和负载

# 显示系统运行时间、用户数和负载平均值
uptime

# 显示自上次启动以来的秒数
uptime -s

4.7 who - 显示当前登录用户

# 显示所有登录用户信息
who

# 显示上次系统启动时间
who -b

# 显示当前终端用户
who am i

4.8 w - 显示登录用户及其活动

# 显示详细用户活动信息
w

# 不显示标题行
w -h

# 显示特定用户的活动
w username

4.9 dmesg - 显示内核环缓冲区消息

# 显示所有内核消息
dmesg

# 显示最近10条内核消息
dmesg | tail -10

# 清除内核环缓冲区(需要root权限)
sudo dmesg -C

# 只显示错误和警告消息
dmesg -l err,warn

4.10 lsb_release - 显示Linux发行版信息

# 显示完整的发行版信息
lsb_release -a

# 只显示发行版描述
lsb_release -d

# 只显示发行版代号
lsb_release -c

5. 用户与权限管理

5.1 whoami - 显示当前用户名

# 显示当前登录的用户名
whoami

5.2 id - 显示用户和组信息

# 显示当前用户的UID、GID和所属组
id

# 显示特定用户的信息
id username

# 只显示用户ID
id -u

# 只显示组ID
id -g

5.3 useradd - 创建新用户

# 创建新用户
sudo useradd newuser

# 创建用户并指定主目录
sudo useradd -d /home/newuser newuser

# 创建用户并指定shell
sudo useradd -s /bin/bash newuser

# 创建用户并同时创建同名组
sudo useradd -m -U newuser

5.4 userdel - 删除用户

# 删除用户但保留主目录
sudo userdel username

# 删除用户并删除主目录
sudo userdel -r username

5.5 passwd - 修改用户密码

# 修改当前用户的密码
passwd

# 修改指定用户的密码(需要root权限)
sudo passwd username

# 锁定用户账户
sudo passwd -l username

# 解锁用户账户
sudo passwd -u username

5.6 groupadd - 创建新组

# 创建新组
sudo groupadd newgroup

# 创建组并指定GID
sudo groupadd -g 1001 newgroup

5.7 groupdel - 删除组

# 删除组(组必须为空)
sudo groupdel groupname

5.8 usermod - 修改用户属性

# 将用户添加到指定组
sudo usermod -aG groupname username

# 修改用户的主目录
sudo usermod -d /new/home/dir username

# 修改用户的登录shell
sudo usermod -s /bin/zsh username

# 锁定用户账户
sudo usermod -L username

# 解锁用户账户
sudo usermod -U username

5.9 su - 切换用户身份

# 切换到root用户
su

# 切换到指定用户
su username

# 切换用户并加载完整的环境变量
su - username

5.10 sudo - 以超级用户权限执行命令

# 以root权限执行单个命令
sudo apt update

# 以其他用户身份执行命令
sudo -u username command

# 编辑文件时自动使用合适的编辑器
sudo -e /etc/hosts

# 保持环境变量
sudo -E command

6. 磁盘与存储管理

6.1 fdisk - 磁盘分区工具

# 列出所有磁盘和分区
sudo fdisk -l

# 对指定磁盘进行分区操作
sudo fdisk /dev/sdb

# 显示磁盘的分区表类型
sudo fdisk -l /dev/sda

6.2 mkfs - 创建文件系统

# 在分区上创建ext4文件系统
sudo mkfs.ext4 /dev/sdb1

# 创建带有标签的文件系统
sudo mkfs.ext4 -L "MyData" /dev/sdb1

# 创建xfs文件系统
sudo mkfs.xfs /dev/sdb1

6.3 mount - 挂载文件系统

# 挂载分区到指定目录
sudo mount /dev/sdb1 /mnt/data

# 挂载ISO镜像文件
sudo mount -o loop image.iso /mnt/iso

# 以只读方式挂载
sudo mount -o ro /dev/sdb1 /mnt/data

# 挂载所有/etc/fstab中定义的文件系统
sudo mount -a

6.4 umount - 卸载文件系统

# 卸载挂载点
sudo umount /mnt/data

# 强制卸载(即使设备正忙)
sudo umount -f /mnt/data

# 懒卸载(立即卸载,稍后清理)
sudo umount -l /mnt/data

6.5 blkid - 显示块设备属性

# 显示所有块设备的UUID和文件系统类型
sudo blkid

# 显示特定设备的信息
sudo blkid /dev/sda1

6.6 lsblk - 列出块设备

# 以树状结构显示所有块设备
lsblk

# 显示设备的文件系统类型
lsblk -f

# 显示设备的UUID
lsblk -o NAME,UUID,FSTYPE,MOUNTPOINT

6.7 df - 磁盘空间使用情况(已在系统信息部分介绍)

6.8 du - 目录空间使用情况(已在系统信息部分介绍)

6.9 badblocks - 检查磁盘坏块

# 只读检查磁盘坏块
sudo badblocks -v /dev/sdb

# 读写测试(会破坏数据,谨慎使用)
sudo badblocks -w -v /dev/sdb

6.10 fsck - 文件系统检查和修复

# 检查并修复文件系统(设备必须未挂载)
sudo fsck /dev/sdb1

# 自动修复所有错误
sudo fsck -y /dev/sdb1

# 只检查不修复
sudo fsck -n /dev/sdb1

7. 文本处理与搜索

7.1 cat - 连接并显示文件内容

# 显示文件内容
cat file.txt

# 合并多个文件
cat file1.txt file2.txt > combined.txt

# 显示行号
cat -n script.sh

# 显示非打印字符
cat -A hidden_chars.txt

7.2 less - 分页查看文件

# 分页查看大文件
less large_file.log

# 在查看时搜索关键词
less +/search_term file.txt

# 显示行号
less -N file.txt

7.3 head - 显示文件开头部分

# 显示文件前10行
head file.txt

# 显示文件前20行
head -n 20 file.txt

# 显示多个文件的开头
head file1.txt file2.txt

7.4 tail - 显示文件末尾部分

# 显示文件最后10行
tail file.log

# 显示文件最后20行
tail -n 20 file.log

# 实时监控文件变化(常用于日志监控)
tail -f /var/log/syslog

# 从第100行开始显示到文件末尾
tail -n +100 file.txt

7.5 grep - 文本搜索

# 在文件中搜索包含"error"的行
grep "error" logfile.txt

# 忽略大小写搜索
grep -i "ERROR" logfile.txt

# 显示匹配行的行号
grep -n "warning" config.conf

# 递归搜索目录中的所有文件
grep -r "function_name" /path/to/code/

# 显示不匹配的行
grep -v "success" logfile.txt

# 统计匹配行的数量
grep -c "error" logfile.txt

7.6 sed - 流编辑器

# 替换文件中的文本(不修改原文件)
sed 's/old/new/g' file.txt

# 直接修改原文件
sed -i 's/old/new/g' file.txt

# 删除包含特定模式的行
sed '/pattern/d' file.txt

# 在匹配行后添加新行
sed '/pattern/a\new line content' file.txt

# 打印特定行范围
sed -n '10,20p' file.txt

7.7 awk - 文本处理语言

# 打印文件的第一列
awk '{print $1}' data.txt

# 打印满足条件的行
awk '$3 > 100 {print $0}' sales.csv

# 计算数值列的总和
awk '{sum += $1} END {print sum}' numbers.txt

# 使用自定义分隔符
awk -F',' '{print $2}' data.csv

7.8 sort - 排序文本

# 按字母顺序排序
sort names.txt

# 按数值大小排序
sort -n numbers.txt

# 逆序排序
sort -r file.txt

# 去除重复行后排序
sort -u duplicates.txt

# 按指定列排序(以冒号分隔)
sort -t: -k3 /etc/passwd

7.9 uniq - 报告或忽略重复行

# 显示唯一行(相邻重复行只显示一次)
uniq file.txt

# 显示重复的行
uniq -d file.txt

# 显示不重复的行
uniq -u file.txt

# 统计每行出现次数
uniq -c file.txt

7.10 wc - 统计文件内容

# 统计文件的行数、单词数和字符数
wc document.txt

# 只统计行数
wc -l file.txt

# 只统计单词数
wc -w file.txt

# 只统计字符数
wc -c file.txt

8. 压缩与归档

8.1 tar - 归档工具

# 创建tar归档文件
tar -cf archive.tar file1 file2 directory/

# 创建gzip压缩的tar文件
tar -czf archive.tar.gz file1 file2

# 创建bzip2压缩的tar文件
tar -cjf archive.tar.bz2 file1 file2

# 解压tar文件
tar -xf archive.tar

# 解压gzip压缩的tar文件
tar -xzf archive.tar.gz

# 列出tar文件内容
tar -tf archive.tar

# 解压到指定目录
tar -xzf archive.tar.gz -C /target/directory/

8.2 gzip - gzip压缩工具

# 压缩文件(原文件会被替换为.gz文件)
gzip file.txt

# 解压gzip文件
gunzip file.txt.gz

# 压缩但保留原文件
gzip -c file.txt > file.txt.gz

# 显示压缩文件信息
gzip -l file.txt.gz

8.3 bzip2 - bzip2压缩工具

# 压缩文件
bzip2 file.txt

# 解压bzip2文件
bunzip2 file.txt.bz2

# 压缩但保留原文件
bzip2 -c file.txt > file.txt.bz2

8.4 zip - zip压缩工具

# 创建zip压缩文件
zip archive.zip file1 file2 directory/

# 递归压缩目录
zip -r archive.zip directory/

# 解压zip文件
unzip archive.zip

# 列出zip文件内容
unzip -l archive.zip

# 解压到指定目录
unzip archive.zip -d /target/directory/

8.5 unzip - zip解压工具(已在上面介绍)


9. 时间与日志管理

9.1 date - 显示和设置系统日期时间

# 显示当前日期和时间
date

# 以特定格式显示日期
date "+%Y-%m-%d %H:%M:%S"

# 设置系统日期时间(需要root权限)
sudo date -s "2023-12-01 14:30:00"

# 显示UTC时间
date -u

9.2 cal - 显示日历

# 显示当前月份的日历
cal

# 显示指定年份的日历
cal 2023

# 显示指定月份和年份的日历
cal 12 2023

9.3 timedatectl - 系统时间和日期控制

# 显示当前时间和时区信息
timedatectl

# 列出所有可用时区
timedatectl list-timezones

# 设置时区
sudo timedatectl set-timezone Asia/Shanghai

# 启用网络时间同步
sudo timedatectl set-ntp true

9.4 journalctl - systemd日志查看器

# 查看所有系统日志
sudo journalctl

# 查看特定服务的日志
sudo journalctl -u nginx

# 查看最近的日志(最后100行)
sudo journalctl -n 100

# 实时监控日志
sudo journalctl -f

# 查看今天的日志
sudo journalctl --since today

# 查看特定时间段的日志
sudo journalctl --since "2023-12-01" --until "2023-12-02"

9.5 logrotate - 日志轮转工具

# 手动执行日志轮转(通常由cron自动执行)
sudo logrotate /etc/logrotate.conf

# 测试logrotate配置文件
sudo logrotate -d /etc/logrotate.conf

# 强制执行日志轮转
sudo logrotate -f /etc/logrotate.conf

9.6 last - 显示最近登录信息

# 显示所有用户的最近登录记录
last

# 显示特定用户的登录记录
last username

# 显示最近10次登录
last -10

# 显示系统重启记录
last reboot

9.7 lastlog - 显示所有用户的最后登录信息

# 显示所有用户的最后登录信息
lastlog

# 显示特定用户的最后登录信息
lastlog -u username

# 显示最近登录的用户
lastlog -t 7  # 最近7天

9.8 history - 显示命令历史

# 显示命令历史
history

# 显示最近10条命令
history 10

# 清除命令历史
history -c

# 将历史写入文件
history -w ~/.bash_history

总结

以上命令涵盖了 Linux 系统管理的各个方面,从基本的文件操作到复杂的系统监控。掌握这些命令将帮助您有效地管理和维护 Linux 系统。建议在实际环境中多加练习,并结合 man 命令查看每个命令的详细手册:

# 查看命令手册
man ls
man grep
man systemctl

记住,Linux 命令的强大之处在于它们可以组合使用,通过管道(|)和重定向(>>>)来完成复杂的任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值