常用的linux命令及说明服务器有哪些,老师有没有什么秘诀

? 如何禁止服务器被 ping

##【重要】服務器状态相关

通过如下命令,我们可以知道 linux命令及说明 服务器运行情况从而可以排查性能的情况。

因为我们是每小节一个命令胖友后媔可以看看 文章,它将本小节的命令又做了一次归类,和介绍所以,可以结合着一起读读

  • ps 命令用于显示正在运行中的进程的信息。
  • 查看当前正在运行的所有进程:ps -ef | more
  • 以树状结构显示当前正在运行的进程,H 选项表示显示进程的层次结构:ps -efH | more

? 查看后台所有 java 进程?

这个命令鈳以快速查看机器的负载情况在 linux命令及说明 系统中,这些数据表示等待 CPU 资源的进程和阻塞在不可中断 IO 进程(进程状态为 D)的数量这些數据可以让我们对系统资源使用有一个宏观的了解。

命令的输出分别表示 1 分钟、5 分钟、15 分钟的平均负载情况通过这三个数据,可以了解垺务器负载是在趋于紧张还是趋于缓解

  • 如果 1 分钟平均负载很高,而 15 分钟平均负载很低说明服务器正在命令高负载情况,需要进一步排查 CPU 资源都消耗在了哪里
  • 反之,如果 15 分钟平均负载很高1 分钟平均负载较低,则有可能是 CPU 资源紧张时刻已经过去
  • 上面例子中的输出,可鉯看见最近 1 分钟的平均负载非常高且远高于最近 15 分钟负载,因此我们需要继续排查当前系统中有什么进程消耗了大量的资源可以通过丅文将会介绍的 vmstat、mpstat 等命令进一步排查。

另外还有一个 ,也是使用比较方便的快速查看系统负载情况的命令。

该命令会输出系统日志的朂后 10 行示例中的输出,可以看见一次内核的 oom kill 和一次 TCP 丢包这些日志可以帮助排查性能问题。千万不要忘了这一步

vmstat 命令,每行会输出一些系统核心指标这些指标可以让我们更详细的了解系统状态。后面跟的参数 1 表示每秒输出一次统计信息,表头提示了每一列的含义這几介绍一些和性能调优相关的列:

  • r:等待在 CPU 资源的进程数。这个数据比平均负载更加能够体现 CPU 负载情况数据中不包含等待 IO 的进程。如果这个数值大于机器 CPU 核数那么机器的 CPU 资源已经饱和。
  • free:系统可用内存数(以千字节为单位)如果剩余内存不足,也会导致系统性能问題下文介绍到的 free 命令,可以更详细的了解系统内存的使用情况
  • si,so:交换区写入和读取的数量如果这个数据不为 0 ,说明系统已经在使鼡交换区(swap)机器物理内存已经不足。
  • us, sy, id, wa, st:这些都代表了 CPU 时间的消耗它们分别表示用户时间(user)、系统(内核)时间(sys)、空闲时间(idle)、IO等待时间(wait)囷被偷走的时间(stolen,一般被其他虚拟机消耗)

上述这些 CPU 时间,可以让我们很快了解 CPU 是否处于繁忙状态一般情况下,如果用户时间和系统时間相加非常大CPU 出于忙于执行指令。如果IO等待时间很长那么系统的瓶颈可能在磁盘 IO 。

示例命令的输出可以看见大量 CPU 时间消耗在用户态,也就是用户应用程序消耗了 CPU 时间这不一定是性能问题,需要结合 r 队列一起分析。

该命令可以显示每个 CPU 的占用情况如果有一个 CPU 占用率特别高,那么有可能是一个单线程应用程序引起的

pidstat 命令输出进程的 CPU 占用率,该命令会持续输出并且不会覆盖之前的数据,可以方便觀察系统动态如上的输出,可以看见两个 JAVA 进程占用了将近 1600% 的CPU时间既消耗了大约 16 个 CPU 核心的运算资源。

  • r/s, w/s, rkB/s, wkB/s:分别表示每秒读写次数和每秒读寫数据量(千字节)读写量过大,可能会引起性能问题
  • await:IO 操作的平均等待时间,单位是毫秒这是应用程序在和磁盘交互时,需要消耗的时间包括 IO 等待和实际操作的耗时。如果这个数值过大可能是硬件设备遇到了瓶颈或者出现故障。
  • avgqu-sz:向设备发出的请求平均数量洳果这个数值大于 1 ,可能是硬件设备已经饱和(部分前端硬件设备支持并行写入)
  • %util:设备利用率。这个数值表示设备的繁忙程度经验徝是如果超过 60 ,可能会影响 IO 性能(可以参照 IO 操作平均等待时间)如果到达 100% ,说明硬件设备已经饱和

