news 2026/6/11 21:34:24

运维工程师私藏:Linux常用软件安装与运维的30个实用技巧

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
运维工程师私藏:Linux常用软件安装与运维的30个实用技巧

作为一名运维工程师,在日常与 Linux 服务器打交道的过程中,我们总会积累一些能大幅提升效率、解决疑难问题的实用技巧。这些技巧不像基础命令那样广为人知,却能在关键时刻帮我们节省大量时间,少踩无数坑。

本文整理了我多年运维工作中私藏的 30 个实用技巧,覆盖软件安装、服务管理、故障排查、性能优化等核心场景,每个技巧都附带详细的操作步骤、代码示例和说明,部分场景还搭配了实操截图,看完就能直接上手用。

我们将这 30 个技巧分为三个部分,方便你按需查阅:

  • 第一部分:软件安装与包管理(1-10):搞定各类软件的高效安装,解决依赖、离线、速度慢等问题

  • 第二部分:服务与进程运维(11-20):日常服务管理、进程监控的高效技巧,让你管理服务器游刃有余

  • 第三部分:日志排查与性能优化(21-30):故障排查、性能调优的核心技巧,快速定位解决生产问题


第一部分:软件安装与包管理:10 个高效安装技巧

软件安装是运维的日常工作之一,很多人只会简单的yum install,却不知道有很多技巧能解决依赖冲突、离线安装、速度慢等常见痛点。这 10 个技巧,能让你的软件安装效率提升数倍。

技巧 1:用yum localinstall自动解决本地 RPM 包依赖

很多时候我们会下载好本地的 RPM 包,比如特定版本的 Nginx、MySQL,但是用rpm -i安装的时候,总会遇到一堆依赖错误,需要手动一个个下载安装,非常麻烦。

这个时候,yum localinstall就是你的救星,它会自动从系统配置的 YUM 源中下载并安装所有依赖包,不用你手动处理。

操作代码:

# 安装本地的nginx rpm包,自动解决所有依赖yum localinstall nginx-1.24.0-1.el7.x86_64.rpm-y

说明:
这个命令和rpm -i的区别在于,rpm只会检查本地有没有依赖,没有的话就报错,而yum会自动从源里拉取缺失的依赖,自动安装,大大节省了你的时间。

技巧 2:编译安装统一指定--prefix,规范管理所有软件

很多新手编译安装软件的时候,直接./configure && make && make install,结果软件默认装到了/usr/local下面,时间长了,/usr/local下面的 bin、lib、conf 混在一起,你根本不知道哪个文件属于哪个软件,升级的时候也不知道该删什么,系统越来越乱。

正确的做法是,所有编译安装的软件,统一指定安装目录到/opt/software/下,每个软件单独一个目录,然后做软链接,这样所有软件都一目了然,管理、升级、回滚都非常方便。

操作代码:

# 编译安装nginx,指定安装目录./configure--prefix=/opt/software/nginx-1.24.0make&&makeinstall# 做软链接,方便调用ln-s/opt/software/nginx-1.24.0 /usr/local/nginx

说明:
这样一来,所有编译安装的软件都在/opt/software下面,每个版本单独一个目录,升级的时候,你只需要安装新版本,然后把软链接指向新版本就行,旧版本不用删,出问题了随时可以切回去,非常安全。

技巧 3:一键配置国内 YUM 源,把安装速度拉满

默认的 CentOS、RHEL 系统,YUM 源都是国外的,国内访问速度非常慢,有时候安装一个小软件都要等半天。换成国内的阿里云源,速度直接拉满,几 MB/s 的下载速度,体验完全不一样。

操作代码(CentOS 7):

# 备份原来的源mv/etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak# 下载阿里云的源wget-O/etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo# 清理缓存,生成新的缓存yum clean all&&yum makecache

说明:
如果是 CentOS 8 或者 9,只需要把源的地址换成对应的就行,比如 CentOS 8 的源是https://mirrors.aliyun.com/repo/Centos-8.repo。配置完之后,你再用 yum 安装软件,速度会快几十倍。

技巧 4:启用 EPEL 源,安装官方源没有的小众软件

官方的 YUM 源里,很多常用的工具都没有,比如htopifstatncdu这些,这个时候你就需要启用 EPEL 源,EPEL 是 Fedora 团队维护的额外包仓库,里面有大量官方源没有的软件,而且非常稳定。

