当前位置: 首页 > news >正文

技术演进中的开发沉思-121Linux命令篇:系统设置命令(下)

今天继续聊 Linux 系统设置里的那些 “调试手艺”。这些命令不像ls那样天天见,却像医生的听诊器、电工的万用表,关键时刻能帮系统 “看病”“接线”,让它从 “别扭” 变 “顺手”。我还是用当年踩过的坑、摸过的门道,把这些命令揉进生活场景里,希望不管你是刚碰 Linux 的新手,还是和我一样的老程序员,都能从这些文字里找到点 “哦,原来是这样” 的共鸣。

一、modinfo

有次我从网上下载了一个显卡模块,文件名是nvidia.ko,却不知道它支持什么参数、是谁编译的 —— 万一装错了把系统搞崩就麻烦了。老同事教我输modinfo nvidia.ko,屏幕上立刻跳出一行行信息:author: NVIDIA Corporation(作者是英伟达)、description: NVIDIA Linux x86 Kernel Module(英伟达的 Linux 模块)、parm: nvrm_debug:int(支持调试参数)—— 就像拿到了产品说明书,心里一下子有底了。

modinfo是 Linux 模块的 “说明书阅读器”:-a看是谁做的(作者),-d看是干什么用的(描述),-p看能调哪些参数(比如显卡的调试级别、显存大小)—— 就像买个新电器,先翻说明书,知道怎么用、注意什么,才不会用坏。

我后来装任何模块前,都会先跑modinfo,比如装 Wi-Fi 模块看支持的信道,装声卡模块看支持的采样率。技术这东西,不怕不懂,就怕不看 “说明书”——modinfo给了我们看懂模块的钥匙。

二、modprobe

早年用insmod装模块,总要先记着它依赖哪些其他模块,比如装wireless.ko,得先装cfg80211.ko,漏装一个就报错。直到用了modprobe,才算解放了双手 —— 它会照着depmod画好的 “线路图”,自动把所有依赖模块装齐,装完还能把不用的模块卸了(-r参数)。

modprobe是模块的 “自动电工”:你说 “装 Wi-Fi 模块”,它先查线路图(modules.dep),知道要先装无线配置模块,再装 Wi-Fi 驱动,一步到位;你说 “卸了不用的声卡模块”,它会先看有没有程序在用,没用就安全卸掉 —— 就像电工按图纸接线,还把多余的线收得整整齐齐。

我现在维护服务器,装驱动都用modprobe -v,看着它一行行列出装了哪些模块,心里踏实。技术的进步,就是把 “手动接线” 变成 “自动布线”,让我们少走弯路。

三、mouseconfig

那已经是很久很久的事了,我用一台老电脑跑 X Window,鼠标是二键的,在图形程序里不能中键粘贴 —— 调试画图软件时,复制个坐标都要输半天。后来在 Red Hat 里找到mouseconfig,选了--emulthree参数,把二键鼠标模拟成三键(按左右键当中键),一下子解决了问题。

mouseconfig是鼠标的 “调试向导”:--device /dev/ttyS0指定鼠标接串口 1,--expert手动选鼠标型号,--test先试效果不保存 —— 就像给鼠标找 “适配器”,不管是串口鼠标、USB 鼠标,都能调得好用。

现在的系统能自动识别鼠标,但我总记得当年用mouseconfig调试的日子:技术有时候很简单,一个参数就能解决大麻烦,关键是知道去哪里找这个参数。

四、ntsysv

刚学 Linux 时,用chkconfig设服务启动,总记不住命令格式(chkconfig --level 3 httpd on)。直到发现ntsysv—— 弹出个互动界面,用方向键选服务,空格键勾 “开机启动”,像在编辑公司的值班表,直观又不容易错。

ntsysv是 Red Hat 的 “服务开关面板”:--level 3只调运行级别 3 的服务,--back加个 “返回” 按钮方便反悔 —— 就像给服务装了个 “可视化开关”,不用记复杂命令,新手也能上手。