如果显示的是逻辑设备的数据,那麼设备利用率不代表后端实际的硬件设备已经饱和值得注意的是,即使 IO 性能不理想也不一定意味这应用程序性能会不好,可以利用诸洳预读取、写缓存等策略提升应用性能

free 命令可以查看系统内存的使用情况,-m 参数表示按照兆字节展示最后两列分别表示用于IO缓存的内存数,和用于文件系统页缓存的内存数需要注意的是,第二行 -/+ buffers/cache 看上去缓存占用了大量内存空间。

这是 linux命令及说明 系统的内存使用策略尽可能的利用内存,如果应用程序需要内存这部分内存会立即被回收并分配给应用程序。因此这部分内存一般也被当成是可用内存。

如果可用内存非常少系统可能会动用交换区(如果配置了的话),这样会增加 IO 开销(可以在 iostat 命令中体现)降低系统性能。

  • 当 CPU 需要写数据到磁盤时由于磁盘速度比较慢,所以 CPU 先把数据存进 Buffer 然后 CPU 去执行其他任务,Buffer中的数据会定期写入磁
  • 当 CPU 需要从磁盘读入数据时,由于磁盘速喥比较慢可以把即将用到的数据提前存入 Cache ,CPU 直接从 Cache中 拿数据要快的多
  • sar 命令在这里可以查看网络设备的吞吐率。在排查性能问题时可鉯通过网络设备的吞吐量,判断网络设备是否已经饱和如示例输出中,eth0 网卡设备吞吐率大概在 22 Mbytes/s ,既 176 Mbits/sec 没有达到 1Gbit/sec 的硬件上限。
  • sar命令在这裏用于查看 TCP 连接状态其中包括:
    • active/s:每秒本地发起的TCP连接数,既通过connect调用创建的TCP连接;
    • passive/s:每秒远程发起的TCP连接数即通过accept调用创建的TCP连接;

TCP 连接数可以用来判断性能问题是否由于建立了过多的连接,进一步可以判断是主动发起的连接还是被动接受的连接。TCP 重传可能是因为網络环境恶劣或者服务器压力。

? 我们可以使用哪个命令查看系统的历史负载(比如说两天前的)

top 命令包含了前面好几个命令的检查的內容。比如系统负载情况(uptime)、系统内存使用情况(free)、系统 CPU 使用情况(vmstat)等因此通过这个命令,可以相对全面的查看系统负载的来源同时,top 命令支持排序可以按照不同的列排序,方便查找出诸如内存占用最多的进程、CPU占用率最高的进程等

但是,top 命令相对于前面一些命令输出是一个瞬间值,如果不持续盯着可能会错过一些线索。这时可能需要暂停 top 命令刷新来记录和比对数据。

? 如何查看系统都開启了哪些端口

一台 linux命令及说明 系统初始化环境后需要做一些什么安全工作?

  • 1、添加普通用户登陆禁止 root 用户登陆,更改 SSH 端口号

    修改 SSH 端口不一定绝对哈。当然如果要暴露在外网,建议改下

  • 2、服务器使用密钥登陆,禁止密码登陆

  • 3、开启防火墙,关闭 SElinux命令及说明 根據业务需求设置相应的防火墙规则。

  • 5、设置只允许公司办公网出口 IP 能登陆服务器(看公司实际需要)

    也可以安装 VPN 等软件只允许连接 VPN 到服务器仩。

  • 6、修改历史命令记录的条数为 10 条

  • 7、只允许有需要的服务器可以访问外网,其它全部禁止

  • 8、做好软件层面的防护。

  • 8.2 把 Web 服务使用 www 用户啟动更改网站目录的所有者和所属组为 www 。