操作代码:

# CentOS 7 安装EPELyuminstallepel-release-y# CentOS 8 安装EPELdnfinstallhttps://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm-y

说明:
安装完 EPEL 之后,你就可以直接用 yum 安装那些之前找不到的软件了,比如yum install htop,一键就能装上,不用自己去编译了。

技巧 5:用rpm -V验证软件文件的完整性,排查篡改问题

有时候你会怀疑,系统里的软件是不是被篡改了?比如中了病毒,或者误改了二进制文件?这个时候,rpm -V命令就能帮你验证,它会对比 RPM 包原始的文件属性,包括大小、权限、MD5、修改时间等,告诉你哪个文件被修改了。

操作代码:

# 验证nginx软件的所有文件rpm-Vnginx

说明:
如果命令执行完什么都没有输出,说明所有文件都没问题。如果有输出,每个字符代表不同的问题:

  • S:文件大小变了

  • 5:MD5 校验值变了

  • T:修改时间变了

  • M:权限变了
    这样你就能快速定位到哪个文件被篡改了,排查安全问题。

技巧 6:快速查找某个命令属于哪个 RPM 包

很多时候,你遇到一个命令,不知道它属于哪个包,比如你想装ifconfig,但是不知道包名是net-tools,或者你有个陌生的命令,想知道它是哪个软件带的,这个时候,yum provides就能帮你快速查到。

操作代码:

# 查找ifconfig命令属于哪个包yum providesifconfig

输出示例:

net-tools-2.0-0.25.20131004git.el7.x86_64 : Basic networking tools Repo : base Matched from: Filename : /sbin/ifconfig

说明:
你看,一下就查到了,ifconfig属于net-tools包,然后你直接yum install net-tools就能装上了,不用去百度搜半天。

技巧 7:配置 PIP 国内源,加速 Python 包安装

Python 的 PIP 默认也是用的国外源,安装包的时候速度慢的要死,尤其是装一些大的库,比如tensorflow,要等几个小时。换成国内的清华源,速度直接起飞。

操作代码:

# 方法1:临时使用,安装单个包的时候用pipinstallrequests-ihttps://pypi.tuna.tsinghua.edu.cn/simple# 方法2:永久配置,所有pip安装都用国内源mkdir-p~/.pipcat>~/.pip/pip.conf<<EOF [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-host = pypi.tuna.tsinghua.edu.cn EOF

说明:
配置完永久源之后,你以后再用 pip 安装包,就不用每次都加-i参数了,自动用国内源,速度快很多。

技巧 8:配置 NPM 淘宝源,加速 Node.js 包安装

前端的同学应该深有体会,NPM 默认的国外源,安装项目依赖的时候,动不动就超时,装个node_modules要几十分钟。换成淘宝的 NPMMirror 源,速度直接拉满。

操作代码:

# 临时使用,安装单个包npminstallexpress--registryhttps://registry.npmmirror.com# 永久配置,所有npm安装都用这个源npmconfigsetregistry https://registry.npmmirror.com# 验证是否配置成功npmconfig get registry

说明:
配置完之后,你再npm install,原来要半小时的,现在几分钟就搞定了,尤其是装大的前端项目,体验提升非常明显。

技巧 9:离线安装 RPM 包,搞定无外网的生产服务器

很多生产服务器是没有外网的,没法直接 yum 安装软件,这个时候怎么办?你可以在有外网的机器上,把要安装的包和所有依赖都下载下来,然后拷贝到离线服务器上安装,一键搞定。

操作步骤:

# 1. 在有外网的机器上,先安装downloadonly插件yuminstallyum-plugin-downloadonly-y# 2. 下载你要安装的软件,以及所有依赖,保存到指定目录yuminstallnginx--downloadonly--downloaddir=/root/nginx_packages-y# 3. 把这个目录打包tarzcvf nginx_packages.tar.gz nginx_packages/# 4. 把打包好的文件拷贝到离线服务器,解压tarzxvf nginx_packages.tar.gzcdnginx_packages# 5. 离线安装,自动解决所有依赖yum localinstall *.rpm-y

说明:
这个技巧是运维处理离线服务器的必备技能,不用你一个个找依赖,yum 会自动把所有需要的包都下载下来,拷贝过去直接装就行,非常方便。

技巧 10:用 Docker 快速部署软件,彻底解决环境依赖问题

