#Linux常用命令


📌 1. 文件/目录操作

命令缩写作用示例选项解释
lslist列出目录内容ls -l-l 显示详细信息
ls -a-a 显示隐藏文件
ls -lh-h 以可读格式显示文件大小
cdchange directory切换目录cd /home切换到 /home 目录
cd ..返回上一级目录
cd -返回上次所在目录
pwdprint working directory显示当前路径pwd显示当前目录路径
mkdirmake directory创建目录mkdir new_dir创建 new_dir 目录
mkdir -p dir/subdir-p 递归创建目录
rmdirremove directory删除空目录rmdir mydir删除 mydir(必须为空)
rmremove删除文件/目录rm file.txt删除 file.txt
rm -r folder-r 递归删除目录
rm -rf folder-f 强制删除
cpcopy复制文件/目录cp file1 file2复制 file1file2
cp -r dir1 dir2-r 递归复制目录
cp -i file1 file2-i 复制前询问确认
mvmove移动/重命名文件mv old.txt new.txt重命名 old.txtnew.txt
mv file /home/user/移动 file/home/user/
touch-创建空文件touch newfile.txt创建 newfile.txt
find-查找文件/目录find / -name "file.txt"/ 目录中查找 file.txt
find . -type f -size +1M查找当前目录中大于 1MB 的文件
locate-快速查找文件locate file.txt搜索 file.txt(需先运行 updatedb 更新数据库)

📌 2. 文件内容操作

命令缩写作用示例选项解释
catconcatenate查看/合并文件内容cat file.txt显示 file.txt 内容
cat file1 file2 > merged.txt合并 file1file2 并保存到 merged.txt
tacreverse cat反向查看文件内容tac file.txt反向显示 file.txt
more-分页查看文件more file.txt逐页显示 file.txt 内容
less-分页查看(比 more 更强大)less file.txt逐页查看,支持上下滚动
head-查看文件头部head -n 5 file.txt-n 5 显示前 5 行
tail-查看文件尾部tail -f log.txt-f 实时跟踪文件内容(日志监控)
grepglobal regular expression print文本搜索grep "error" log.txt搜索 log.txt 中包含 “error” 的行
grep -i "error" log.txt-i 忽略大小写
grep -r "keyword" /var/log/-r 递归搜索
sedstream editor文本流编辑sed 's/old/new/g' file.txt替换 file.txt 中的 oldnew
awk-文本处理awk '{print $1}' file.txt显示 file.txt 的第一列
awk -F ":" '{print $1}' /etc/passwd-F ":" 指定 : 为分隔符

📌 3. 用户管理

命令缩写作用示例选项解释
who-查看在线用户who显示当前登录用户
whoami-显示当前用户名whoami显示当前用户的名称
id-显示用户 IDid username显示 username 的 UID、GID
susubstitute user切换用户su root切换到 root 用户
su - user1切换到 user1 用户并加载其环境变量
sudosuperuser do以超级用户执行命令sudo apt update以 root 权限执行 apt update
passwdpassword修改用户密码passwd username修改 username 的密码
adduseradd user添加用户adduser newuser创建 newuser
useradduser add添加用户(底层命令)useradd -m newuser-m 创建 home 目录
deluserdelete user删除用户deluser newuser删除 newuser
usermoduser modify修改用户信息usermod -aG sudo user1-aG 添加 user1sudo
groupaddgroup add添加用户组groupadd mygroup创建 mygroup

📌 4. 权限管理

命令缩写作用示例选项解释
chmodchange mode修改文件权限chmod 755 file755 代表权限 rwxr-xr-x
chmod +x script.sh+x 赋予执行权限
chmod -R 777 /var/www/-R 递归修改目录权限
chownchange owner修改文件所有者chown user:group file.txt变更 file.txt 的拥有者
chown -R user:group /home/user-R 递归修改目录所有者
chgrpchange group修改文件所属组chgrp group file.txt变更 file.txt 的用户组
umaskuser mask设置默认权限umask 022022 代表 755 权限
lsattrlist attributes查看文件特殊属性lsattr file.txt显示 file.txt 的特殊属性
chattrchange attributes修改文件特殊属性chattr +i file.txt+ifile.txt 变为不可修改