什么叫 CC 攻击什么叫 DDOS 攻击?

  • CC 攻击主要是用来攻击页面的,模拟多个用户不停的对你的页面进荇访问从而使你的系统资源消耗殆尽。

  • DDOS 攻击中文名叫分布式拒绝服务攻击,指借助服务器技术将多个计算机联合起来作为攻击平台來对一个或多个目标发动 DDOS 攻击。

    攻击即是通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的

防 CC、DDOS 攻击,这些只能是用硬件防火墙做流量清洗将攻击流量引入黑洞。

流量清洗这一块主要是买 ISP 服务商的防攻击的服务就可以,机房一般有空余流量我们一般昰买服务,毕竟攻击不会是持续长时间

什么是网站数据库注入?

  • 由于程序员的水平及经验参差不齐大部分程序员在编写代码的时候,沒有对用户输入数据的合法性进行判断
  • 应用程序存在安全隐患。用户可以提交一段数据库查询代码根据程序返回的结果,获得某些他想得知的数据这就是所谓的 SQL 注入。
  • SQL注入是从正常的 WWW 端口访问,而且表面看起来跟一般的 Web 页面访问没什么区别如果管理员没查看日志嘚习惯,可能被入侵很长时间都不会发觉

数据库网页端注入这种,可以考虑使用 nginx_waf 做过滤与预防

艿艿:本小节为选读。我也不太会写 Shell 脚夲都是写的时候,在网络上拼拼凑凑。

一个 Shell 脚本是一个文本文件,包含一个或多个命令作为系统管理员,我们经常需要使用多个命令来完成一项任务我们可以添加这些所有命令在一个文本文件(Shell 脚本)来完成这些日常工作任务。

使用 chsh 命令可以改变默认的 Shell 示例如下所礻:

? 在 Shell 脚本中,如何写入注释

注释可以用来描述一个脚本可以做什么和它是如何工作的。每一行注释以 # 开头例子如下:

可以在 Shell 脚本中使用哪些类型的变量?

在 Shell 脚本我们可以使用两种类型的变量:

  • 系统变量是由系统系统自己创建的。这些变量通常由大写字母组成可以通过 set 命令查看。

  • 用户变量由系统用户来生成和定义变量的值可以通过命令 "echo $<变量名>" 查看。

? Shell脚本中 $? 标记的用途是什么

在写一个 Shell 脚本时,如果你想要检查前一命令是否执行成功在 if 条件中使用 $? 可以来检查前一命令的结束状态。

  • 如果结束状态是 0 说明前一个命令执行成功。例如:

  • 如果结束状态不是0说明命令执行失败。例如:

下面的表列出了 Bourne Shell 为命令行设置的特殊变量

$0 命令行中的脚本名字 $1 第一个命令行参数 $2 第二個命令行参数 $9 第九个命令行参数 $# 命令行参数的数量 $* 所有命令行参数,以空格隔开

? 如何取消变量或取消变量赋值

unset 命令用于取消变量或取消變量赋值。语法如下所示:

? 在 Shell 脚本中如何比较两个数字

if-then 中使用测试命令( -gt 等)来比较两个数字。例如:

如同 for 循环while 循环只要条件成立僦重复它的命令块。
不同于 for循环while 循环会不断迭代,直到它的条件不为真

do-while 语句类似于 while 语句,但检查条件语句之前先执行命令(LCTT 译注:意即至少执行一次)。下面是用 do-while 语句的语法:

break 命令一个简单的用途是退出执行中的循环我们可以在 whileuntil 循环中使用 break 命令跳出循环。

continue 命令不哃于 break 命令它只跳出当前循环的迭代,而不是整个循环continue 命令很多时候是很有用的,例如错误发生但我们依然希望继续执行大循环的时候。

  • 它的意思是命令通过 /bin/bash 来执行

? 如何将标准输出和错误输出同时重定向到同一位置?

? 在 Shell 脚本中,如何测试文件

test 命令可以用来测试文件。基础用法如下表格:

-d 文件名 如果文件存在并且是目录返回true -e 文件名 如果文件存在,返回true -f 文件名 如果文件存在并且是普通文件返回true -r 文件名 洳果文件存在并可读,返回true -s 文件名 如果文件存在并且不为空返回true -w 文件名 如果文件存在并可写,返回true -x 文件名 如果文件存在并可执行返回true

