笔记

常用Linux命令

1. 常用系统管理命令

进程与系统监控

Terminal window
# 查询进程(以查询 nginx 为例)
ps -ef | grep nginx
# 杀死指定进程
kill -9 <PID>
# 查看系统整体负载、CPU、内存使用情况(加强版 top)
# 若未安装:sudo apt install htop 或 yum install htop
htop
# 查看内存占用情况 (以 MB 为单位)
free -m
# 查看磁盘剩余空间
df -h
# 查看当前目录下各文件/目录占用空间大小
du -sh *
# 实时查看日志文件末尾(调试最常用)
tail -f /var/log/syslog

文本处理

Terminal window
# 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

文件权限管理

Terminal window
# 修改权限:755 代表 拥有者(rwx) 组(rx) 其他人(rx)
chmod 755 filename
# 递归给文件夹下所有文件加执行权限
chmod -R +x /path/to/script/
# 修改文件所属用户和组
chown user:group filename

用户管理

Terminal window
# 创建新用户
sudo adduser newuser
# 将用户添加到 sudo 组 (Ubuntu)
sudo usermod -aG sudo newuser
# 删除用户及其家目录
sudo userdel -r olduser

网络诊断/防火墙

网络诊断

Terminal window
# 查看端口占用情况 (找出哪个程序占用了 8080)
netstat -tunlp | grep 8080
# 或者使用更现代的 ss
ss -tunlp | grep 8080
# 测试远程端口是否开放
telnet 192.168.1.1 80
# 或者使用 nc (Netcat)
nc -zv 192.168.1.1 80
# 追踪网络路由
traceroute google.com

防火墙 CentOS - firewalld

Terminal window
# 基础操作
systemctl start|stop|status|enable|disable firewalld
# 查看所有已开放端口
firewall-cmd --zone=public --list-ports
# 开放指定端口(--permanent 永久生效,需 reload)
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
# 移除端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent

防火墙 Ubuntu - ufw

Terminal window
# 安装与启动
sudo apt install ufw
sudo ufw enable
sudo ufw default deny # 默认拒绝所有外部访问
# 开放/拒绝端口或服务
sudo ufw allow 80/tcp
sudo ufw deny 22
# 重启防火墙
sudo ufw reload

压缩解压

*.tar / *.tar.gz

Terminal window
# 打包并压缩 tar.gz
tar -zcvf archive.tar.gz /path/to/folder
# 解压 tar.gz 到当前目录
tar -zxvf archive.tar.gz
# 解压到指定目录
tar -zxvf archive.tar.gz -C /path/to/extract

*.zip

Terminal window
# 安装 zip CentOS / RHEL / Fedora
sudo yum install zip unzip
# 安装 zip Debian / Ubuntu
sudo apt install zip unzip
# 递归压缩文件夹
zip -r archive.zip /path/to/folder
# 解压到指定目录
unzip archive.zip -d /path/to/extract

终端多路复用器

Tmux

Terminal window
# 安装
sudo apt install tmux # Ubuntu
sudo 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

Terminal window
# 常用语法
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 规则,可能与系统防火墙冲突。

Terminal window
# 1. 修改配置
sudo vim /lib/systemd/system/docker.service
# 2. 在 ExecStart 中添加 --iptables=false
# ExecStart=/usr/bin/dockerd --iptables=false ...
# 3. 重载并重启
sudo systemctl daemon-reload
sudo systemctl restart docker

Ubuntu Docker 环境快速安装

Terminal window
# 1. 卸载旧版并更新
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt update && sudo apt upgrade -y
# 2. 安装依赖与密钥
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
curl -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 $USER
sudo vim /etc/docker/daemon.json
# 内容: { "registry-mirrors": ["[https://docker.m.daocloud.io](https://docker.m.daocloud.io)"] }
# 5. 重启服务
sudo systemctl restart docker

CentOS 7 停止维护后的 Yum 源失效

Terminal window
# 备份并替换源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清理缓存并重新生成
yum clean all
yum makecache

重置网络

Centos7

  1. 修改网卡配置文件

找到对应的网卡文件(通常以 ifcfg- 开头),确保 ONBOOT 设置为 yes。

Terminal window
# 编辑网卡配置文件,例如 ens33
vi /etc/sysconfig/network-scripts/ifcfg-ens33
  1. 配置静态 IP(弃用 DHCP)
Terminal window
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" # 改为 static
IPADDR="192.168.128.129" # 自定义 IP 地址
NETMASK="255.255.255.0" # 子网掩码
GATEWAY="192.168.128.1" # 默认网关
DNS1="8.8.8.8" # 主 DNS
DNS2="114.114.114.114" # 备 DNS
DEFROUTE="yes"
NAME="ens33" # 确保与文件名中的后缀一致
DEVICE="ens33" # 对应物理网卡名
ONBOOT="yes" # 必须为 yes,确保开机自启
  1. 重启网络服务
Terminal window
# 彻底重置:禁用 NetworkManager 并重启 network
systemctl stop NetworkManager # 停止网络管理器
systemctl disable NetworkManager # 禁止开机自启
systemctl restart network # 重启传统网络服务

ubuntu

  1. 配置静态 IP 地址
Terminal window
# 1. 查看网卡名称 (例如 eth0 或 enp0s3)
ip addr
# 2. 编辑配置文件
sudo vi /etc/netplan/01-netcfg.yaml

YAML 配置示例:

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
  1. 应用配置与重置
Terminal window
# 测试配置是否有语法错误(会有 120 秒确认时间,防止把自己锁在外面)
sudo netplan try
# 直接应用配置
sudo netplan apply

常用网络重置技巧

Terminal window
# 针对使用 DHCP 的环境
sudo dhclient -r # 释放当前 IP
sudo dhclient # 重新获取 IP
# 强制重启网卡 (以 enp0s3 为例)
sudo ip link set enp0s3 down
sudo ip link set enp0s3 up