很多软件,安装的时候依赖复杂,不同的系统环境,很容易出问题,比如你在 CentOS 7 上装的好好的,到 CentOS 8 上就装不上了,或者依赖版本不对。用 Docker 的话,彻底解决这个问题,直接拉镜像,一键启动,不用管环境。

操作代码:

# 先安装Dockeryuminstalldocker-ce-ysystemctl startdocker&&systemctlenabledocker# 一键启动MySQL,不用管依赖dockerrun-d--namemysql-p3306:3306-eMYSQL_ROOT_PASSWORD=123456mysql:5.7# 一键启动Nginxdockerrun-d--namenginx-p80:80 nginx:latest# 一键启动Redisdockerrun-d--nameredis-p6379:6379 redis:latest

说明:
用 Docker 部署,你不用管 MySQL 的依赖,不用管 Nginx 的版本,环境都是隔离的,不会和系统的其他软件冲突,升级的时候,删了容器重新拉个新镜像就行,非常方便,而且不管你是 CentOS 还是 Ubuntu,都能用一样的命令。


第二部分:服务与进程运维:10 个日常管理技巧

软件装完了,日常的服务管理、进程监控就是运维的主要工作了,这 10 个技巧,能让你管理服务器的时候事半功倍,快速定位问题。

技巧 11:Systemd 服务管理的高效用法,告别服务启动失败

现在的 Linux 系统,基本都是用 Systemd 管理服务了,很多人只会systemctl start/stop,其实 Systemd 有很多实用的参数,能帮你更好的管理服务。

常用操作代码:

# 查看服务的详细状态,包括错误日志systemctl status nginx# 启动/停止/重启服务systemctl start nginx systemctl stop nginx systemctl restart nginx# 重新加载配置,不中断服务(重点!)systemctl reload nginx# 设置开机自启/取消开机自启systemctlenablenginx systemctl disable nginx# 查看所有服务的状态,看看哪些开机自启了systemctl list-unit-files--type=service

说明:
这里重点说一下reloadrestart的区别:restart是重启服务,会中断正在处理的请求,而reload是重新加载配置文件,服务不会重启,连接不会断,所以你改完 Nginx、MySQL 的配置,能用reload就用reload,不要随便restart,避免影响业务。

技巧 12:用ss命令查看端口占用,比netstat快 10 倍

很多人查端口占用,还在用netstat,但是netstat已经过时了,它是遍历/proc下的文件,速度很慢,尤其是服务器连接很多的时候,要等半天。而ss是直接从内核获取数据,速度快的多,秒出结果。

操作代码:

# 查看所有监听的端口,以及对应的进程ss-tulnp

参数说明:

  • t:显示 TCP 端口

  • u:显示 UDP 端口

  • l:只显示监听状态的端口

  • n:不解析域名和端口名,直接显示数字,速度更快

  • p:显示占用端口的进程 ID 和进程名

说明:
这个命令是我日常用的最多的,比如 80 端口起不来,我用这个命令一下就查到哪个进程占了 80 端口,比netstat快太多了,尤其是生产服务器,几万个连接,netstat要跑半天,ss一下就出来了。

技巧 13:用journalctl排查服务日志,精准过滤不用翻文件

Systemd 的日志都存在 Journal 里,用journalctl查看日志,比你去/var/log下面翻文件方便太多了,它支持按服务、时间、级别过滤,非常精准。

常用操作代码:

# 查看nginx服务的日志,实时跟踪journalctl-unginx.service-f# 查看过去1小时的日志journalctl--since"1 hour ago"# 查看今天的所有日志journalctl--sincetoday# 查看指定时间范围的日志,比如排查昨天10点到12点的问题journalctl--since"2024-06-01 10:00"--until"2024-06-01 12:00"# 只查看错误级别的日志journalctl-unginx-perr

说明:
比如服务启动失败了,systemctl status只显示最后几行日志,不够用,这个时候用journalctl -u 服务名,就能看到完整的启动日志,哪里错了一目了然,不用你去翻半天的日志文件。

技巧 14:用tail -F跟踪日志,自动适配日志轮转

很多人跟踪日志用tail -f,但是你有没有遇到过,跟踪着跟踪着,日志突然不更新了?那是因为日志轮转了,比如 Nginx 每天半夜切割日志,原来的access.log变成了access.log.1,新的access.log生成了,tail -f还在盯着旧的文件,所以就停了。