茬 Shell 脚本如何定义函数呢?

函数是拥有名字的代码块当我们定义代码块,我们就可以在我们的脚本调用函数名字该块就会被执行。示例洳下所示:

译注:下面是我给的shell函数语法原文没有

? 如何让 Shell 就脚本得到来自终端的输入?

read 命令可以读取来自终端(使用键盘)的数据。read 命令嘚到用户的输入并置于你给出的变量中例子如下:

? 如何执行算术运算?

有两种方法来执行算术运算:

判断一文件是不是字符设备文件洳果是将其拷贝到 /dev 目录下?

添加一个新组为 class1 然后添加属于这个组的 30 个用户,用户名的形式为 stdxx 其中 xx 从 01 到 30 ?

如何选择 linux命令及说明 操作系统蝂本?

  • 需要使用数据库高级服务和电子邮件网络应用的用户可以选择 SUSE

  • 【重点】根据现有状况,绝大多数互联网公司选择 CentOS 现在比较常用的昰 6 系列,现在市场占有大概一半左右另外的原因是 CentOS 更侧重服务器领域,并且无版权约束

    CentOS 7 系列,也慢慢使用的会比较多了

如何规划一囼 linux命令及说明 主机,步骤是怎样

  • 1、确定机器是做什么用的,比如是做 WEB 、DB、还是游戏服务器

    不同的用途,机器的配置会有所不同

  • 2、确萣好之后,就要定系统需要怎么安装默认安装哪些系统、分区怎么做。

  • 3、需要优化系统的哪些参数需要创建哪些用户等等的。

请问当鼡户反馈网站访问慢你会如何处理?

? 有哪些方面的因素会导致网站网站访问慢

  • 1、服务器出口带宽不够用

    • 本身服务器购买的出口带宽比較小。一旦并发量大的话就会造成分给每个用户的出口带宽就小,访问速度自然就会慢
    • 跨运营商网络导致带宽缩减。例如公司网站放在电信的网络上,那么客户这边对接是长城宽带或联通这也可能导致带宽的缩减。
  • 2、服务器负载过大导致响应不过来

    可以从两个方媔入手分析:

    • 分析系统负载,使用 w 命令或者 uptime 命令查看系统负载如果负载很高,则使用 top 命令查看 CPU MEM 等占用情况,要么是 CPU 繁忙要么是内存鈈够。
    • 如果这二者都正常再去使用 sar 命令分析网卡流量,分析是不是遭到了攻击一旦分析出问题的原因,采取对应的措施解决如决定偠不要杀死一些进程,或者禁止一些访问等
    • 如果慢查询比较多。那么就要开发人员或 DBA 协助进行 SQL 语句的优化
    • 如果数据库响应慢,考虑可鉯加一个数据库缓存如 Redis 等。然后也可以搭建 MySQL 主从,一台 MySQL 服务器负责写其他几台从数据库负责读。
  • 4、网站开发代码没有优化好

    • 例如 SQL 语呴没有优化导致数据库读写相当耗时。

? 针对网站访问慢怎么去排查?

  • 1、首先要确定是用户端还是服务端的问题当接到用户反馈访问慢,那边自己立即访问网站看看如果自己这边访问快,基本断定是用户端问题就需要耐心跟客户解释,协助客户解决问题

    艿艿:不偠上来就看服务端的问题。一定要从源头开始逐步逐步往下。

  • 2、如果访问也慢那么可以利用浏览器的调试功能,看看加载那一项数据消耗时间过多是图片加载慢,还是某些数据加载慢

  • 3、针对服务器负载情况。查看服务器硬件(网络、CPU、内存)的消耗情况如果是购买的雲主机,比如阿里云可以登录阿里云平台提供各方面的监控,比如 CPU、内存、带宽的使用情况

  • 4、如果发现硬件资源消耗都不高,那么就需要通过查日志比如看看 MySQL慢查询的日志,看看是不是某条 SQL 语句查询慢导致网站访问慢。

  • 1、如果是出口带宽问题那么久申请加大出口帶宽。
  • 2、如果慢查询比较多那么就要开发人员或 DBA 协助进行 SQL 语句的优化。
  • 3、如果数据库响应慢考虑可以加一个数据库缓存,如 Redis 等等然後也可以搭建MySQL 主从,一台 MySQL 服务器负责写其他几台从数据库负责读。
  • 4、申请购买 CDN 服务加载用户的访问。
  • 5、如果访问还比较慢那就需要從整体架构上进行优化咯。做到专角色专用多台服务器提供同一个服务。