当年我给实验室服务器设 Apache 和 MySQL 开机启动,就是用ntsysv勾的选项。技术工具的好,就在于 “把复杂的事变简单”——ntsysv做到了这一点。

五、passwd

刚工作时,我负责给新同事开 Linux 账号,用passwd lisi给李四设初始密码,还会用passwd -l lisi把账号锁了,等他自己改密码再解锁(passwd -u)。普通用户只能用passwd改自己的密码,改的时候还要输旧密码,很安全。

passwd是系统的 “密码管家”:-d清空密码(让用户第一次登录必须改),-s看密码状态(比如过期时间),-k只让过期后改密码 —— 就像家里的钥匙管理员,谁能改密码、怎么改,都有规矩。

我现在还会定期用passwd -s查用户密码状态,避免有人用过期密码登录。安全这东西,不怕麻烦,就怕没规矩 ——passwd给密码管理定了规矩。

六、pwconv & pwunconv

早年 Linux 的用户密码存在/etc/passwd里,任何人都能看(虽然是加密的),总觉得不安全。用pwconv一跑,密码就被 “搬” 到了/etc/shadow里 —— 只有 root 能读,passwd里的密码位变成了 “x”,像把明锁换成了暗锁。

pwconvpwunconv是密码的 “锁匠”:pwconv是 “换暗锁”,pwunconv是 “换回明锁”(一般不用,除非要兼容老系统)—— 就像家里的锁坏了,换个更安全的,需要时再换回来。

当年系统安全检查,师傅让我用pwconv加固所有用户密码,现在想起来,还是觉得这个命令设计得巧妙:不改变用户使用习惯,却悄悄提升了安全。

七、rdate

2000 年实验室的服务器没有 NTP 服务,时间总比实际慢半小时,导致日志时间混乱。老工程师教我输rdate -s time.server.com,从时间服务器同步时间 —— 就像给手表对时,一下子准了。

rdate是系统的 “手动对时工具”:-p先看远程时间对不对,-s同步到本地 —— 就像打电话问 “现在几点”,然后把自己的表调好。

现在的系统都用ntpd自动同步时间,但rdate让我想起:技术的早期,很多功能都是 “手动但有效” 的 —— 哪怕是简单的时间同步,能解决问题就是好工具。

八、resize

早年用 telnet 远程登录服务器,终端窗口默认很小,ls -l列出的文件名要换行,看着费劲。输resize -s 40 120,把终端调成 40 行 120 列,一下子能看清所有内容 —— 就像把小窗户换成大窗户,视野开阔多了。

resize是终端的 “尺寸扳手”:-c用 C Shell 的命令调,-u用 Bourne Shell 的命令调 —— 不管你用什么 Shell,都能把终端调舒服。

我现在远程维护服务器,还会先用resize调窗口大小。技术有时候很细节,但细节做好了,用起来就顺手多了。

九、rmmod

装错声卡模块时,insmod装了个旧版本,导致没声音。这时候rmmod old_sound.ko就能把旧模块删掉,再装新的 —— 就像电工把接错的电线拆掉,重新接对的。

rmmod是模块的 “拆线工具”:-a把所有不用的模块都删掉(比如装新模块后,旧的依赖模块),-s把删除记录写到系统日志 —— 就像拆线时把多余的线收走,还记下来拆了哪些。

当年我不小心删了正在用的网卡模块,导致远程连接断开,只能去机房重连 —— 这个教训让我知道:删模块前,一定要用lsmod确认没人在用。技术操作,谨慎总是没错的。

十、rpm

有次我第一次在 Red Hat 上装 MySQL,下载的是mysql-3.23.rpm,输rpm -ivh mysql-3.23.rpm,看着屏幕上的 “#” 进度条走完,软件就装好了 —— 比编译tar.gz文件省事多了。

rpm是 Linux 的 “软件快递员”:-i是 “收快递”(安装),-e是 “退快递”(卸载),-U是 “换快递”(升级),-q是 “查快递单”(查询)—— 就像收发快递一样,简单直观。