tail -F就不一样,它会跟踪文件名,不管文件有没有被轮转,只要有这个名字的新文件,它会自动切换过去,继续跟踪,不会断。

操作代码:

# 跟踪nginx的访问日志,自动适配日志轮转tail-F/var/log/nginx/access.log

说明:
排查线上问题的时候,这个技巧太重要了,不然你跟踪了半天,日志轮转了,你还不知道,以为问题不出现了,白等半天。

技巧 15:Grep 多条件过滤日志,快速定位错误

排查日志的时候,经常需要过滤多个条件,比如找包含error的行,但是要排除一些无关的错误,或者同时匹配多个关键词,Grep 的参数能帮你快速搞定。

常用操作代码:

# 查找包含error的行,排除包含ignore的行grep"error"/var/log/nginx/error.log|grep-v"ignore"# 同时匹配error和timeout,不管顺序grep-E"error.*timeout|timeout.*error"/var/log/nginx/error.log# 统计error出现的次数grep-c"error"/var/log/nginx/error.log

说明:
grep -v是排除的意思,就是把包含后面关键词的行去掉,-E是开启扩展正则,这样你就能写复杂的匹配规则,快速从一大堆日志里过滤出你要的信息,不用一行行看。

技巧 16:一键查找系统中的大文件,快速清理磁盘

磁盘满了报警,你要找哪个文件占了空间,一个个 du 太慢了,用这个命令,直接列出所有大于 100M 的文件,按大小排序,最大的在最上面,一眼就能看到。

操作代码:

find/-typef-size+100M-execls-lh{}\;|awk'{print $9 ": " $5}'|sort-hr

输出示例:

/var/log/nginx/access.log.1: 2.3G /data/backup/mysql_backup.sql: 1.8G /root/big_file.tar.gz: 1.2G

说明:
这个命令会遍历整个系统,找到所有大于 100M 的文件,然后按大小降序排序,你一下就知道哪个文件最大,比如是不是日志文件太大了,或者备份文件忘了删,直接删了就行,磁盘空间就回来了。

技巧 17:Top/Htop 的高级用法,快速定位资源瓶颈

Top 是常用的系统监控命令,但是很多人只会看默认的界面,其实 Top 有很多快捷键,能帮你快速定位资源瓶颈,Htop 是 Top 的增强版,更直观更好用。

常用操作:

# 只监控所有java进程,不用看其他无关的top-p$(pgrepjava|tr'\n'','|sed's/,$//')

Top 里的快捷键:

  • M:进程按内存使用率排序,快速找到吃内存的进程

  • P:进程按 CPU 使用率排序,快速找到吃 CPU 的进程

  • k:输入 PID,直接杀进程

  • q:退出 Top

说明:
比如服务器 CPU 突然跑满了,你打开 Top,按 P,一下就看到哪个进程占了 99% 的 CPU,直接定位问题,不用一个个找。Htop 的话,界面更友好,有颜色,支持鼠标,还能直接看到每个 CPU 核的使用率,非常好用。

技巧 18:dfdu配合,快速定位磁盘占用过高的目录

磁盘满了,首先用df看哪个分区满了,然后用du看这个分区里哪个目录占了空间,两个命令配合,快速定位。

操作代码:

# 第一步,查看所有分区的使用情况,找到哪个分区满了df-h

# 比如,发现/dev/vda1挂载在/,满了,那进入/目录,看各个子目录的大小cd/du-sh*|sort-hr

输出示例:

20G data 15G var 2G root 1G usr

说明:
这样你就看到,/var目录占了 15G,那你就进去/var,继续用du -sh *,就能找到/var/log占了 14G,那就是日志的问题,快速定位,不用你一个个目录去查。

技巧 19:用lsof找到被删除但未释放的文件,解决磁盘空间不释放的诡异问题

你有没有遇到过这个诡异的问题:df显示磁盘满了,但是你用du查了所有文件,加起来根本没那么大,空间去哪了?

这个时候,就是有文件被删除了,但是进程还握着这个文件的句柄,系统没把空间释放掉,比如你删了一个 10G 的日志文件,但是 Nginx 还打开着这个文件,没关闭,所以空间没释放。

lsof就能找到这些文件:

操作代码:

lsof|grepdeleted

输出示例:

nginx 1234 root 1w REG 253,1 10737418240 123456 /var/log/nginx/access.log.1 (deleted)