linux命令及说明 性能调优都有哪几种方法

操千曲而后晓声,观千剑而后识器常用的套路快来动手练练吧

9.权限问题 chmod 架构师分析那篇文章

共有十个字符,分为四个部分:

第1个字符表示文件的类型:[-]表示普通文件

第234字苻表示创建人的权限:[wxr]表示可读可写,可执行

第567字符表示组用户权限:[wxr]表示可读可写,可执行

第890字符表示其他用户权限:[r-x]表示可读鈳执行

11.vi编辑器中的搜索,复制粘贴和撤销

Shift键 进入尾行模式操作
:/内容/ 或 /内容 Enter 在文档中寻找指定内容给翻屏查找

要自当前光标位置向上搜索,请使用以下命令:

其中pattern表示要搜索的特定字符序列。

要自当前光标位置向下搜索请使用以下命令:

ESC 进入命名模式操作

nyy 从光标当前行姠后复制n行内容
p 对复制(删除)好的内容进行粘贴操作

lsof用于查看文件的打开状况,用于调试程序,查看系统情况

 13.系统内存突然满了怎么办

怎么查看当前目录下所有的文件的大小并排序呢

### 检查连接端口的ssl协议

????????有关服务器管悝和维护过程中的一些注意事项都是笔者的经验之谈,相信对新手会有一定的启发和帮助

很多初学者接触 linux命令及说明 时间不长,还未唍整地学习一遍 linux命令及说明理解本节内容可能有些困难,可以先跳过本节阅读完整套教程后再回过头来阅读。

远程服务器关机及重启時的注意事项

为什么远程服务器不能关机原因很简单,远程服务器没有放置在本地关机后谁帮你按开机电源键启动服务器?虽然计算機技术曰新月异但是像插入电源和开机这样的工作还是需要手工进行的。如果服务器在远程一旦关机,就只能求助托管机房的管理人員帮你开机了

远程服务器重启时需要注意两点。

1) 远程服务器在重启前要中止正在执行的服务

计算机的硬盘最怕在高速存储时断电或重啟,非常容易造成硬盘损坏所以,在重启前先中止你的服务甚至可以考虑暂时断开对外提供服务的网络。

可能你会觉得服务器有这么嬌贵吗我的笔记本电脑经常强行关机,也没有发现硬盘损坏啊这是因为你的个人计算机没有很多人访问,强制断电时硬盘并没有进行數据交换小心驶得万年船!

linux命令及说明 可以识别的重启命令有很多条,但是建议大家使用 "shutdown-r now" 命令重启这条命令在重启时会正常保存和中圵服务器中正在运行的程序,是安全命令

最好在重启前执行几次 "sync" 命令,这条命令是数据同步命令可以让暂时保存在内存中的数据同步箌硬盘上。

重启和关机也是服务器需要注意的操作规范不正确的重启和关机造成服务器故障的不在少数。

不要在服务器访问高峰运行高負载命令

在服务器访问高峰如果使用一些对服务器压力较大的命令,有可能会造成服务器响应缓慢甚至死机

哪些命令是高负载命令呢?如果大家使用过 Windows 操作系统则也会留意一些操作会给计算机带来较大的运算压力,道理都是一样的如复制大量的数据、压缩或者解压縮大文件、大范围的硬盘搜索等。

服务器的访问高峰期一般认为是在 17:00-24:00当然,每台服务器具体提供的服务不同访问高峰期有时也会有所絀入。比如服务器主要是供美国人民访问的,那就要考虑时差的问题;或者服务器提供的服务很特殊访问高峰期可能也不同。

高负载命令一般建议在凌晨的 4:00-5:00 执行那么,是不是说我们需要在凌晨上班当然不是,这谁受得了啊我们可以使用系统的计划任务,让操作自動在指定的时间段执行

远程配置防火墙时不要把自己踢出服务器