我后来装 Apache、PHP 都用 rpm,甚至自己打包 rpm 包给团队用。rpm 的出现,让 Linux 软件安装从 “复杂的编译” 变成 “简单的命令”,大大降低了 Linux 的使用门槛。

十一、set

写 Shell 脚本时,我总用set -e—— 让脚本遇到错误就停,避免错误扩大(比如变量没定义还继续执行);调试脚本时用set -x,看每一步执行的命令,像给脚本装了个 “监控摄像头”。

set是 Shell 的 “模式开关”:-a标记修改的变量供导出,-C不让文件覆盖已存在的,+x关掉调试模式 —— 就像调收音机的模式,想要什么功能,就把对应的开关打开。

我现在写的每一个 Shell 脚本,开头都会加set -euo pipefail,把 Shell 设成 “严格模式”。技术的严谨,就是从这些小开关开始的。

十二、setconsole

早年修服务器,主板没接显示器,只能用串口接终端机。输setconsole serial,系统就把输出转到串口 —— 就像把电视信号从 HDMI 转到 AV 口,用终端机也能操作。

setconsole是系统的 “显示切换器”:video用显卡接显示器,ttya用串口 1,ttyb用串口 2—— 不管你有什么显示设备,都能接上。

现在的服务器大多支持远程管理(IPMI),但setconsole让我想起:当年没有远程管理时,串口终端是修服务器的 “救命稻草”。

十三、setenv

早年用 csh(tsch 的前身)写脚本,设置环境变量要用setenv PATH "$PATH:/opt/bin",不像 bash 用export—— 就像不同品牌的笔,写法不一样,但都能写字。

setenv是 tsch 的 “环境传声筒”:和 bash 的export功能一样,都是给程序递 “纸条”,告诉它们哪里找工具。

我现在很少用 csh 了,但还记得setenv的写法 —— 技术的细节,有时候会记一辈子。

十四、setup

刚装完 Red Hat 系统,总要跑一遍setup—— 调键盘布局、设鼠标、开 Apache 服务、装声卡、选时区,一站式解决所有基础设置,像系统的 “控制面板”,不用到处找命令。

setup是 Red Hat 的 “设置大管家”:把键盘、鼠标、服务这些分散的设置,集中到一个图形界面里,新手也能轻松上手。

当年我帮同学装 Linux,就是用setup帮他调好所有设置,看着他能用 X Window 画图,心里很有成就感。技术工具的终极目标,就是让每个人都能用上。

十五、sndconfig

2001 年我给朋友的电脑装 Linux,声卡没声音,跑sndconfig,它自动检测到是 “Sound Blaster 16”,选型号后重启,声音就有了 —— 不用手动改/etc/modules.conf,太方便了。

sndconfig是声卡的 “诊断仪”:--noautoconfig不自动配置,--noprobe不检测,适合老声卡 —— 就像医生给病人看病,先检测,再对症下药。

现在的 Linux 用alsa-utils管理声卡,但sndconfig让我想起:当年能自动检测硬件的工具,都是 “黑科技”。

十六、SVGATextMode

早年用没有图形界面的服务器,文字模式分辨率太低,看代码要翻页。用SVGATextMode 1024x768,把分辨率调成 1024x768,字体也调大,一下子舒服多了 —— 就像把黑白电视的画质调清晰。

SVGATextMode是文字模式的 “画质旋钮”:-t用自己的配置文件,-v检查显示频率 —— 不管是 CRT 显示器还是终端机,都能调出舒服的显示效果。

现在很少用纯文字模式了,但SVGATextMode让我想起:在没有图形界面的年代,程序员是怎么把 “黑底白字” 调得好用的。

十七、timeconfig

刚装 Linux 时,时区默认是 UTC,日志时间比北京时间慢 8 小时。用timeconfig选 “Asia/Shanghai”,再勾--utc(告诉系统硬件时钟是 UTC),时间就对了 —— 就像给手表调时区,走到哪里都准。

