422 lines
12 KiB
Markdown
Executable File
422 lines
12 KiB
Markdown
Executable File
# Linux 常用命令续
|
||
|
||
> 常用命令的补充,包含更多进阶操作
|
||
|
||
---
|
||
|
||
## 🖥️ 系统信息
|
||
|
||
```bash
|
||
# 查看系统架构
|
||
arch # 显示机器处理器架构
|
||
uname -m # 显示CPU架构
|
||
uname -r # 显示内核版本
|
||
uname -a # 显示全部系统信息
|
||
|
||
# 查看硬件信息
|
||
cat /proc/cpuinfo # CPU详细信息
|
||
cat /proc/meminfo # 内存详细信息
|
||
cat /proc/interrupts # 中断信息
|
||
cat /proc/version # 内核版本
|
||
cat /proc/uptime # 运行时间
|
||
|
||
# 查看PCI/USB设备
|
||
lspci -tv # PCI设备列表
|
||
lsusb -tv # USB设备列表
|
||
|
||
# 日期时间
|
||
date # 显示当前日期时间
|
||
cal 2024 # 显示2024年日历
|
||
date -s "2024-01-01 12:00:00" # 设置时间
|
||
clock -w # 保存时间到BIOS
|
||
timedatectl # systemd时间管理
|
||
```
|
||
|
||
---
|
||
|
||
## 🔌 关机与重启
|
||
|
||
```bash
|
||
# 关机
|
||
shutdown -h now # 立即关机
|
||
halt # 关机(等效)
|
||
poweroff # 关机
|
||
init 0 # 切换到运行级别0
|
||
|
||
# 定时关机
|
||
shutdown -h +30 # 30分钟后关机
|
||
shutdown -h 23:00 # 23:00关机
|
||
shutdown -c # 取消定时关机
|
||
|
||
# 重启
|
||
reboot # 重启
|
||
shutdown -r now # 立即重启
|
||
init 6 # 切换到运行级别6
|
||
|
||
# 注销
|
||
logout # 注销当前用户
|
||
exit # 退出当前shell
|
||
```
|
||
|
||
---
|
||
|
||
## 📁 文件与目录操作
|
||
|
||
```bash
|
||
# 目录操作
|
||
cd /home # 进入目录
|
||
cd .. # 返回上级目录
|
||
cd ../.. # 返回上两级
|
||
cd ~ # 进入家目录
|
||
cd ~user # 进入某人家目录
|
||
cd - # 返回上次所在目录
|
||
pwd # 显示当前路径
|
||
|
||
# 创建
|
||
mkdir dir1 # 创建目录
|
||
mkdir dir1 dir2 # 同时创建两个
|
||
mkdir -p /tmp/a/b/c # 递归创建目录树
|
||
|
||
# 删除
|
||
rm file1 # 删除文件
|
||
rm -f file1 # 强制删除
|
||
rmdir dir1 # 删除空目录
|
||
rm -rf dir1 # 强制删除目录及内容
|
||
|
||
# 复制
|
||
cp file1 file2 # 复制文件
|
||
cp -a dir1 dir2 # 递归复制目录
|
||
cp -r dir/* . # 复制目录下所有文件
|
||
|
||
# 移动/重命名
|
||
mv file1 file2 # 重命名
|
||
mv file1 /path/ # 移动文件
|
||
|
||
# 链接
|
||
ln file1 lnk1 # 创建硬链接
|
||
ln -s file1 lnk1 # 创建软链接(快捷方式)
|
||
|
||
# 时间戳
|
||
touch -t 0712250000 file1 # 修改文件时间 (YYMMDDhhmm)
|
||
```
|
||
|
||
---
|
||
|
||
## 🔍 文件搜索
|
||
|
||
```bash
|
||
# find - 强力搜索
|
||
find / -name file1 # 按名字搜索
|
||
find / -user user1 # 搜索某用户的文件
|
||
find / -type d -name dir # 搜索目录
|
||
find / -size +100M # 搜索大于100M的文件
|
||
find / -mtime -7 # 搜索7天内修改的文件
|
||
find / -atime +30 # 搜索30天未访问的文件
|
||
find / -perm 755 # 按权限搜索
|
||
|
||
# locate - 快速搜索(需updatedb)
|
||
locate *.ps # 搜索.ps文件
|
||
updatedb # 更新locate数据库
|
||
|
||
# whereis/which - 查找命令
|
||
whereis command # 查找命令位置和手册
|
||
which command # 查找命令所在路径
|
||
```
|
||
|
||
---
|
||
|
||
## 💾 磁盘管理
|
||
|
||
```bash
|
||
# 查看磁盘使用
|
||
df -h # 显示挂载分区
|
||
df -i # 显示inode使用
|
||
ls -lSr | more # 按大小列出文件
|
||
|
||
# 查看目录大小
|
||
du -sh dir1 # 目录总大小
|
||
du -sk * | sort -rn # 按大小排序
|
||
du -h --max-depth=1 # 子目录大小
|
||
|
||
# 磁盘命令
|
||
fdisk -l # 显示分区表
|
||
mount /dev/sda1 /mnt # 挂载分区
|
||
umount /dev/sda1 # 卸载分区
|
||
```
|
||
|
||
---
|
||
|
||
## 📦 RPM/DEB 包管理
|
||
|
||
```bash
|
||
# RPM (CentOS/RHEL)
|
||
rpm -ivh package.rpm # 安装包
|
||
rpm -Uvh package.rpm # 升级包
|
||
rpm -e package # 卸载包
|
||
rpm -qa # 列出所有已安装包
|
||
rpm -qi package # 包信息
|
||
rpm -ql package # 包文件列表
|
||
rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n # 按大小排序
|
||
|
||
# DEB (Debian/Ubuntu)
|
||
dpkg -i package.deb # 安装包
|
||
dpkg -r package # 卸载包
|
||
dpkg -l # 列出已安装包
|
||
dpkg -L package # 包文件列表
|
||
dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n # 按大小排序
|
||
|
||
# APT (Debian/Ubuntu)
|
||
apt install package # 安装
|
||
apt remove package # 卸载
|
||
apt update # 更新源
|
||
apt upgrade # 升级
|
||
apt search keyword # 搜索包
|
||
apt list --installed # 列出已安装
|
||
```
|
||
|
||
---
|
||
|
||
## 🌐 网络命令
|
||
|
||
```bash
|
||
# 网络配置
|
||
ifconfig # 查看IP
|
||
ifconfig eth0 192.168.1.100 # 临时设置IP
|
||
route -n # 查看路由表
|
||
netstat -tlnp # 查看监听端口
|
||
netstat -anu # 查看所有UDP连接
|
||
netstat -anp # 查看所有连接及进程
|
||
|
||
# 网络测试
|
||
ping -c 4 192.168.1.1 # ping 4次
|
||
traceroute 目标IP # 路由追踪
|
||
tracepath 目标IP # 路由追踪(无需root)
|
||
mtr 目标IP # 实时路由追踪
|
||
|
||
# DNS
|
||
nslookup example.com # DNS查询
|
||
dig example.com # 详细DNS信息
|
||
host example.com # DNS反向查询
|
||
|
||
# 端口转发
|
||
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
|
||
```
|
||
|
||
---
|
||
|
||
## 👥 用户与用户组
|
||
|
||
```bash
|
||
# 用户管理
|
||
useradd user1 # 创建用户
|
||
userdel user1 # 删除用户
|
||
usermod -aG group1 user1 # 添加到组
|
||
passwd user1 # 设置密码
|
||
|
||
# 用户组管理
|
||
groupadd group1 # 创建组
|
||
groupdel group1 # 删除组
|
||
groups user1 # 查看用户所属组
|
||
|
||
# 查看用户
|
||
who # 当前登录用户
|
||
whoami # 当前用户名
|
||
w # 详细登录信息
|
||
last # 登录历史
|
||
lastlog # 所有用户最后登录
|
||
|
||
# 文件所有者
|
||
chown user1 file1 # 更改所有者
|
||
chown user1:group1 file1 # 更改所有者和组
|
||
chgrp group1 file1 # 更改所属组
|
||
```
|
||
|
||
---
|
||
|
||
## 📝 文本处理
|
||
|
||
```bash
|
||
# grep - 搜索
|
||
grep "pattern" file # 搜索
|
||
grep -r "pattern" dir/ # 递归搜索
|
||
grep -i "pattern" file # 忽略大小写
|
||
grep -n "pattern" file # 显示行号
|
||
grep -v "pattern" file # 显示不匹配的行
|
||
grep -E "p1|p2" file # 正则匹配
|
||
|
||
# sed - 替换
|
||
sed 's/old/new/g' file # 全局替换
|
||
sed -i 's/old/new/g' file # 直接修改文件
|
||
sed '1,10s/old/new/' file # 替换指定行
|
||
sed '/pattern/d' file # 删除匹配行
|
||
|
||
# awk - 文本分析
|
||
awk '{print $1}' file # 打印第一列
|
||
awk -F: '{print $1}' file # 指定分隔符
|
||
awk 'NR==5' file # 打印第5行
|
||
|
||
# sort/uniq - 排序去重
|
||
sort file # 排序
|
||
sort -u file # 去重排序
|
||
uniq file # 去重
|
||
sort file | uniq -c # 统计重复次数
|
||
|
||
# wc - 统计
|
||
wc -l file # 行数
|
||
wc -w file # 词数
|
||
wc -c file # 字符数
|
||
```
|
||
|
||
---
|
||
|
||
## 🔧 进程管理
|
||
|
||
```bash
|
||
# 查看进程
|
||
ps aux # 所有进程
|
||
ps -ef # 标准格式
|
||
pstree # 进程树
|
||
top # 动态监控
|
||
htop # 更友好的top
|
||
|
||
# 查找进程
|
||
pgrep -l name # 按名称查找PID
|
||
pidof process_name # 查找进程PID
|
||
|
||
# 终止进程
|
||
kill PID # 正常终止
|
||
kill -9 PID # 强制终止
|
||
killall name # 按名称终止
|
||
pkill name # 按名称终止(支持正则)
|
||
|
||
# 进程优先级
|
||
nice -n 10 process # 以低优先级启动
|
||
renice 5 PID # 修改运行中进程优先级
|
||
```
|
||
|
||
---
|
||
|
||
## 📋 计划任务
|
||
|
||
```bash
|
||
# cron 服务
|
||
systemctl start cron # 启动
|
||
systemctl enable cron # 开机启动
|
||
|
||
# 编辑 crontab
|
||
crontab -e # 编辑当前用户计划任务
|
||
crontab -l # 查看计划任务
|
||
crontab -r # 删除计划任务
|
||
|
||
# 格式:分 时 日 月 周 命令
|
||
# 示例:
|
||
# */5 * * * * /script.sh # 每5分钟
|
||
# 0 */2 * * * /script.sh # 每2小时
|
||
# 0 3 * * * /script.sh # 每天3点
|
||
# 0 0 * * 0 /script.sh # 每周日
|
||
```
|
||
|
||
---
|
||
|
||
## 🔒 SSH/远程连接
|
||
|
||
```bash
|
||
# 连接
|
||
ssh user@host # SSH连接
|
||
ssh -p 2222 user@host # 指定端口
|
||
ssh -i key.pem user@host # 密钥连接
|
||
|
||
# SSH 密钥
|
||
ssh-keygen -t rsa # 生成密钥
|
||
ssh-copy-id user@host # 复制公钥到服务器
|
||
|
||
# SCP 文件传输
|
||
scp file user@host:/path # 上传
|
||
scp user@host:/file /path # 下载
|
||
scp -r dir user@host:/path # 递归传输
|
||
|
||
# 其他远程工具
|
||
rsync -avz src/ user@host:/dest/ # 同步(增量)
|
||
telnet host port # 测试端口
|
||
nc -zv host port # 测试端口(无回显)
|
||
```
|
||
|
||
---
|
||
|
||
## 🛠️ 系统服务 (systemd)
|
||
|
||
```bash
|
||
# 服务管理
|
||
systemctl start service # 启动
|
||
systemctl stop service # 停止
|
||
systemctl restart service # 重启
|
||
systemctl status service # 状态
|
||
systemctl enable service # 开机启动
|
||
systemctl disable service # 禁止开机启动
|
||
systemctl is-enabled service # 检查是否开机启动
|
||
|
||
# 查看服务
|
||
systemctl list-units --type=service --all # 列出所有服务
|
||
systemctl list-dependencies service # 服务依赖
|
||
|
||
# 日志
|
||
journalctl -u service # 查看服务日志
|
||
journalctl -f # 实时查看日志
|
||
journalctl --since "1 hour ago" # 最近1小时日志
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 性能监控
|
||
|
||
```bash
|
||
# CPU/内存
|
||
top # 动态监控
|
||
htop # 增强版top
|
||
vmstat 1 5 # 每1秒采样5次
|
||
mpstat 1 # CPU详细统计
|
||
|
||
# I/O
|
||
iostat # I/O统计
|
||
iotop # 交互式I/O监控(需安装)
|
||
df -h # 磁盘使用
|
||
|
||
# 网络
|
||
iftop # 网络流量监控(需安装)
|
||
nethogs # 按进程显示流量
|
||
sar -n DEV 1 5 # 网卡流量统计
|
||
```
|
||
|
||
---
|
||
|
||
## 🔧 实用技巧
|
||
|
||
```bash
|
||
# 命令替换
|
||
$(command) # 命令替换
|
||
`command` # 同上(老式)
|
||
|
||
# 管道组合
|
||
cat file | grep pattern | sort | uniq -c | sort -rn
|
||
|
||
# 后台运行
|
||
nohup command & # 后台运行(忽略挂起)
|
||
command & # 后台运行
|
||
screen # 终端复用
|
||
tmux # 终端复用(更现代)
|
||
|
||
# 快速补全
|
||
Tab # 补全命令/路径
|
||
Tab*2 # 显示所有可能选项
|
||
|
||
# 历史命令
|
||
!! # 执行上一条命令
|
||
!n # 执行第n条
|
||
!$ # 上一条命令的最后一个参数
|
||
!?keyword # 执行包含keyword的最新命令
|
||
```
|
||
|
||
---
|
||
|
||
> 💡 **提示**:大部分命令支持 `--help` 查看帮助,或使用 `man command` 查看详细手册。
|