常用Linux命令
1. 常用系统管理命令
进程与系统监控
# 查询进程(以查询 nginx 为例)ps -ef | grep nginx
# 杀死指定进程kill -9 <PID>
# 查看系统整体负载、CPU、内存使用情况(加强版 top)# 若未安装:sudo apt install htop 或 yum install htophtop
# 查看内存占用情况 (以 MB 为单位)free -m
# 查看磁盘剩余空间df -h
# 查看当前目录下各文件/目录占用空间大小du -sh *
# 实时查看日志文件末尾(调试最常用)tail -f /var/log/syslog文本处理
# grep: 过滤包含 ERROR 的行,并显示匹配行前后的各 2 行grep -C 2 "ERROR" app.log
# awk: 提取特定列(例如提取 ps 结果中的 PID 列)ps -ef | grep java | awk '{print $2}'
# sed: 直接在文件中替换文本(将 config.conf 里的 old 换成 new)sed -i 's/old/new/g' config.conf文件权限管理
# 修改权限:755 代表 拥有者(rwx) 组(rx) 其他人(rx)chmod 755 filename
# 递归给文件夹下所有文件加执行权限chmod -R +x /path/to/script/
# 修改文件所属用户和组chown user:group filename用户管理
# 创建新用户sudo adduser newuser
# 将用户添加到 sudo 组 (Ubuntu)sudo usermod -aG sudo newuser
# 删除用户及其家目录sudo userdel -r olduser网络诊断/防火墙
网络诊断
# 查看端口占用情况 (找出哪个程序占用了 8080)netstat -tunlp | grep 8080# 或者使用更现代的 ssss -tunlp | grep 8080
# 测试远程端口是否开放telnet 192.168.1.1 80# 或者使用 nc (Netcat)nc -zv 192.168.1.1 80
# 追踪网络路由traceroute google.com防火墙 CentOS - firewalld
# 基础操作systemctl start|stop|status|enable|disable firewalld
# 查看所有已开放端口firewall-cmd --zone=public --list-ports
# 开放指定端口(--permanent 永久生效,需 reload)firewall-cmd --zone=public --add-port=80/tcp --permanentfirewall-cmd --reload
# 移除端口firewall-cmd --zone=public --remove-port=80/tcp --permanent防火墙 Ubuntu - ufw
# 安装与启动sudo apt install ufwsudo ufw enablesudo ufw default deny # 默认拒绝所有外部访问
# 开放/拒绝端口或服务sudo ufw allow 80/tcpsudo ufw deny 22
# 重启防火墙sudo ufw reload压缩解压
*.tar / *.tar.gz
# 打包并压缩 tar.gztar -zcvf archive.tar.gz /path/to/folder
# 解压 tar.gz 到当前目录tar -zxvf archive.tar.gz
# 解压到指定目录tar -zxvf archive.tar.gz -C /path/to/extract*.zip
# 安装 zip CentOS / RHEL / Fedorasudo yum install zip unzip
# 安装 zip Debian / Ubuntusudo apt install zip unzip
# 递归压缩文件夹zip -r archive.zip /path/to/folder
# 解压到指定目录unzip archive.zip -d /path/to/extract终端多路复用器
Tmux
# 安装sudo apt install tmux # Ubuntusudo yum install tmux # CentOS
# 常用操作tmux new -s <名称> # 创建新会话tmux ls # 列出所有会话tmux a -t <名称> # 接入(Attach)会话
# 会话内快捷键 (先按 Ctrl+b)Ctrl+b, d # 暂时跳出 (Detach)Ctrl+b, " # 横向分屏Ctrl+b, % # 纵向分屏Ctrl+b, 方向键 # 切换分屏窗格Screen
# 常用语法screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s <shell>][-S <作业名称>]- -A 将所有的视窗都调整为目前终端机的大小。- -d<作业名称> 将指定的screen作业离线。- -h<行数> 指定视窗的缓冲区行数。- -m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。- -r<作业名称> 恢复离线的screen作业。- -R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。- -s<shell> 指定建立新视窗时,所要执行的shell。- -S<作业名称> 指定screen作业的名称。- -v 显示版本信息。- -x 恢复之前离线的screen作业。- -ls(或--list) 显示目前所有的screen作业。- -wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。
# 创建一个后台实例screen //创建 screen 终端
# 创建 screen 终端 并执行任务screen vi ~/main.c //创建 screen 终端 ,并执行 vi命令
# 重新进入离开的实例screen -r <screen_id>
# 跳出当前会话(不关闭)screen -d <screen_id>常见问题
Docker 容器无法访问
问题分析:Docker 默认会自动添加 iptables 规则,可能与系统防火墙冲突。
# 1. 修改配置sudo vim /lib/systemd/system/docker.service
# 2. 在 ExecStart 中添加 --iptables=false# ExecStart=/usr/bin/dockerd --iptables=false ...
# 3. 重载并重启sudo systemctl daemon-reloadsudo systemctl restart dockerUbuntu Docker 环境快速安装
# 1. 卸载旧版并更新sudo apt-get remove docker docker-engine docker.io containerd runcsudo apt update && sudo apt upgrade -y
# 2. 安装依赖与密钥sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-releasecurl -fsSL [http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg](http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg) | sudo apt-key add -
# 3. 添加阿里仓库并安装sudo add-apt-repository "deb [arch=amd64] [http://mirrors.aliyun.com/docker-ce/linux/ubuntu](http://mirrors.aliyun.com/docker-ce/linux/ubuntu) $(lsb_release -cs) stable"sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 4. 用户组与镜像加速sudo usermod -aG docker $USERsudo vim /etc/docker/daemon.json# 内容: { "registry-mirrors": ["[https://docker.m.daocloud.io](https://docker.m.daocloud.io)"] }
# 5. 重启服务sudo systemctl restart dockerCentOS 7 停止维护后的 Yum 源失效
# 备份并替换源mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backupcurl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清理缓存并重新生成yum clean allyum makecache重置网络
Centos7
- 修改网卡配置文件
找到对应的网卡文件(通常以 ifcfg- 开头),确保 ONBOOT 设置为 yes。
# 编辑网卡配置文件,例如 ens33vi /etc/sysconfig/network-scripts/ifcfg-ens33- 配置静态 IP(弃用 DHCP)
TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="static" # 改为 staticIPADDR="192.168.128.129" # 自定义 IP 地址NETMASK="255.255.255.0" # 子网掩码GATEWAY="192.168.128.1" # 默认网关DNS1="8.8.8.8" # 主 DNSDNS2="114.114.114.114" # 备 DNSDEFROUTE="yes"NAME="ens33" # 确保与文件名中的后缀一致DEVICE="ens33" # 对应物理网卡名ONBOOT="yes" # 必须为 yes,确保开机自启- 重启网络服务
# 彻底重置:禁用 NetworkManager 并重启 networksystemctl stop NetworkManager # 停止网络管理器systemctl disable NetworkManager # 禁止开机自启systemctl restart network # 重启传统网络服务ubuntu
- 配置静态 IP 地址
# 1. 查看网卡名称 (例如 eth0 或 enp0s3)ip addr
# 2. 编辑配置文件sudo vi /etc/netplan/01-netcfg.yamlYAML 配置示例:
network: version: 2 renderer: networkd ethernets: enp0s3: # 网卡名称 dhcp4: no # 关闭 DHCP addresses: - 192.168.1.100/24 # 设置静态 IP 及掩码 routes: - to: default via: 192.168.1.1 # 设置网关 nameservers: addresses: [8.8.8.8, 114.114.114.114] # DNS- 应用配置与重置
# 测试配置是否有语法错误(会有 120 秒确认时间,防止把自己锁在外面)sudo netplan try
# 直接应用配置sudo netplan apply常用网络重置技巧
# 针对使用 DHCP 的环境sudo dhclient -r # 释放当前 IPsudo dhclient # 重新获取 IP
# 强制重启网卡 (以 enp0s3 为例)sudo ip link set enp0s3 downsudo ip link set enp0s3 up