说明:
你看,这个access.log.1已经被删了,但是 Nginx 的进程 1234 还打开着它,占了 10G 的空间,这个时候,你只要给 Nginx 发个 HUP 信号,重新加载一下,进程就会关闭这些旧的文件句柄,空间就释放了:

kill-HUP1234

这个问题是运维经常遇到的坑,很多新手搞半天都不知道怎么回事,这个命令一下就解决了。

技巧 20:Crontab 的高级用法,秒级定时与日志重定向

Crontab 是定时任务工具,默认最小的时间单位是分钟,很多人不知道怎么实现秒级的定时,而且很多人写的定时任务,手动执行可以,定时执行就不行,不知道为什么,其实就是日志和环境变量的问题。

常用技巧:

# 1. 实现秒级定时,每10秒执行一次脚本# 原理:每分钟里,循环6次,每次睡10秒,执行一次脚本* * * * * /bin/bash-c'for i in {0..5}; do sleep 10; /root/your_script.sh; done'# 2. 定时任务的日志重定向,把输出和错误都写到日志里* * * * * /root/your_script.sh>>/var/log/your_script.log2>&1

说明:
很多人写定时任务,只写了命令,没加日志重定向,结果定时任务执行失败了,你都不知道为什么,加了这个,所有的输出和错误都会写到日志里,出问题了看日志就行。而且秒级定时的技巧,能帮你实现小于分钟的定时任务,满足一些特殊的需求。


第三部分:日志排查与性能优化:10 个问题解决技巧

线上出问题的时候,排查问题、优化性能是运维的核心能力,这 10 个技巧,能帮你快速定位问题,优化系统性能。

技巧 21:MySQL 备份与还原的高效参数,备份不锁表

很多人备份 MySQL,只会mysqldump -u root -p db > backup.sql,但是这样备份 InnoDB 表的时候,会锁表,备份的时候业务没法读写,影响线上业务。

正确的做法是加--single-transaction参数,用事务来备份,不会锁表,备份的时候业务还能正常运行,完全不影响。

操作代码:

# 备份整个数据库,不锁表,同时记录binlog位置,方便做主从mysqldump-uroot-p--single-transaction --master-data=2--all-databases>all_db_backup.sql# 备份单个数据库mysqldump-uroot-p--single-transaction mydb>mydb_backup.sql# 还原备份mysql-uroot-pmydb<mydb_backup.sql

说明:
--single-transaction是针对 InnoDB 表的,它会开启一个事务,在事务里导出所有数据,这样就不会锁表,备份的时候业务完全不受影响,--master-data=2会把备份的时候的 binlog 位置记录下来,方便你做主从复制,非常实用。

技巧 22:Nginx 日常运维,改配置前先测试

Nginx 的配置,改完之后,千万不要直接 reload,万一配置写错了,Nginx 就挂了,线上服务就断了。正确的做法是,先测试配置是否正确,没问题了再 reload。

操作代码:

# 测试Nginx配置是否正确nginx-t# 如果输出ok,再重载配置nginx-sreload# 或者用systemctl reload nginx

输出示例:

nginx: configuration file /etc/nginx/nginx.conf test is successful

说明:
这个是 Nginx 运维的基本操作,但是很多新手容易忘,改完配置直接 reload,结果配置写错了,比如少了个分号,Nginx 启动失败,线上服务断了,影响很大,所以一定要先测试,没问题了再重载。

技巧 23:Redis 日常运维,内存清理与持久化

Redis 是常用的缓存,日常运维的时候,经常要查看内存,清理过期键,手动触发持久化,这些技巧能帮你更好的管理 Redis。

常用操作代码:

# 查看Redis的内存使用情况redis-cli info memory# 清理所有过期的键redis-cli--scan--pattern"*"|xargsredis-cli del# 手动触发RDB持久化,后台备份,不阻塞redis-cli bgsave# 手动触发AOF重写,缩小AOF文件的大小redis-cli bgrewriteaof

说明:
Redis 内存满了的时候,你可以用这个命令清理不用的键,释放内存,bgsave是后台执行的,不会阻塞 Redis 的业务,bgrewriteaof会重写 AOF 文件,把里面的冗余命令去掉,缩小 AOF 的大小,节省磁盘空间。

技巧 24:用iftop快速查看网络吞吐量,定位带宽跑满的原因