📌 5. 进程管理

命令缩写作用示例选项解释
psprocess status查看进程ps auxa 所有用户,u 用户格式,x 后台进程
top-实时查看进程top实时显示系统进程
htop-交互式进程管理(需安装)htop颜色显示进程信息
kill-终止进程kill -9 1234-9 强制杀死进程 1234
pkill-按名称终止进程pkill firefox结束 firefox 进程
jobs-查看后台任务jobs -l-l 显示详细信息
bgbackground继续后台任务bg %1继续执行 jobs 列出的任务 1
fgforeground恢复前台任务fg %1恢复 jobs 任务 1 到前台
nohupno hang up让程序在后台运行nohup command && 让进程在后台运行
nice-以低优先级运行进程nice -n 10 command-n 10 设置进程优先级
renice-更改运行中的进程优先级renice -5 1234-5 提高进程 1234 的优先级

📌 6. 磁盘管理

命令缩写作用示例选项解释
dfdisk free查看磁盘使用情况df -h-h 以人类可读格式显示
dudisk usage查看目录占用空间du -sh /home-s 统计总大小,-h 友好格式
mount-挂载磁盘mount /dev/sdb1 /mnt挂载 /dev/sdb1/mnt
umount-卸载磁盘umount /mnt卸载 /mnt
fsckfile system check检查磁盘文件系统fsck -y /dev/sdb1-y 自动修复错误
mkfsmake filesystem格式化磁盘mkfs.ext4 /dev/sdb1/dev/sdb1 格式化为 ext4

📌 7. 网络管理

命令缩写作用示例选项解释
ifconfiginterface config查看/配置网络接口ifconfig eth0查看 eth0 详情(部分系统已被 ip 取代)
ip-现代网络管理命令ip a显示所有网络接口
ip r显示路由表
ping-测试网络连通性ping -c 4 google.com-c 4 发送 4 个数据包
traceroute-跟踪数据包路径traceroute google.com显示到 google.com 的路径
netstatnetwork statistics查看网络连接netstat -tulnp-tulnp 显示监听端口
sssocket statistics替代 netstat 查看连接ss -tulnp-tulnp 监听端口
curl-发送 HTTP 请求curl -I https://example.com-I 仅获取响应头
wgetweb get下载文件wget -O file.zip URL-O 指定保存文件名

📌 8. 系统管理

命令缩写作用示例选项解释
unameunix name显示系统信息uname -a-a 显示所有信息
uptime-查看系统运行时间uptime显示系统运行时长
free-查看内存使用情况free -m-m 以 MB 显示
history-查看历史命令`historygrep ssh`
shutdown-关机shutdown -h now-h 立即关机
reboot-重启系统reboot立即重启
systemctlsystem control管理系统服务systemctl restart nginx重启 nginx 服务
systemctl enable nginx设置 nginx 开机启动

在 Linux 使用过程中,常见问题及解决方法如下:


📌 1. 端口被占用

问题

尝试启动服务(如 Nginx、MySQL)时,提示 端口已被占用

解决方法

① 查找占用端口的进程

lsof -i :80    # 查看占用 80 端口的进程
netstat -tulnp | grep :80  # 另一种方式
ss -tulnp | grep :80       # 推荐,替代 netstat

② 杀死进程

kill -9 进程ID  # 强制终止进程

③ 释放端口
如果进程是 systemd 管理的:

sudo systemctl stop 进程名
sudo systemctl restart 进程名

📌 2. 磁盘空间占满

问题

使用 df -h 发现磁盘空间不足,导致系统无法正常运行。

解决方法

① 查找大文件

du -ah / | sort -rh | head -n 20  # 找出前 20 大的文件/目录

② 清理日志

journalctl --vacuum-size=100M  # 清理 systemd 日志

③ 删除缓存