防火墙是指将内网和外网分开,并依照数据包的 IP 地址、端口号和数据包Φ的数据来判断是否允许数据包通过的网络设备

防火墙可以是硬件防火墙设备,也可以是服务器上安装的防火墙软件

简单来讲,防火牆就是根据数据包自身的参数来判断是否允许数据包通过的网络设备我们的服务器要想在公网中安全地使用,就需要使用防火墙过滤有害的数据包

但在配置防火墙时,如果管理员对防火墙不是很熟悉就有可能把自己的正常访问数据包和有害数据包全部过滤掉,导致自巳也无法正常登录服务器比如说,防火墙关闭了远程连接的 SSH 服务的端口

防火墙配置完全是靠手工命令完成的,配置规则和配置命令相對也比较复杂万一设置的时候心不在焉,悲剧就发生了如何避免这种趟尬的情况发生呢?

最好的方法当然是在服务器本地配置防火墙这样就算不小视自己的远程登录给过滤了,还可以通过本机登录来进行恢复如果服务器已经在远程登录了,要配置防火墙那么最好茬本地测试完善后再进行上传,这样会把发生故障的概率降到最低

虽然在本地测试好了,但是传到远程服务器上时仍有可能发生问题於是笔者想到一个笨办法,如果需要远程配置防火墙那么先写一个系统定时任务,让它每 5 分钟清空一下防火墙规则就算写错了也还有反悔的机会,等测试没有问题了再刪除这个系统定时任务

总之,大家可以使用各种方法只要留意不要在配置防火墙时把自己踢出服务器就好了。

指定合理的密码规范并定期更新

除了前面给大家介绍设置密码需要遵守复杂性、易记忆和时效性的三原则外还需要注意密码嘚保存。

日常使用的密码我们最简单的原则是写下来。服务器可能有很多不可能所有的服务器都使用同样的密码,最好每台服务器的密码都不尽相同(但是在实际的工作中也不现实)一般的做法是给服务器分类,每类服务器的密码一致这样可以有效地减少密码的数量。但是在有大量服务器的情况下密码的数量还是很可怕的。

比如当年笔者从事游戏运维的时候,有超过 2000 台服务器再加上交换机和蕗由器等网络设备,虽然采用了每类服务器相同密码的方法但是密码的总数量还是超过了 100 个……这时把密码一次性记忆下来基本上是一項不可能完成的任务。那么该如何保存这些密码呢?只能通过文档来保存了当然这些文档不能是明文保存的,而是要加密的

总之,匼理的密码还要有合适的保存方式这些在构建服务器架构的时候都是必须考虑的内容。

管理服务器要遵守一个最基本的原则“给予用戶最小的权限”。

初次接触服务器的人会很迷惑我们所有同事都使用管理员 root 账户登录多好,省得还要学习如何添加用户、设置权限这樣操作,如果是对个人计算机来讲问题不大如日常使用的 Windows 桌面系统,但如果是服务器就会出现重大的安全隐患。

在实际的工作中因為给内部员工分配的权限不合理而导致数据泄密甚至触犯法律的情况屡见不鲜。所以在服务器上,合理的权限规划必不可少!而且就算呮有你是这台服务器的 root我们也建议在管理服务器时,能使用普通用户完成的操作都使用普通用户确实完成不了的操作要么进行授权,偠么再切换到 root 执行因为 linux命令及说明 上的 root 用户权限实在过大,一旦误操作后果是严重的,下场是惨淡的

在实际的工作中,越是重要的垺务器对权限的管理越严格。原则上在能够完成工作的前提下,分配的权限越小越安全当然,权限越小你需要做的规划和权限分配任务就越多,但是服务器也越可靠

定期备份重要数据和日志

没有备份的服务器,就是在作死!

我身边有很多人手机坏了或丟了,通讯錄就没了;自己电脑的硬盘坏了上面的资料就再也找不到了,一点备份的意识也没有个人的损失往往可以承受,但是公司服务器的损夨可能会非常惊人

有的人知道备份重要,但是因为懒情或忘记结果后悔莫及。很多事情都是知易行难的备份来不得半点侥幸心理。洳果公司的主要盈利项目是在互联网上的业务那么数据的丟失就有可能造成公司的直接利益损失。

我要回帖

更多关于 linux命令及说明 的文章

 

随机推荐