服务器带宽突然跑满了,你不知道哪个 IP 在占带宽,这个时候用iftop,它能实时显示每个连接的发送和接收流量,一眼就找到流量大户。

操作代码:

# 安装iftopyuminstalliftop-y# 查看eth0网卡的流量iftop-ieth0

说明:
iftop 的界面里,会显示每个连接的源 IP、目标 IP,以及发送和接收的流量,排序是按流量从大到小,你一下就看到哪个 IP 在占你的带宽,比如是不是有人在爬你的网站,或者是不是备份的时候流量太大了,快速定位。

技巧 25:Rsync 增量同步文件,断点续传与排除文件

Rsync 是文件同步工具,比 scp 好用太多了,它支持增量同步,只传变化的部分,还支持断点续传,排除文件,同步大文件或者很多文件的时候,非常实用。

操作代码:

# 同步本地的代码目录到远程服务器,排除.git和日志文件,显示进度rsync-avzP--exclude=.git--exclude=logs/ /local/project/ root@remote:/opt/project/# 断点续传大文件,比如传了一半断了,重新执行这个命令就行,接着传rsync-Pbig_backup.tar.gz root@remote:/tmp/

参数说明:

  • a:归档模式,保留文件的权限、时间等所有属性

  • v:详细输出,显示同步的文件

  • z:压缩传输,节省带宽

  • P:断点续传,同时显示进度

  • --exclude:排除不需要同步的文件,比如.git、node_modules、日志这些,不用同步过去,节省时间

说明:
比如你部署代码,或者备份文件,用 Rsync,比 scp 快太多了,增量同步,只传变化的文件,大文件断了也不用重新传,接着来,非常方便。

技巧 26:各种压缩格式的高效用法,快速打包解压

打包解压是日常常用的操作,很多人只会tar zcvf,其实不同的压缩格式,速度和压缩率不一样,根据你的需求选,还有批量解压的技巧。

常用操作代码:

# tar.gz,速度快,常用的格式tarzcvf backup.tar.gz project/tarzxvf backup.tar.gz# tar.xz,压缩率高,适合要存很久的备份tarJcvf backup.tar.xz project/tarJxvf backup.tar.xz# zip,和Windows交互常用zip-rbackup.zip project/unzipbackup.zip# 批量解压当前目录下所有的tar.gz文件find.-name"*.tar.gz"-exectarzxf{}\;

说明:
如果你要快速打包,用 gzip 就行,速度快;如果你要压缩的很小,节省空间,用 xz,压缩率高,但是慢一点;批量解压的那个命令,能帮你一次性解压一堆压缩包,不用一个个手动解压。

技巧 27:SSH 端口转发,安全访问内网服务

很多内网的服务,比如 MySQL、Redis,为了安全,只绑定了 [127.0.0.1](127.0.0.1),不对外暴露,你本地没法直接访问,调试的时候很麻烦。这个时候,用 SSH 的端口转发,不用改服务的配置,就能本地访问内网的服务,非常安全。

操作代码:

# 把本地的3306端口,转发到远程服务器的3306端口ssh-L3306:127.0.0.1:3306 root@remote-server

然后,你本地就可以直接连接了:

mysql-h127.0.0.1-P3306-uroot-p

说明:
这样,你不用把 MySQL 的bind-address改成 [0.0.0.0](0.0.0.0),不用开外网的 3306 端口,非常安全,所有流量都是通过 SSH 隧道加密的,调试的时候太方便了,不管是 MySQL、Redis、还是内网的 Web 服务,都能用这个方法访问。

技巧 28:一键修改 Linux 时区,解决时间不对的问题

很多服务器装完系统,默认的时区是 UTC,时间比北京时间晚 8 小时,导致日志时间不对,定时任务执行时间不对,很多新手不知道怎么改,其实一条命令就搞定了。

操作代码:

# CentOS/RHEL 7+ 通用timedatectl set-timezone Asia/Shanghai# 通用的方法,所有版本都能用ln-sf/usr/share/zoneinfo/Asia/Shanghai /etc/localtime# 验证时间是否正确date

输出示例:

Wed Jun 11 15:30:00 CST 2026

说明:
执行完,时间就变成正确的北京时间了,CST 就是中国标准时间,非常简单,很多新手搞半天,其实就一条命令的事。

技巧 29:Firewalld 快速开放端口,配置防火墙

很多人配置防火墙,还在改 iptables 的配置文件,非常麻烦,现在的系统都用 Firewalld 了,一条命令就能开放端口,永久生效,不用重启。

