1. 内容整体设计与思路拆解
1.1 为什么是银河麒麟,为什么从命令基础开始
我最早接触银河麒麟是在一套国产化替代项目的验收现场,客户要求所有运维人员必须能脱离图形界面完成服务器日常巡检。当时很多人心里打鼓:国产操作系统到底能不能像CentOS那样好使?实际用下来我的结论是,银河麒麟与主流Linux发行版确实存在差异,但底层逻辑完全相通,甚至可以说它就是一套针对国内硬件环境做了深度适配的Linux。换句话说,学会了Linux命令,银河麒麟基本就能上手;反过来,如果你在银河麒麟上面把命令练熟了,换到任何Linux发行版也都能无缝衔接。
这篇内容面向三类人:第一类是刚接触国产操作系统的运维新人,第二类是信创项目里需要做交付实施的技术支持,第三类是学校里拿银河麒麟做实验的在校学生。我不会讲太深的内核原理,而是把日常使用中出现频率最高、最容易被卡住的基础命令一次性讲透。所有命令我都亲手在银河麒麟桌面版和服务器版上跑过,有些坑只有真机操作才会冒出来,这些我都会在文章里单独标出来。
学命令这件事,最大的误区是拿着一份“Linux命令大全”从头背到尾。命令是工具,不是考点。你背得再多,不知道什么场景下该用哪一条,等于白背。所以这篇文章不会按字母表罗列命令,而是按照“日常操作一台服务器时你会遇到的任务”来组织内容。这样你在实际工作中遇到某个需求,能立刻对号入座,找到该用的命令。
1.2 银河麒麟系统的版本差异与命令兼容性
银河麒麟有两个大的系列:桌面版和服务器版。桌面版面向办公场景,默认装好了图形界面和一些办公软件;服务器版面向数据中心场景,默认是精简安装,很多图形组件不装。命令基础这部分,两个版本差异不大,但有几个需要注意的地方。
第一个差异是软件包管理器。银河麒麟主要基于Debian体系,使用apt和dpkg这两个核心工具,这一点和Ubuntu、Deepin一脉相承。服务器版V10 SP3的ISO安装包有ARM架构版本,也有x86版本,两条架构的软件源配置方式相同,但部分软件包源不一样,要特别注意架构匹配的问题。
第二个差异是系统服务管理方式。银河麒麟使用systemd来管理服务,开机自启动、查看服务状态、启停服务都通过systemctl命令完成。这和使用SysVinit的旧版Linux不太一样,我见过有同事拿service命令去启服务,结果在银河麒麟上提示找不到服务,其实就是没有用对工具。
第三个差异是默认Shell。银河麒麟默认使用bash,但系统自带了一个增强型的bash配置,增加了命令补全和高亮提示。我可以负责任地告诉你,把这套配置摸熟之后,效率真的能提升不少。另外银河麒麟还内置了国产终端工具,在终端里右键就可以快速打开“终端设置”,调整字体大小、背景色、透明度,这个细节比较贴心。
我建议初学者在学命令之前,先在桌面上打开终端工具,执行一下cat /etc/os-release,看看系统版本号。很多人出了莫名其妙的问题,后来一查才发现是架构或版本不对,导致软件源拉不到包。这算是我给的第一个小提醒。
1.3 命令学习的路径设计思路
我在培训同事的过程中,总结出一条比较高效的学习路径:先掌握“我是谁、我在哪、有什么”这三个基本问题,再学文件操作和文本处理,然后学用户权限和软件管理,最后学网络和服务管理。这其实对应了服务器日常维护的完整闭环。
“我是谁”对应身份查询命令,比如whoami、id;“我在哪”对应路径命令pwd;“有什么”对应目录列表命令ls。这三个问题搞清楚了,你就不会出现“文件明明在服务器上却找不到”这种尴尬。接下来文件操作命令cd、cp、mv、rm、mkdir是最常用的五个命令,必须做到肌肉记忆级别的熟练度。
文本处理是Linux命令的重点,因为服务器上的大多数配置都是文本文件,无论是网卡配置、软件源配置,还是服务配置文件,都需要用文本命令去查看和修改。cat、grep、sed、awk这四个命令我建议按顺序学,cat先能看,grep能过滤,sed能替换,awk能取列,层层递进,不需要一上来就啃《awk程序设计语言》。
用户权限和软件管理是运维中最常出问题的环节。很多初学者在银河麒麟上装软件,直接sudo apt install,遇到权限报错就懵了。其实理解了Linux的权限模型,大部分问题都能自己排查出来。网络和服务管理是进阶内容,但基础命令就那么几条,ip addr、ping、telnet、systemctl、ss,学会它们就足够完成日常巡检了。
这条路径设计背后的逻辑很简单:以任务驱动学习,用输出倒逼输入。每学一条命令,就想一想它在哪个场景下能被用上。如果这个命令在你的工作场景里根本用不到,可以先放一放,后面用到再补,效率反而更高。
2. 核心细节解析与实操要点
2.1 命令的“语法三要素”:命令本身、选项、参数
Linux命令看起来复杂,拆开看就三个部分:命令本身、选项、参数。命令本身是动词,选项是副词,用来修饰命令怎么执行,参数是名词,表示命令作用在哪个对象上。比如ls -l /etc,ls是命令,-l是选项,/etc是参数。
理解了这个结构,你就知道查手册的时候应该怎么查。比如tar -xzf file.tar.gz,如果不清楚-x、-z、-f各代表什么,可以去man tar里面查,而不是整条命令背下来。我自己带人的时候,最常问的一个问题就是:“如果以后 tar 的选项变了,你怎么应对?”答案不是靠记忆力,而是靠查手册的能力。
在银河麒麟里,命令格式与标准Linux一致。但有一些国产化适配过的命令,比如kylin-update、kylin-usbwriter,这些命令是发行版定制的,在通用Linux里面没有,需要使用man或--help自行查看帮助文档。
一个实用技巧是使用type命令来判断某条命令的类型。比如type ls会返回ls is aliased to 'ls --color=auto',说明你在终端里敲的ls其实是一个别名,真正执行的命令是带颜色的ls。搞清楚了这一点,你就明白为什么银河麒麟的ls输出默认带颜色,而在某些精简环境里没有颜色。
命令的选项有短选项和长选项两种写法。短选项是一个连字符加一个字母,比如-a;长选项是两个连字符加单词,比如--all。在银河麒麟里,绝大多数命令两种写法都支持,但少数命令只支持其中一种。我建议脚本里写长选项,可读性好;手敲命令用短选项,输入快。
2.2 核心文件与目录操作命令
文件与目录操作是Linux命令的基础,这部分我挑几个高频的来展开,并且说明每个命令背后常见的坑。
pwd查看当前所在目录。这个命令看似简单,但在写了复杂的Shell脚本之后,经常要用来确认脚本当前的工作路径。
cd切换目录。这里有三个特殊路径需要记牢:cd ~回到家目录,cd ..回到上级目录,cd -回到上一次所在目录。第三个cd -非常好用,我经常在两个目录之间来回操作,一条命令就能跳回上一个位置。
ls列出目录内容。常用组合是ls -lh,-l显示详细信息,-h以人类可读格式显示文件大小。银河麒麟默认的ls是带颜色的,目录是蓝色的,符号链接是青色的,可执行文件是绿色的。如果觉得颜色不对眼睛,可以unalias ls取消别名,回到无颜色的状态。
cp复制文件或目录。复制目录必须加-r参数,比如cp -r /opt/app /backup/app,否则会报omitting directory。还有一个容易踩坑的参数组合是cp -a,-a表示归档复制,保留文件的所有属性,包括权限、时间戳和所有者。在备份配置文件的场景下,我强烈建议用-a而不是-r,这样备份出来的文件权限和原文件一致,恢复的时候不会出权限问题。
mv移动或重命名。mv在同一文件系统内是原子操作,速度很快;跨文件系统移动时,实际上是先复制再删除,速度慢且耗时。移动目录不需要加-r,这点和cp不同。
rm删除文件或目录。删除目录要加-r,强制删除加-f,比如rm -rf /opt/test。这里必须强调一下,rm -rf是运维界的“双刃剑”,执行前一定要确认路径没有写错,尤其是不能出现rm -rf /*这种写法。我在生产环境踩过一次类似的坑,虽然最后恢复了数据,但过程极其痛苦。现在我的习惯是使用rm -i做交互式删除,或者把重要目录先改名而不是直接删除,给自己留一条后悔的退路。
mkdir创建目录。mkdir -p /a/b/c可以递归创建多级目录,如果中间层级不存在会自动创建,这个参数在脚本里非常实用。
touch创建一个空文件,或者更新文件的时间戳。判断一个文件是否存在,可以用touch /tmp/testfile && echo "exists"这样的组合写法。
file查看文件类型,这个命令能区分文本文件、可执行文件、压缩包、图片等。在处理一个未知格式的文件时,我习惯先file一下,再决定用什么命令处理。
2.3 用户、组与权限管理
银河麒麟的用户管理沿用了标准的Linux用户模型,核心概念包括UID、GID、家目录、登录Shell等。运维中遇到权限问题,多半是对这套模型理解不到位。
查看当前用户用whoami,查看用户详细信息用id,输出内容包括UID、GID和用户所属的附加组。新建用户用useradd或adduser,两者有区别:useradd是底层命令,参数灵活;adduser是一个Perl脚本,会交互式地创建家目录、设置密码,对初学者更友好。在银河麒麟上我建议用adduser,因为它在Debian体系下是经过封装的,用户体验好很多。
修改用户密码用passwd。如果当前用户是root或拥有sudo权限,可以直接指定用户名来修改别人的密码,比如sudo passwd username。新用户默认没有sudo权限,这一点很重要。很多初学者在银河麒麟上新建了一个用户,然后执行sudo命令,结果提示user is not in the sudoers file,这就是没有授权。解决办法是把用户加入 sudo 组:sudo usermod -aG sudo username。
权限相关的命令主要是chmod和chown。chmod修改权限,可以用数字法,比如chmod 755 file表示所有者可读可写可执行,组和其他人可读可执行;也可以使用符号法,比如chmod u+x file表示给所有者增加执行权限。数字法的原理是r=4,w=2,x=1,三个权限值相加即可。这一套一定要熟练掌握,因为很多软件安装包要求在安装前赋予某个文件执行权限,比如chmod +x install.sh。
chown修改文件所有者和所属组,常用格式是chown user:group file。注意修改目录及其内部所有文件的归属,需要加-R,比如chown -R www:www /var/www。chown的操作需要root权限或sudo权限,普通用户只能修改自己拥有的文件。
权限管理还有一个容易忽略的点是umask。umask 决定了新建文件的默认权限。银河麒麟默认umask是022,所以新建文件的权限是644,新建目录的权限是755。如果需要更严格的安全策略,可以修改umask为077,这样新建的文件只有所有者才能读写。
2.4 软件包管理与软件源配置
银河麒麟的软件包管理以apt和dpkg为核心,理解这两者的分工能帮你解决很多软件安装的问题。简单来说,apt是高级工具,负责从软件源拉取软件包并自动处理依赖关系;dpkg是底层工具,直接对.deb包进行操作,不做依赖处理。
日常使用频率最高的命令是这几个:
sudo apt update更新软件源缓存。修改过软件源配置文件之后,必须执行这一步才能生效。如果执行时出现网络错误或者GPG错误,多半是软件源配置有问题。
sudo apt install 软件名安装软件。推荐在安装前先执行apt search 软件名搜索一下仓库里有没有这个包,避免装错名字。
sudo apt remove 软件名卸载软件。如果想把软件的配置文件也一并清除,用sudo apt purge 软件名。
sudo apt upgrade升级所有已安装的软件包。注意服务器上的操作要谨慎,先备份再升级,升级后如果服务异常,至少可以回滚。
dpkg -i 包名.deb安装本地 .deb 包。如果安装过程中报依赖缺失,可以执行sudo apt -f install来修复依赖关系。
银河麒麟的软件源配置文件在/etc/apt/sources.list,另外/etc/apt/sources.list.d/目录下也可以放额外的源文件。默认配置已经指向了麒麟的官方源,一般不需要修改。但在内网环境或者离线环境下,可能需要配置本地的镜像源。
配置软件源时有一个小细节需要注意:银河麒麟服务器版V10 SP3的软件源配置项会根据系统架构区分ARM和x86,如果复制别人的配置时没有检查架构,极易出现“包找不到”或者“架构不匹配”的问题。可以通过dpkg --print-architecture查看当前系统的架构名称,x86架构通常输出amd64,ARM架构输出arm64。
2.5 网络配置与连接测试
服务器运维绕不开网络配置。银河麒麟和主流Linux一样,提供了ip命令来查看和管理网络接口,这是ifconfig的现代替代品。
ip addr查看所有网络接口的IP地址。输出结果里lo是回环接口,eth0或ens33是物理网卡。ip route查看路由表,ip route add default via 192.168.1.1可以添加默认网关。
修改IP地址有两种方式:临时生效和永久生效。临时生效直接执行sudo ip addr add 192.168.1.100/24 dev eth0,重启网络后失效;永久生效需要修改网络配置文件。银河麒麟使用网络管理器(NetworkManager)或者systemd-networkd来管理网络,具体取决于安装版本。桌面版默认用NetworkManager,可以用nmcli命令来配置网络。
例如设置一个静态IP:
sudo nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "223.5.5.5 114.114.114.114" sudo nmcli connection up eth0ping是网络连通性测试的基本命令,ping 网关地址可以判断本机和网关之间是否通。如果ping能通IP但ping不通域名,说明DNS解析有问题,可以检查/etc/resolv.conf文件。
telnet ip 端口可以用来测试某个端口是否对外开放。需要注意的是,新版银河麒麟默认不安装telnet客户端,需要先sudo apt install telnet。另外telnet只能测试TCP端口,不能测试UDP端口。
ss命令用来查看当前系统的网络连接状态,常用的参数组合是ss -tlnp,显示所有监听中的TCP端口以及对应的进程。当服务启动不了,怀疑端口被占用时,这条命令能很快定位到问题。
2.6 文本处理与vim编辑器
服务器上的大多数操作都离不开文本查看和编辑。查看文件内容用cat,但文件特别长的时候,cat会把整个文件内容刷屏,这时候建议用less命令分页查看,按空格翻页,按q退出,按/搜索关键字。
日志分析和配置读取最常用的是grep。基本用法是grep 关键字 文件名,比如grep ERROR /var/log/syslog。常用参数包括-i忽略大小写,-n显示行号,-r递归搜索目录。grep结合管道符使用威力巨大,比如ps aux | grep nginx可以过滤出和nginx相关的进程。
sed是流编辑器,主要用于文本替换。比如把配置文件里的旧IP替换成新IP:
sed -i 's/192.168.1.100/192.168.1.200/g' /etc/nginx/nginx.conf这里的-i参数表示直接修改文件,s是替换命令,g表示全局替换。执行前建议先不加-i执行一遍预览,确认输出无误后再真正写入文件。
awk擅长处理列,比如awk '{print $1}' file打印文件的第一列。在分析日志时,经常用awk提取IP、时间等字段。比如统计访问量最高的前十个IP:
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10这条命令组合了awk、sort、uniq和head,充分利用了Linux“一个命令做一件事,组合起来做复杂事”的设计哲学。
文本编辑方面,vim是Linux世界的事实标准。银河麒麟自带vim,执行vim /etc/hosts就能打开文件。初学者最容易踩的坑是不知道如何退出vim。先把这三个场景背下来:按i进入插入模式开始编辑,按Esc退出插入模式,按:wq保存并退出,按:q!不保存强制退出。这三个操作能覆盖九成以上的使用场景。
vim命令模式的几个核心键位:dd删除当前行,yy复制当前行,p粘贴,/关键字搜索,:%s/旧/新/g全文替换。这些足够应付日常的配置文件修改。如果你需要编辑大文件或者做复杂的多文件操作,建议后面再深入学习vim script和插件体系,但基础阶段守住这份就能活下去。
3. 实操过程与核心环节实现
3.1 实操场景:基于银河麒麟服务器的初始化配置
我从一个完整的运维场景出发,带着大家从零开始走一遍。假设现在有一台刚装好银河麒麟服务器版V10 SP3的机器,这台机器是ARM架构,需要完成基础环境初始化:创建用户、配置网络、安装常用软件、设置系统服务。
第一步,查看系统基本信息。执行以下命令确认系统版本、内核和架构:
cat /etc/os-release uname -a/etc/os-release文件记录了发行版的名称、版本号、ID等信息,执行后应该能看到NAME="Kylin"和VERSION="V10 SP3"这样的输出。uname -a输出内核版本和架构,确认是aarch64还是x86_64。
第二步,查看磁盘和内存使用情况。df -h查看磁盘分区使用率,free -h查看内存总量和剩余量。这两条命令在服务器巡检中每天都会用到,建议形成肌肉记忆。
df -h free -h第三步,创建日常使用的用户并设置sudo权限。直接使用root操作服务器的安全隐患比较大,建议创建专用运维账号:
sudo adduser ops sudo usermod -aG sudo ops su - ops切换用户后执行sudo whoami,如果输出root,说明sudo权限配置生效。这里有个小坑:刚创建的ops用户如果没重启终端,可能不会立刻识别到新加入的sudo组,需要退出重新登录一次。
第四步,配置静态IP。假设这台服务器的网卡名是ens33,需要固定IP为192.168.1.100,网关192.168.1.1,DNS使用通用公共DNS。在桌面版上我通常用nmcli,在服务器版上如果禁用NetworkManager,则需要修改/etc/network/interfaces文件:
sudo nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "223.5.5.5 114.114.114.114" sudo nmcli connection up ens33 ip addr show ens33执行完ip addr show ens33后,确认inet行显示的IP是192.168.1.100/24,就说明配置成功了。
第五步,安装常用软件。先更新软件源缓存,再安装基础工具包:
sudo apt update sudo apt install -y vim net-tools curl wget telnet lrzsz tree unzip这里lrzsz提供rz和sz命令,用来在终端和本地之间传输文件,国内运维环境用得很多。net-tools提供ifconfig等传统命令,虽然新版系统推荐用ip,但有时候脚本里还在用旧命令,装上保底。
第六步,配置ssh远程登录。编辑/etc/ssh/sshd_config文件,把PermitRootLogin改成no,禁止root直接远程登录,然后重启ssh服务:
sudo sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config sudo systemctl restart sshd重启前最好先开一个新的ssh连接测试,确认安全配置无误后再重启服务,避免把自己锁在外面。这是一个非常经典的经验:修改ssh配置时,永远先开一个新会话验证,不要断了当前连接再重启。
第七步,打包备份配置目录。把整个/etc目录打包备份到/backup目录:
sudo mkdir -p /backup sudo tar -czf /backup/etc-backup-$(date +%F).tar.gz /etc$(date +%F)会自动替换成当天的日期,这个技巧在生成带日期后缀的备份文件时很实用。
3.2 实操场景:软件安装与依赖处理
银河麒麟的软件安装有一个高频出现的需求:安装某个软件时提示依赖缺失,然后陷入“装依赖A,又提示需要依赖B”的死循环。
比如我想安装nginx,直接执行:
sudo apt install nginx如果报错说有一个依赖包无法安装,先不用急着手动装依赖。多数情况下是软件源缓存过期,执行一下sudo apt update再重新安装就能解决。
如果apt update本身报错,常见原因是软件源地址不可达。这时可以检查网络连通性:
ping -c 4 mirrors.aliyun.com如果ping不通,说明DNS解析或网络路由有问题。如果在内网环境,需要配置代理或者切换为内网源。
如果是离线安装,就需要先把.deb包拷到机器上,再执行sudo dpkg -i 包名.deb。如果依赖缺失,可以执行sudo apt -f install自动修复依赖,这个方案我实测过很多次,成功率很高。
另外还有一个冷门但实用的命令:apt depends 软件名可以查看一个软件包的依赖树。在排查依赖问题时,比盲目搜索更高效。
3.3 实操场景:日志分析与服务故障定位
日志分析是Linux运维的核心技能,银河麒麟的日志系统和主流Linux一致,日志文件主要存放在/var/log/目录下。常用的日志文件包括/var/log/syslog(系统日志)、/var/log/auth.log(认证日志)、/var/log/kern.log(内核日志)。
假设部署在服务器上的web服务突然无法访问,我的排查顺序是这样的。
第一步,先确认服务进程是否在运行:
systemctl status nginx如果服务是active (running)状态,再看端口监听是否正常:
ss -tlnp | grep 80如果端口没有监听,说明服务虽然活着但配置可能有问题,这时打开错误日志:
tail -100 /var/log/nginx/error.logtail命令默认显示文件最后10行,加-100显示最后100行,加-f可以持续跟踪文件的新增内容。在排查线上故障时,我通常开三个终端:一个tail -f错误日志,一个tail -f访问日志,一个执行测试命令,这样能实时看到服务对请求的响应情况。
如果确认是权限问题导致的启动失败,可以检查服务运行用户对相关目录的权限。比如nginx的web根目录/var/www/html,需要确保运行用户有读取权限:
ls -ld /var/www/html sudo chown -R www-data:www-data /var/www/html sudo chmod -R 755 /var/www/html日志分析里还有一个高频需求是查找某个时间段内的日志。日志系统一般会按天滚动,比如/var/log/syslog.1是昨天的日志。可以用zgrep直接搜索压缩过的日志文件,比如zgrep "error" /var/log/syslog.2.gz,这样不用先解压,非常方便。
3.4 实操场景:编写自动化脚本提升效率
掌握了基础命令之后,下一步就是把多条命令组合成Shell脚本,让计算机代替你完成重复的运维工作。
我提供一个非常实用的脚本示例:自动备份网站目录和数据库,保留最近7天的备份,并删除更早的备份文件。这个脚本我实际在银河麒麟服务器上跑过,可放心复用。
#!/bin/bash # 网站备份脚本 # 备份目录 BACKUP_DIR="/backup/website" # 网站源码目录 WEB_DIR="/var/www/html" # 数据库配置 DB_NAME="mydb" DB_USER="root" DB_PASS="mypassword" # 日期 DATE=$(date +%Y%m%d) # 创建备份目录 mkdir -p "$BACKUP_DIR/$DATE" # 备份网站源码 tar -czf "$BACKUP_DIR/$DATE/web.tar.gz" "$WEB_DIR" # 备份数据库 mysqldump -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$BACKUP_DIR/$DATE/db.sql" # 删除7天前的备份 find "$BACKUP_DIR" -type d -mtime +7 -exec rm -rf {} \; # 输出完成信息 echo "备份完成:$DATE"脚本里用到了date命令生成日期字符串,tar打包压缩,mysqldump导出数据库,find查找并删除过期备份。把这些基础命令组合起来,就构成了一个完整的自动化任务。
保存脚本为backup.sh,赋予执行权限并执行:
chmod +x backup.sh ./backup.sh如果需要每天定时执行,可以创建一个cron定时任务:
crontab -e # 每天凌晨2点执行备份 0 2 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1crontab -e会打开当前用户的定时任务列表,格式是“分 时 日 月 周 命令”。0 2 * * *表示每天凌晨2点执行一次。>>是追加输出重定向,2>&1把标准错误也重定向到同一个文件,这样可以通过/var/log/backup.log查看脚本运行是否成功。
4. 常见问题与排查技巧实录
4.1 高频问题排查对照表
我在实际使用银河麒麟的过程中,整理了一份高频问题对照表,你可以直接收藏备用。
| 问题现象 | 可能原因 | 排查与解决方法 |
|---|---|---|
sudo: command not found | sudo未安装或PATH异常 | 用root登录,执行apt install sudo |
user is not in the sudoers file | 用户不在sudo组 | usermod -aG sudo 用户名,然后重新登录 |
| 软件源更新报错 | 网络不通或源地址失效 | ping镜像源地址,检查/etc/apt/sources.list |
| 安装软件提示“架构不匹配” | 源配置与系统架构不一致 | dpkg --print-architecture检查架构,修改源配置 |
| 端口被占用 | 另一个服务已监听该端口 | ss -tlnp | grep 端口号定位占用进程 |
| ssh登录提示“Permission denied” | 密码错误或sshd配置限制 | 检查/etc/ssh/sshd_config,确认PermitRootLogin |
| 命令显示“bash: xxx: command not found” | 命令未安装或不在PATH中 | 用apt install xxx安装软件包 |
| 修改配置后服务重启失败 | 配置语法错误 | 执行nginx -t或sshd -t检查语法 |
| tar解压出现乱码 | 文件名编码问题 | 使用unzip -O gbk或tar --encoding处理 |
4.2 我踩过的几个“坑”和一个独门技巧
第一个坑是关于vim的。我曾经在一个项目里写脚本,需要批量修改几十台银河麒麟服务器上的配置文件。我写好了sed命令,但执行时发现部分机器生效、部分机器没生效。后来排查下来发现,有些机器的配置文件权限是只读的,sed替换没有报错,但文件内容没有变化。解决方法是先ls -l 文件查看权限,再确认是否有写权限。
第二个坑是中文编码问题。银河麒麟默认的locale是zh_CN.UTF-8,在Windows上编辑好的文件传到Linux上,经常出现乱码。处理办法是把Windows上的文本文件转码后再编辑:
iconv -f GBK -t UTF-8 input.txt > output.txt如果只是查看,可以直接用vim打开,然后在命令模式执行:set fileencoding=utf-8,也能正确显示中文。
第三个坑和ARM架构有关。有一次我在ARM服务器上编译一个程序,提示缺少某个依赖库,我在x86的机器上明明已经安装过一模一样名字的包,但在ARM机器上却找不到。后来才发现软件源里没开ARM架构的仓库。解决方法是检查软件源配置文件,确认加入了arch=arm64的条目。
独门技巧:在使用grep搜索大量日志文件时,可以加上--color=auto让匹配的关键字高亮显示,肉眼定位错误信息快得多。但如果你要把grep的结果通过管道传给其他程序处理,记得加--color=never,否则高亮码的转义字符会混入输出数据。
最后一个技巧是关于命令历史的。按键盘上的Ctrl+R进入历史命令反向搜索模式,输入关键字就能快速找到之前执行过的命令,按回车直接执行。这个操作在运维排查时极其高效,因为很多时候你复现故障用的就是那几条历史命令。
4.3 后续还可以怎么学
基础命令掌握之后,往深走有两条路。一条是系统管理方向,重点学习用户权限、systemd服务管理、日志审计、磁盘管理、性能调优;另一条是自动化方向,学习Shell脚本的高级语法、sed和awk的深入用法,以及Python脚本编写。
银河麒麟还自带了运维管理工具集,比如kylin-security安全认证工具和kylin-assistant系统助手,这些工具从命令行也可以调用。有兴趣的话,可以先查看它们的帮助文档,看看是否提供了额外的管理命令。
我个人在实际操作中的体会是:命令学习和任何技能一样,最忌讳的是“收藏了等于学会”。真正有效的做法是,每天只学两三个命令,但一定在本机上亲手跑几遍,并想办法把它组合到一个实际任务里。比如今天就学find、grep和xargs,那就找一个存放大量文件的目录,写一条命令找出所有最近3天修改过的大型日志文件并归档压缩。
把Linux命令练熟,银河麒麟对你来说就不再有“国产系统的神秘感”,它就是一个内核稳定、生态完善的Linux发行版。后续遇到问题,按照“先查系统信息、再看日志、再上网搜索、最后问社区”的路径去走,大部分问题都能独立解决。希望这篇实战记录能帮你少走一些我走过的弯路,哪怕只省下你半天摸索的时间,这篇内容就值了。