timeconfig是时区的 “校准工具”:互动界面选时区,简单直观,比手动改/etc/localtime方便多了。当年远程协作时,因为时区不对,同事的日志时间和我的差 8 小时,用timeconfig同步后才解决。技术上的 “差一点”,有时候会导致大麻烦。

十八、ulimit

早年服务器上,普通用户跑脚本开了太多进程,导致系统卡机。用ulimit -u 100给每个用户设 “最多开 100 个进程”,就像给每个人设 “预算”,避免超支。

ulimit是系统资源的 “预算员”:-n设最多开多少文件,-t设最多用多少 CPU 秒,-c设 core 文件最大多大 —— 就像给程序定 “消费上限”,防止浪费资源。

我现在给服务器设ulimit,会用-H设硬限制(管理员定的上限),-S设软限制(用户能临时超一点),既灵活又安全。技术的管理,就是 “有松有紧”。

十九、unalias

当年设了个alias ll='ls -l',后来想改ll='ls -la',先输unalias ll删掉旧别名,再设新的 —— 就像用橡皮擦把旧笔记擦掉,写新的。这unalias是别名的 “清理工具”:-a把所有别名都删掉,回到默认状态 —— 就像把便利贴全撕掉,重新贴。我有时候调试别名冲突,会用unalias -a清空,再一个个设,很方便。技术上的 “推倒重来”,有时候是最快的解决办法。

二十、unset

写 Shell 脚本时,临时变量temp_dir="/tmp/test"用完了,用unset temp_dir删掉,避免影响其他脚本 —— 就像用完工具后放回工具箱,保持环境干净。这unset是变量的 “清洁剂”:-f只删函数,-v只删变量 —— 不会误删其他东西。我现在写脚本,结尾都会unset临时变量,养成 “用完清理” 的习惯。技术上的 “整洁”,能减少很多隐藏的问题。

最后小结:

整理这些命令时,我总想起当年在机房里,对着终端一个个试命令的场景 —— 没有图形界面,没有搜索引擎,全靠手册和前辈的经验,错了就重来,对了就记在笔记本上。现在的 Linux 越来越易用,很多命令被图形界面替代,但那些命令背后的 “调试思维”—— 看说明书(modinfo)、按规矩来(passwd)、用完清理(unset)—— 却从来没过时。

未完待续

http://www.dtcms.com/a/434889.html

相关文章:

  • 深入理解 JavaScript 闭包与作用域
  • 【操作系统-Day 38】LRU的完美替身:深入解析时钟(Clock)页面置换算法
  • Linux 入门指南:从零掌握基础文件与目录操作命令
  • 高职院校高水平专业建设网站wordpress的windows
  • 网络原理-HTTPS
  • 马鞍山网站建设文如何查网站注册信息
  • 郑州机械网站建设memcached wordpress 慢 卡
  • Java数据结构:ArrayList与顺序表2
  • python系统设计2-选题
  • 做网站表示时间的控件用哪个wordpress 新窗口打开文章
  • Phase 与 Invisibility 的区别
  • MATLAB学习文档(二十三)
  • 基于php网站开发手机官网
  • 2018 年真题配套词汇单词笔记(考研真相)
  • Portainer实战:轻松搭建Docker可视化管理系统
  • PostgreSql FDW 与 DBLINK 区别
  • 若依ry替换mybatis为mybatis-plus
  • 深圳做微商网站企业网站托管收费标准
  • 怎样做影视网站不侵权站群系统哪个好用
  • 项目中HTTP协议处理部分
  • 二元锦标赛:进化算法中的选择机制及其应用
  • 2026新选题-基于Python的老年病医疗数据分析系统的设计与实现(数据采集+可视化分析)
  • Linux权限核心:chmod命令终极指南(文字与数字法详解)
  • 太原网站建设总部地址青岛seo推广专员
  • 藏语自然语言处理入门 - 4 找相似的句子
  • ubuntu 环境
  • php网站开发 多少钱服务器网站建设软件有哪些
  • Python 图像中矩形四角二维坐标和归一化一维坐标相互转换
  • 做电商网站有什么用万网网站建设教程
  • 网站 设计风格wordpress 加链接地址