Linux运维不难!十个常用命令一文讲明白

内容分享9小时前发布
0 0 0

会那十条命令,问题能快准稳地收尾。昨天晚上生产库的 mysqld 跳了,服务重启后就恢复了,日志也翻清楚了,最后把老数据搬到备用盘,权限修好,监控又上线。整个过程没什么花哨的,就是靠一些常用命令一步步把事情理清了。

Linux运维不难!十个常用命令一文讲清楚

事情发生在公司一台数据库服务器上。环境是典型的 Linux 生产机,服务进程是 mysqld,日志在 /var/log/mysqld.log,数据盘和系统盘分开挂载。目标很明确:尽快让服务回到可用状态,同时查清缘由,避免短期内重现。参与者是值班的运维和我,分工很直接——我看日志和进程,他负责磁盘和备份操作。

先说结尾的动作:用 systemctl 把 mysqld 启动起来,然后开机自启也设置好了。命令就是直白的 systemctl start mysqld,一看状态用 systemctl status mysqld,输出里有 PID、活跃状态和最近的日志摘录。启动没问题后,执行 systemctl enable mysqld,把开机自启打上。顺带用 systemctl restart 做了重启验证,确认不会因配置变动卡住。别小看这些指令,许多人只会 start/stop,不会看 status 的详细信息,常常漏掉关键的 unit 日志。

Linux运维不难!十个常用命令一文讲清楚

退回一步,是日志把线索给了我们。用 tail -n 200 -f /var/log/mysqld.log 把最近的日志拉着看,配合 grep 找错误关键词,列如 grep -i “error” /var/log/mysqld.log -n。遇到不在普通日志里的服务,journalctl -u mysqld –since “2 hours ago” 也很管用。我们就是在日志里看到一串 I/O 错误和 “cannot open” 的提示,说明服务在启动时无法访问某些文件。日志定位完成后,把相关时间点的上下文都翻出来,必要时把 grep 的上下文行用 -C 指定,这样能把前后几行也看清楚。

再往前看,进程和资源状态也得核实。用 ps aux | grep mysqld 找出进程 PID,确认进程有没有挂起。top 或 htop 用来看瞬时 CPU/内存占用,按 M、P 可以排序,发现 mysqld 占用异常时就要进一步诊断。遇到僵尸进程或无法退出的进程,会用 kill -15 PID 尝试优雅停止,必要时用 kill -9 PID 强制。实践里先发 SIGTERM,再看是否退出,再上 SIGKILL,很少跳过这个顺序。ps 输出别忘了看进程归属用户和启动路径,有时候权限和工作目录的异常也能说明问题。

Linux运维不难!十个常用命令一文讲清楚

磁盘空间常常是麻烦源头。这次日志里有 I/O 错误,也同时用 df -h 检查了挂载点使用率。df 显示根分区空闲低于 5%,数据盘还好。用 du -sh /var/lib/mysql/* 检查各库目录占用,发现某个表的数据文件意外暴涨。定位大文件时,find / -type f -size +500M -exec ls -lh {} ; 很直接。处理方式分两步:先把不重大的历史备份用 rsync 或 scp 搬到备用盘,再清理释放空间。rsync -avz –progress /data/old_backups/ backup:/mnt/backup/ 比 scp 更适合大量、可断点同步的场景,用 –delete 可以保持目标和源一致,注意先确认命令再执行。我们把几周前的备份迁走后,系统盘空间回升,I/O 错误消失一半。

权限问题也常会弄懵人。启动报错里有 “permission denied” 的字样,就要看文件和目录的属主属组。ls -al /var/lib/mysql 能快速看清每个文件的权限和归属。需要把文件归回 mysql 用户时,用 chown -R mysql:mysql /var/lib/mysql;要调整可执行权限,用 chmod 755 /usr/bin/some_tool。数字权限别死记,简单理解:7=读写执行,5=读执行。遇到配置文件权限太开导致安全告警,也要收紧,列如 chmod 640 my.cnf 并把属主设为 root。别用 chmod 777 作为临时方案,那会带来别的问题。

Linux运维不难!十个常用命令一文讲清楚

看文件内容时,cat、less、head、tail 都是常用工具。cat 一口气输出整个文件,适合小文件;less 翻阅长日志用起来更舒服,搜索用 /关键词。head -n 100 把前面几行抓出来,tail -n 200 把最新的行看清。把 tail -f 和 grep 配合可以实时过滤感兴趣的行,列如 tail -f /var/log/mysqld.log | grep –line-buffered -i error,这样监控启动时的错误输出很方便。遇到二进制或者乱码文件,file 命令先确认文件类型再决定怎么查看。

目录导航最基础但也是最容易出错的一块。用 pwd 随时确认当前路径,cd .. 返回上一级,cd – 切回上一次的目录,cd ~ 回到家目录。列目录常用 ls -alh,可以看到隐藏文件和人性化大小。遇到大量文件时,ls -ltr 可以按时间倒序排列,方便找到最近改动的文件。许多误操作来自不知道自己在哪个目录,pwd 相当于一个安全检查。

Linux运维不难!十个常用命令一文讲清楚

文件传输和同步的细节也不能忽视。scp user@host:/path/file /local/path 是直接复制一个文件,简单快速。对整个目录或需要增量同步的,rsync 更高效,常见的写法 rsync -azP /src/ user@dest:/dst/,-P 显示进度并允许断点续传。把它放进定时任务中做日常备份,能省许多事。设置 cron 时要用绝对路径,环境变量别依赖交互 shell,日志重定向到文件里,这样出问题能回溯。

除了单条命令的用法,常见的组合也很重大。列如在排查时,先用 df -h 看磁盘,再 du -sh 准确目录占用,找到可移动的旧备份后用 rsync 同步,然后用 systemctl restart 服务验证。日志排查一般是 tail -f 和 grep 找到异常关键词,再配合 ps/top 看进程状态,最后查看文件权限确定读写问题。有一次我们就是按这个顺序,先把占满磁盘的老日志搬走,接着修权限,然后重启服务,整个过程没有盲动。

Linux运维不难!十个常用命令一文讲清楚

关于 systemctl,除了 start/stop/restart,还有 is-enabled 和 mask 的操作值得了解。systemctl enable 一次性保证下次启动服务自动起来,systemctl disable 撤销,systemctl mask 防止被意外启动。查看服务日志除了 status,也可以直接用 journalctl -u 服务名,这样能看到与 systemd 相关的全部输出。调试时把日志级别临时调高,有时候能看到平时被屏蔽的警告。

在日常运维里,这些命令的掌握程度直接影响响应速度。细节操作里要注意备份和验证,任何删除前都要先确认目标,尤其是在生产环境。平时把常用命令记成模板,遇到故障按模板去做,省得临时想不起参数。顺便提一句,许多人害怕命令行,实则熟练之后会发现它比图形界面来得直接和可控。

Linux运维不难!十个常用命令一文讲清楚

© 版权声明

相关文章

暂无评论

none
暂无评论...