操作代码:

# 开放80端口,永久生效firewall-cmd --add-port=80/tcp--permanent# 开放3306端口,只允许192.168.1.0/24这个网段访问,更安全firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept'--permanent# 重新加载配置,生效firewall-cmd--reload# 查看所有开放的端口firewall-cmd --list-ports

说明:
Firewalld 的命令非常简单,不用重启服务,reload 一下就生效了,而且 rich rule 能帮你做更复杂的规则,比如限制只有内网的 IP 才能访问 MySQL,不用把 3306 暴露到公网,非常安全。

技巧 30:用 Smem 和 Lsof 排查内存泄漏与句柄泄漏

应用运行时间长了,内存越来越高,怀疑内存泄漏?或者打开文件数越来越多,怀疑句柄泄漏?这两个工具能帮你快速排查。

操作代码:

# 安装smem,查看进程的真实内存使用yuminstallsmem-y# 查看所有进程的内存,PSS是真实的物理内存,排除共享内存的干扰smem-t-k-u

说明:
Top 里的 RES 内存,是包含共享内存的,不准,比如很多进程共享了同一个库,Top 会把这个内存算到每个进程里,导致加起来比实际内存大很多。而 Smem 的 PSS 内存,是把共享内存分摊到每个进程,能真实的反映每个进程用了多少物理内存,排查内存泄漏的时候非常准。

然后排查句柄泄漏:

# 查看某个进程的打开文件数,是不是越来越大lsof-p<进程PID>|wc-l# 查看系统整体的句柄使用情况cat/proc/sys/fs/file-nr

说明:
句柄泄漏的话,进程的打开文件数会越来越大,直到超过系统的限制,就会报错too many open files,用这个命令,你就能监控进程的打开文件数,提前发现问题,排查泄漏。


写在最后

以上就是我整理的 30 个 Linux 运维实用技巧,这些都是我在多年的工作中,一个个踩坑踩出来的经验,每一个都能在日常工作中帮你节省时间,解决问题。

熟练掌握这些技巧,你就能搞定大部分的软件安装、服务管理、故障排查的工作,不用再遇到问题就百度,效率提升一大截。建议你收藏这篇文章,平时工作中遇到问题,翻出来看看,就能快速解决。

希望这些技巧能帮到你,如果你有其他的实用技巧,也欢迎在评论区分享。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 21:34:02

SystemVerilog 类中能否定义 wire 和 reg?

一、直接答案不能。 SystemVerilog 的 class 中不允许定义 wire 和 reg 类型变量。二、根本原因&#xff1a;两个世界的区别SystemVerilog 的数据类型分为两大阵营&#xff1a;类别类型用途综合性硬件域&#xff08;net/var&#xff09;wire, tri, reg, logic, bit (部分)描述实…

作者头像 李华
网站建设 2026/6/11 21:30:53

保姆级教程:用 OpenClaw 自动化日报周报,每天省 40 分钟

写日报周报真的又累又费时间&#xff0c;尤其是数据分散在 CRM、Excel、聊天记录等多个地方&#xff0c;手动复制粘贴、核对计算&#xff0c;不仅效率低下&#xff0c;还容易出错。我自己粗算过&#xff0c;光是这一项每天就要浪费四十多分钟。 本文将手把手教你如何用 OpenCla…

作者头像 李华
网站建设 2026/6/11 21:30:25

MSC8157高速接口AC时序解析:从DDR3到PCIe的设计与调试实战

1. 项目概述&#xff1a;高速接口设计的“交通规则”在硬件工程师的日常里&#xff0c;数据手册中的电气与AC时序章节&#xff0c;就像是城市交通法规。它不告诉你车怎么造&#xff0c;但严格规定了每辆车&#xff08;信号&#xff09;在路上&#xff08;传输线&#xff09;该怎…

作者头像 李华
网站建设 2026/6/11 21:27:55

基于 Harmony 6.0 应用的家庭财务规划助手实现

基于 Harmony 6.0 应用的家庭财务规划助手实现 前言 家庭财务是每个家庭成长路上的关键命题——买房、教育、养老、应急金&#xff0c;每一项都需要科学规划。一款好的家庭财务规划应用要把"家庭资产 / 月度预算 / 投资组合 / 财务目标"四件事在一屏内全部铺到。Ha…

作者头像 李华