rm -rf ~/.cache/*

📌 3. 进程占用过高

问题

服务器变慢,tophtop 显示某个进程占用大量 CPU 或内存。

解决方法

① 查找高占用进程

top -o %CPU   # 按 CPU 使用率排序
top -o %MEM   # 按内存使用率排序

② 限制进程资源

renice 10 进程ID  # 降低进程优先级
cpulimit -p 进程ID -l 50  # 限制 CPU 使用率(需安装 cpulimit)

③ 终止异常进程

kill -9 进程ID

📌 4. SSH 连接超时

问题

远程 SSH 连接经常掉线或超时。

解决方法

① 修改客户端配置
在本地 ~/.ssh/config 中添加:

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 5

② 修改服务器配置
在服务器 /etc/ssh/sshd_config 里修改:

ClientAliveInterval 60
ClientAliveCountMax 5

然后重启 SSH:

sudo systemctl restart sshd

📌 5. 文件被占用无法删除

问题

尝试删除文件时,提示 “Device or resource busy”

解决方法

① 查找占用文件的进程

lsof /path/to/file

② 关闭相关进程

kill -9 进程ID

③ 解除挂载(如果是目录)

umount /path/to/mount

📌 6. 误删文件恢复

问题

误删了重要文件,比如 /etc/nginx/nginx.conf

解决方法

① 通过 locate 搜索可能的备份

locate nginx.conf

② 通过 ls 搜索回收站(某些 Linux 发行版支持)

ls ~/.local/share/Trash/files/

③ 从 .bak.old 恢复

cp /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf

④ 使用 extundelete 恢复

sudo extundelete /dev/sda1 --restore-file /etc/nginx/nginx.conf

(适用于 ext4 文件系统)


📌 7. 防火墙导致端口无法访问

问题

应用已经启动,但外部无法访问端口。

解决方法

① 检查防火墙状态

sudo ufw status   # Ubuntu/Debian
sudo firewall-cmd --list-all  # CentOS/RHEL

② 允许端口

sudo ufw allow 8080/tcp  # 允许 8080 端口(Ubuntu)
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent && sudo firewall-cmd --reload  # CentOS

③ 关闭防火墙(测试时)

sudo systemctl stop firewalld   # 关闭 firewalld
sudo systemctl disable firewalld  # 禁止开机启动

📌 8. Permission Denied 权限问题

问题

运行某个命令或访问文件时,提示 “Permission Denied”

解决方法

① 提升权限

sudo 命令

② 修改权限

chmod +x script.sh  # 赋予执行权限

③ 修改所有者

chown 用户:组 文件

📌 9. 定时任务 (crontab) 不生效

问题

创建了 crontab 任务,但没有执行。

解决方法

① 检查 crontab 语法

crontab -l  # 查看当前用户的定时任务

示例(每 5 分钟执行一次 backup.sh):

*/5 * * * * /home/user/backup.sh

② 使用完整路径

/usr/bin/python3 /home/user/script.py

③ 检查日志

cat /var/log/syslog | grep CRON

📌 10. 网络 DNS 解析失败

问题

无法解析域名(ping google.com 失败,但 ping 8.8.8.8 成功)。

解决方法

① 修改 resolv.conf

echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

② 重新启动网络

sudo systemctl restart networking

当然还有!下面列举 更多 Linux 常见问题及解决方法,覆盖 系统管理、进程管理、用户管理、软件管理 等多个方面。


📌 11. Linux 进程僵死(Zombie Process)

问题

运行 ps aux | grep defunct 发现有僵尸进程(Z 状态)。

解决方法

① 查找僵尸进程

ps aux | grep defunct

② 找到父进程 ID(PPID)

ps -o ppid= -p 僵尸进程ID

③ 杀死父进程

kill -9 父进程ID

如果不能杀死父进程,可以用 systemctl restart 相关服务 重新启动服务。


📌 12. command not found 命令找不到

问题

执行命令时报错 command not found,可能是命令不存在或 PATH 变量缺失。

解决方法

① 确保软件已安装

which 命令名

如果返回空,说明命令不存在,需要安装:

sudo apt install 软件名   # Ubuntu
sudo yum install 软件名   # CentOS

② 检查 PATH 变量

echo $PATH
export PATH=$PATH:/usr/local/bin  # 临时修复

