作为一个系统管理员/SRE 工作 5 年后,我知道当我连接到一台 Linux 服务器时我首先应该做什么。这里有一系列关于服务器你必须了解的信息,以便你可以(在大部分时间里)更好的调试该服务器。

作为一个系统管理员/SRE 工作 5 年后,我知道当我连接到一台 Linux 服务器时我首先应该做什么。这里有一系列关于服务器你必须了解的信息,以便你可以(在大部分时间里)更好的调试该服务器。

连上 Linux 服务器的第一分钟

这些命令对于有经验的软件工程师来说都非常熟悉,但我意识到对于一个刚开始接触 Linux 系统的初学者来说,例如我在 Holberton 学校任教的学生,却并非如此。这也是我为什么决定分享当我连上 Linux 服务器首先要运行的前 5 个命令的原因。

 
  
  1. w
  2. history
  3. top
  4. df
  5. netstat

这 5 个命令在任何一个 Linux 发行版中都有,因此不需要额外的安装步骤你就可以直接使用它们。

w:

 
  
  1. [ubuntu@ip-172-31-48-251~]$w
  2. 23:40:25up273days,20:52,2users,loadaverage:0.33,0.14,0.12
  3. USERTTYFROMLOGIN@IDLEJCPUPCPUWHAT
  4. ubuntupts/0104-7-14-91.ligh23:390.00s0.02s0.00sw
  5. rootpts/1104-7-14-91.ligh23:405.00s0.01s0.03ssshd:root[priv]
  6. [ubuntu@ip-172-31-48-251~]$

这里列出了很多有用的信息。首先,你可以看到服务器运行时间 uptime,也就是服务器持续运行的时间。然后你可以看到有哪些用户连接到了服务器,当你要确认你没有影响你同事工作的时候这非常有用。最后 load average 能很好的向你展示服务器的健康状态。

history

 
  
  1. [ubuntu@ip-172-31-48-251~]$history
  2. 1cd/var/app/current/log/
  3. 2ls-al
  4. 3tail-n3000production.log
  5. 4serviceapache2status
  6. 5cat../../app/services/discourse_service.rb

history 能告诉你当前连接的用户之前运行了什么命令。你可以看到很多关于这台机器之前在执行什么类型的任务、可能出现了什么错误、可以从哪里开始调试工作等信息。

top

 
  
  1. top-23:47:54up273days,21:00,2users,loadaverage:0.02,0.07,0.10
  2. Tasks:79total,2running,77sleeping,0stopped,0zombie
  3. Cpu(s):1.0%us,0.0%sy,0.0%ni,98.7%id,0.0%wa,0.0%hi,0.0%si,0.3%st
  4. Mem:3842624ktotal,3128036kused,714588kfree,148860kbuffers
  5. Swap:0ktotal,0kused,0kfree,1052320kcached
  6. PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND
  7. 21095root200513m21m4980S1.00.61237:05python
  8. 1380healthd200669m36m5712S0.31.0265:43.82ruby
  9. 19703dd-agent200142m25m4912S0.30.711:32.32python
  10. 1root2001959616281284S0.00.00:10.64init
  11. 2root200000S0.00.00:00.00kthreadd
  12. 3root200000S0.00.027:31.42ksoftirqd/0
  13. 4root200000S0.00.00:00.00kworker/0:0
  14. 5root0-20000S0.00.00:00.00kworker/0:0H
  15. 7root200000S0.00.042:51.60rcu_sched
  16. 8root200000S0.00.00:00.00rcu_bh

你想知道的下一个信息:服务器当前在执行什么工作。使用 top 命令你可以看到所有正在执行的进程,然后可以按照 CPU、内存使用进行排序,并找到占用资源的进程。

df

 
  
  1. [ubuntu@ip-172-31-48-251~]$df-h
  2. FilesystemSizeUsedAvailUse%Mountedon
  3. /dev/xvda17.8G4.5G3.3G58%/
  4. devtmpfs1.9G12K1.9G1%/dev
  5. tmpfs1.9G01.9G0%/dev/shm

你服务器正常工作需要的下一个重要资源就是磁盘空间。磁盘空间消耗完是非常典型的问题。

netstat

 
  
  1. [ubuntu@ip-172-31-48-251ec2-user]#netstat-lp
  2. ActiveInternetconnections(onlyservers)
  3. ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Programname
  4. tcp00*:http*:*LISTEN1637/nginx
  5. tcp00*:ssh*:*LISTEN1209/sshd
  6. tcp00localhost:smtp*:*LISTEN1241/sendmail
  7. tcp00localhost:17123*:*LISTEN19703/python
  8. tcp00localhost:22221*:*LISTEN1380/puma2.11.1(t
  9. tcp00*:4242*:*LISTEN18904/jsvc.exec
  10. tcp00*:ssh*:*LISTEN1209/sshd

计算机已成为我们世界的重要一部分,因为它们有通过网络进行相互交流的能力。知道你的服务器正在监听什么端口、IP地址是什么、以及哪些进程在使用它们,这对于你来说都非常重要。

显然这个列表会随着你的目的和你已有的信息而变化。例如,当你需要调试性能的时候,Netflix 就有一个自定义的列表。你有任何不在我 Top 5 中的有用命令吗?在评论部分和我们一起分享吧!

【编辑推荐】

  1. Linux服务器安全配置实例(一)引言
  2. Linux服务器安全配置实例(二)用户账户权限配置
  3. Linux服务器下LNMP安装与配置方法
  4. Linux网络 - 数据包的发送过程
  5. Linux目录结构、Linux分区大小、挂载点和如何分区

更多相关文章

  1. linux命令行程序
  2. linux 中 开放端口,以及防火墙的相关命令
  3. Linux 删除文件夹和文件的命令
  4. shell脚本let命令在windows下编辑后上传到Linux一直报错
  5. linux运行命令缺少依赖库的查找方法
  6. Linux服务器禁用ping
  7. Linux命令备忘实例(10)——目录管理
  8. 【linux】下的mkfifo 命令 和【C语言】中的mkfifo函数
  9. linux 命令 grep 不使用 正则表达式

随机推荐

  1. 基于AdminLTE的jquery头像更新
  2. jQuery Validate 表单验证插件
  3. css3和jquery实现的可折叠导航菜单(适合
  4. jquery 如何同时选择多个不同的id执行同
  5. Struts2 json jQuery ajax 的集成配置与
  6. Yii就地crud文本小部件
  7. jQuery遍历----------(遍历、祖先、后代
  8. day049--jQuery文档操作示例
  9. 怎么用js或jquery把一个函数b绑定到另一
  10. jQuery 三级联动选项栏