Linux 上高效实用的指令合集

尽管在 Linux 用 cd、vi、mv、cp、rm、ls 这些基础指令就能满足大部分的需求,但遇到一些特殊状况时,这些指令就不够用了。

这篇文章汇整了笔者常用的 Linux 指令,以「vim 编辑器、查询服务器各项资源、检查网络环境」为主。

vim 编辑器常用指令

有时我们会需要进入服务器做一些紧急调整,搭配下面的操作可以增进你的效率。

显示行数(:set number)

方便与本地程序做比对。

前往指定行数(:行数)

直接跳转到你要修改的位置。

删除多行

删除一行的指令是「 dd 」,但如果有几十行甚至上百行需要删除,那会 dd 到崩溃,而且很容易有误删的情形。

  • 删除从游标开始的 N 行(删除 5 行就是 5dd
  • 删除指定开始、结束的行 :[start],[end]d (删除第 3~17 行 3,17d

批量注释/取消注释

有时我们不是要删除程序,只是想要把一定范围内的程序注释起来做一些测试或是 Debug,如果你依靠「 i 」来慢慢编辑,真的会心死。

  • 批量注释 :先将游标移至想开始注释的行,按「Control+v」进入 VISUAL BLOCK 模式,接著选择想要注释的区块;按下「Shift+i」进入编辑模式填写注释符号(比如 // ),按「Esc」离开。
  • 取消注释 :先将游标移至想开始注释的行,按「Control+v」进入 VISUAL BLOCK 模式,接著选择想要取消注释的区块(因为我的注释用 // 所以要按右键删除两列);按下「d」删除注释。

搜索指定内容并替换

ini 复制代码
:[范围]s/[搜索的字符串]/[替换的字符串]/g
  • 将全部的「test」取代为「try」::%s/test/try/g
  • 将 1~10 行的「test」取代为「try」::1,10s/test/try/g

查询服务器各项资源

了解资源的使用状况,可以帮你更快地找出问题点,与优化方向。

服务器启动多久了(uptime)

  • 21:21:33 :系统时间

  • up 6 days, 7:40 :Server 已执行时间,时间越大代表越稳定。

  • 1 user :使用者总连接数(注意不是使用者数!)。

  • load average: 系统平均负载状况,显示1 / 5 / 15 分钟的系统平均负载(以单核 CPU 来说,建议数值不大于 3,超过 5 就需要注意了)。

找出最耗费资源的程序(top)

top 这个指令会显示服务器当前的资源使用状况。

top 也可以指定栏位做排序,以下面的指令( top -b -o +%MEM | head -n 17 )为例,他是指:

  • -b :以 batch 模式输出报表。

  • -o :我们使用「%MEM」这个栏位,以「正序」来排序。

  • head -n 17 :因为上面的信息就占了 7 行,所以你想要显示前 10 名就要用 10+7=17。

在找出最耗费资源的程序后,有时会搭配 kill [PID] 的方式来终止程序;如果无法顺利终止,可使用 kill -9 [PID] 来强行终止。

以目录形式呈现目前磁盘使用状况(ncdu)

如果发现磁盘空间快满了,又不确定哪个文件夹占用了大量空间, ncdu 可以帮你高效率的检查(默认会以你当前的目录来做显示,)。

如果你想要扫描根目录硬盘使用状况,请使用 ncdu -x / ,若要退出请按 q

此指令并非默认安装,Ubuntu 环境下的安装指令为:apt-get -y install ncdu

搜索文件(find)

假使我们想从根目录开始搜索「php.ini」在哪里:

arduino 复制代码
sudo find / -name php.ini

如果我们不确定文件名,也可以通过「?」来进行模糊搜索:

arduino 复制代码
sudo find / -name ph?.ini

搜索历史指令(Control+R)

有时我们会用到带有一长串参数的指令,这些指令只要下过一次后 history 就会记住。

因此我们下次想要再使用它时,只要按下「Control+R」输入要搜索的字串,bash 就会显示最近一项匹配的指令;连续按「Control+R」则继续搜索更早的历史指令,按「Enter」则会执行显示的指令。

检查网络环境

想要知道网络环境的状况,除了用最基础的 ping 以外,下面这些指令可以帮你获得更详尽的信息。

网络诊断瑞士军刀(nc)

Netcat (nc)能够做到的事情很多,这边跟大家分享常用的功能。

  • 测试目标服务器特定的 port 是否开启:nc -v [host] [port]
  • 在两台服务器间复制文件

在接收文件的服务器上执行 nc -l 5000 > demo.js ,在传送文件的服务器上执行 nc [host] 5000 < demo.js

这个操作跟 scp 很类似,但特别的地方在于不需要登录的动作(不需要帐号密码),假使遇到两台服务器无法互相登录时, 他就是一个解决方案。

Netcat 还有非常多的功能,有兴趣的可以再自行钻研。

设定好 DNS 后,确认是否正常(nslookup)

下面以查询 google.com 的 ip 为例:nslookup google.com

在执行结果中「192.168.220.186」是查询的 DNS Server,而「172.217.160.110」则是返回的 ip。

在内网/外网执行时会有不同响应,可用来确认设定是否符合预期。

查询占用的 port(lsof)

lsof (List Open Files)可以列出所有被行程打开的文件,笔者会通过这个指令来看 port 被哪个行程占用了。

css 复制代码
lsof -i -P | grep :443

-i 是查找网络连接, -P 是列出实际的 port,最后通过 grep 将 port 为 443 的显示出来。

以上是笔者常用的 Linux 指令,如果你平常有用到其他实用的指令,也欢迎留言分享喔!

相关推荐
Victor35644 分钟前
Redis(25)Redis的RDB持久化的优点和缺点是什么?
后端
Victor3561 小时前
Redis(24)如何配置Redis的持久化?
后端
ningqw8 小时前
SpringBoot 常用跨域处理方案
java·后端·springboot
你的人类朋友8 小时前
vi编辑器命令常用操作整理(持续更新)
后端
胡gh8 小时前
简单又复杂,难道只能说一个有箭头一个没箭头?这种问题该怎么回答?
javascript·后端·面试
一只叫煤球的猫9 小时前
看到同事设计的表结构我人麻了!聊聊怎么更好去设计数据库表
后端·mysql·面试
uzong9 小时前
技术人如何对客做好沟通(上篇)
后端
·云扬·9 小时前
从零开始搭 Linux 环境:VMware 下 CentOS 7 的安装与配置全流程(附图解)
linux·运维·centos
颜如玉10 小时前
Redis scan高位进位加法机制浅析
redis·后端·开源
Moment10 小时前
毕业一年了,分享一下我的四个开源项目!😊😊😊
前端·后端·开源