③ 永久修复(添加到 ~/.bashrc~/.profile

echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc
source ~/.bashrc

📌 13. Too many open files 文件句柄数过多

问题

某些服务(如 MySQL、Nginx)日志中报 Too many open files,进程打开的文件句柄超过系统限制。

解决方法

① 查看当前限制

ulimit -n  # 显示最大打开文件数

② 临时修改

ulimit -n 65535  # 设置更大的文件句柄数

③ 永久修改
编辑 /etc/security/limits.conf,添加:

* soft nofile 65535
* hard nofile 65535

然后重启系统生效。


📌 14. cannot execute binary file: Exec format error

问题

运行二进制程序时报 Exec format error,通常是 架构不兼容(例如在 x86_64 机器上运行 ARM 版本的程序)。

解决方法

① 检查架构

uname -m   # 查看当前 CPU 架构
file ./binary_file  # 查看文件架构

② 运行正确版本
如果 file 命令显示 ARM,说明当前系统不能直接运行该文件,需要使用 QEMUDocker 运行。


📌 15. /tmp 目录满了导致程序异常

问题

某些程序(如 MySQL、Docker)依赖 /tmp 目录,如果 /tmp 空间满了,会导致无法运行。

解决方法

① 查看 /tmp 使用情况

df -h /tmp

② 清理 /tmp

sudo rm -rf /tmp/*

③ 临时扩大 /tmp

mount -o remount,size=5G /tmp

④ 永久扩大 /tmp
修改 /etc/fstab

tmpfs /tmp tmpfs defaults,size=5G 0 0

然后运行:

sudo mount -a

📌 16. Device is busy 卸载磁盘失败

问题

尝试 umount /mnt 时提示 device is busy,说明有进程在使用该目录。

解决方法

① 查找占用进程

lsof /mnt

② 结束进程

kill -9 进程ID

③ 强制卸载

umount -l /mnt  # 立即卸载
umount -f /mnt  # 强制卸载

📌 17. tar: Exiting with failure status due to previous errors

问题

使用 tar 压缩或解压时报错,可能原因:

  • 目标文件不存在
  • 磁盘空间不足
  • 权限问题

解决方法

① 确保文件存在

ls -lh 文件名

② 确保磁盘空间足够

df -h

③ 加 --warning=no-file-changed 忽略错误

tar -czf backup.tar.gz --warning=no-file-changed /path/to/files

📌 18. dpkg: error: dpkg frontend is locked by another process

问题

在 Ubuntu/Debian 上运行 apt install 时,提示 dpkg frontend is locked

解决方法

① 关闭占用 dpkg 的进程

ps aux | grep apt
sudo kill -9 进程ID

② 删除锁文件

sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/dpkg/lock-frontend

③ 重新配置 dpkg

sudo dpkg --configure -a

📌 19. yum lock 锁住无法安装软件

问题

在 CentOS 上 yum install 时卡住,显示 Existing lock /var/run/yum.pid: another copy is running as pid 1234

解决方法

① 杀死 yum 进程

ps aux | grep yum
sudo kill -9 进程ID

② 删除 yum 锁文件

sudo rm -f /var/run/yum.pid

③ 清除 yum 缓存

sudo yum clean all

📌 20. screen 断开后恢复会话

问题

使用 screen 运行任务,SSH 断开后,如何恢复?

解决方法

① 启动新会话

screen -S mysession

② 断开后恢复会话

screen -r mysession

如果 screen -r 提示多个会话:

screen -ls  # 列出所有会话
screen -r 会话ID

当然,还有很多 Linux 常见问题,以下是 不重复的 更多问题及解决方法,涵盖 网络、存储、权限、系统管理、性能优化 等方面。


📌 21. Linux 服务器时间不对

问题

使用 date 命令发现服务器时间错误,可能导致日志时间错乱、证书过期等问题。

解决方法

① 查看当前时间

date

② 立即同步时间

sudo timedatectl set-ntp true

③ 手动设置时区

sudo timedatectl set-timezone Asia/Shanghai

④ 手动同步时间

sudo ntpdate ntp.aliyun.com  # 需要安装 ntpdate

📌 22. Permission denied (publickey) SSH 连接失败

问题

使用 SSH 连接服务器时报错,可能是密钥认证问题。

解决方法

① 确保公钥在服务器上

ls -lh ~/.ssh/authorized_keys

② 确保 .ssh 目录权限正确

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

③ 确保 SSH 允许密钥登录
编辑 /etc/ssh/sshd_config

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

然后重启 SSH:

sudo systemctl restart sshd

📌 23. Disk quota exceeded 磁盘配额超限

问题

尝试写入文件时报 Disk quota exceeded,用户磁盘配额用尽。

解决方法

① 查看用户磁盘配额

quota -u 用户名

② 释放空间

rm -rf ~/大文件

③ 调整用户磁盘配额(root 权限)

sudo edquota -u 用户名

📌 24. Broken pipe 远程 SSH 连接断开

问题

SSH 连接一段时间不操作就断开,报 Broken pipe

解决方法

① 客户端修改 ~/.ssh/config

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 5

② 服务器端修改 /etc/ssh/sshd_config

ClientAliveInterval 60
ClientAliveCountMax 5

然后重启 SSH:

sudo systemctl restart sshd

📌 25. mount: unknown filesystem type 挂载失败

问题

挂载磁盘时报错,可能是文件系统不支持。

解决方法

① 检查磁盘格式

sudo blkid /dev/sdb1

② 安装文件系统支持

sudo apt install exfat-utils  # 处理 exFAT
sudo apt install ntfs-3g  # 处理 NTFS

③ 重新挂载

sudo mount -t exfat /dev/sdb1 /mnt

📌 26. No space left on device 但磁盘未满

问题

磁盘未满 (df -h 显示有空间),但仍然报 No space left on device

可能原因

  • inode 用尽(小文件太多)
  • 文件系统损坏
  • 磁盘已读写保护

解决方法

① 查看 inode

df -i

如果 Inodes 用尽:

find / -xdev -type f | wc -l  # 查找小文件数量

② 删除无用小文件

find /var/log -type f -name "*.log" -delete

③ 检查文件系统

sudo fsck -y /dev/sda1

📌 27. Killed 进程被强制终止

问题

运行某个程序时,突然终止并显示 Killed,可能是内存不足 (OOM, Out of Memory)。

解决方法

① 查看 dmesg 日志

dmesg | tail -20

如果看到 Out of memory: Kill process,说明系统 OOM 了。
② 限制进程内存

ulimit -m 1048576  # 限制最大内存 1GB

③ 开启 Swap

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

📌 28. E: Unable to locate package 软件包找不到

问题

使用 apt install 安装软件时报错。

解决方法

① 更新源

sudo apt update

② 更换国内源
编辑 /etc/apt/sources.list,替换为:

deb http://mirrors.ustc.edu.cn/ubuntu focal main restricted universe multiverse

然后执行:

sudo apt update

📌 29. 502 Bad Gateway Nginx 代理后端服务异常

问题

Nginx 反向代理后端服务时,返回 502 Bad Gateway

解决方法

① 确保后端服务运行

sudo systemctl status backend_service

② 检查 Nginx 连接后端日志

sudo tail -f /var/log/nginx/error.log

③ 增加 proxy_connect_timeout
nginx.conf 里:

proxy_connect_timeout 10;
proxy_read_timeout 30;

然后重启 Nginx:

sudo systemctl restart nginx

📌 30. Connection reset by peer 网络连接被重置

问题

使用 sshscpwget 下载大文件时,连接被中断。

解决方法

① 修改 TCP 保持连接时间

sudo sysctl -w net.ipv4.tcp_keepalive_time=60

② 调整 iptables 连接跟踪限制

sudo iptables -A INPUT -p tcp --dport 22 -m state --state ESTABLISHED -j ACCEPT

③ 服务器端修改 sshd_config

TCPKeepAlive yes

然后重启 SSH:

sudo systemctl restart sshd

📌 31. ERROR 1045 (28000): Access denied for user MySQL 登录失败

问题

MySQL 登录时报 ERROR 1045 (28000),可能是密码错误或权限不足。

解决方法

① 以 root 身份重置密码

sudo systemctl stop mysql
sudo mysqld_safe --skip-grant-tables &
mysql -u root

然后在 MySQL 里执行:

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;

② 确保 bind-address 允许外部访问
编辑 /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address = 0.0.0.0

然后重启 MySQL:

sudo systemctl restart mysql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值