Linux运维必备命令集锦与实用技巧
一、进程与端口管理
1、统计进程线程数量
ps -ef | grep 应用名称 | grep -v grep | awk '{print $2}' | xargs ps -Lf | wc -l
2、查看进程启动时间
ps -eo pid,lstart,cmd | grep 应用名称
3、检测端口占用情况
netstat -anp |grep 端口号
4、根据进程名终止应用
sudo ps -ef | grep 应用名称 | grep -v grep | awk '{print $2}' | xargs kill -9
组合使用实现应用一键启停
sudo ps -ef | grep app.jar | grep -v grep | awk '{print $2}' | xargs kill -9
sleep 2
./startup.sh
5、解决Linux系统缓存占用过高问题
清理缓存参数说明:
- 0:不释放(默认值)
- 1:释放页面缓存
- 2:释放目录项和索引节点
- 3:释放所有缓存
echo 3 > /proc/sys/vm/drop_caches
二、文件搜索与查找
1、按名称搜索文件
例如查找/var目录下所有以conf开头的文件:
find /var -name conf.*
2、查找特定大小以上的文件
例如搜索/usr目录下超过1GB大小的文件:
find /usr -type f -size +1G
3、搜索包含特定内容的文件
例如在/etc目录下查找包含"error"的文件:
find /etc -type f -exec grep -H "error" {} +
4、分析目录空间占用
查看/var/log下各子目录空间使用情况:
du -h --max-depth=1 /var/log | sort -hr | head -n 15
命令解释:
du:磁盘使用统计-h:以人类可读格式显示--max-depth=1:只查看一级子目录sort -hr:按大小降序排序head -n 15:显示前15个结果
5、解决df和du统计差异问题
# 安装lsof工具
yum install lsof
# 查找已删除但仍被进程占用的文件
lsof |grep delete
三、文件压缩与解压
1、使用zip压缩目录
例如压缩/data/backups目录:
zip -r backups.zip /data/backups
2、解压zip文件
解压当前目录下的archive.zip:
unzip archive.zip
3、使用tar压缩文件
压缩当前项目目录:
tar -czvf project.tar.gz project/
4、解压tar文件
解压当前目录下的archive.tar.gz:
tar -zxvf archive.tar.gz
四、系统运维实用技巧
1、查看当前登录用户
who
2、MySQL查询表空间占用
select concat(round(sum(data_length / 1024 / 1024), 2), 'MB') as data_size,
concat(round(sum(index_length / 1024 / 1024), 2), 'MB') as index_size,
table_rows
from information_schema.tables
where table_schema = 'database_name'
and table_name = 'table_name';
3、检查系统端口状态
netstat -tuln
4、修改SSH端口
# 编辑SSH配置文件
vim /etc/ssh/sshd_config
# 重启SSH服务
systemctl restart sshd
5、监控网络带宽使用
# 安装nethogs
yum install nethogs -y
# 查看指定网卡流量
nethogs eth0
6、MySQL二进制日志分析
提取指定时间范围内的SQL语句:
# 查询指定时间范围内的数据(加密)
mysqlbinlog --start-datetime="2023-10-01 10:00:00"
--stop-datetime="2023-10-01 11:00:00"
mysql-bin.000123
# 查询指定时间范围内的数据(解密显示)
mysqlbinlog -v --base64-output=DECODE-ROWS \
--start-datetime="2023-10-01 10:00:00" \
--stop-datetime="2023-10-01 11:00:00" \
mysql-bin.000123
7、MySQL表优化
OPTIMIZE TABLE table_name;
8、MySQL表备份
# 创建表结构
CREATE TABLE backup_table LIKE original_table;
# 复制数据
INSERT INTO backup_table SELECT * FROM original_table;
9、创建特殊压缩文件
创建一个显示为10MB实际为10GB的文件:
dd if=/dev/zero bs=10G count=1 | gzip -c > 10GB.gz
10、在Linux下执行JMeter测试
jmeter -n -t /home/jmeter/plans/test_plan.jmx -l /home/jmeter/results/test_results.jtl
11、Linux系统交换空间管理
# 创建8GB交换文件
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 设置开机自动挂载
echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab
# 临时禁用交换空间
sudo swapoff /swapfile
# 调整交换空间大小
sudo swapoff /swapfile
sudo fallocate -l 16G /swapfile # 调整为16GB
sudo mkswap /swapfile
sudo swapon /swapfile