20条系统管理员需求知道的指令

liukang20243天前网友吃瓜330

来历:Linux资讯速推

20条系统管理员需要知道的命令的图像

在这个全新的东西和多样化的开发环境井喷的大环境下,任何开发者和工程师都有必要学习一些根本的体系办理指令。特定的指令和东西包可协助开发者安排、排查毛病并优化他们的运用程序,并且当呈现过错时,也可认为运维人员和体系办理员供给有价值的分类信息。

不管你是新手开发者仍是期望办理自己的运用程序,下面 20 条根本的体系办理指令都能够协助您更好地了解您的运用程序。它们还能够协助处理为什么运用程序可在本地正常作业但不能在长途主机上作业这类的体系毛病。这些指令适用于Linux开发环境、容器和虚拟机。

1. curl

curl 用于传输一个 URL。能够运用这条指令用于测验运用程序的端点或与上游服务端点的衔接。curl 还可用于查看你的运用程序是否能衔接到其他服务,例如数据库,或查看您的服务是否处于健康的状况。

举个比如,假定你的运用程序抛出一个 HTTP 500 过错,标明无法拜访 MongoDB 数据库:

$ curl -I -s myapplication:5000 HTTP/1.0 500 INTERNAL SERVER ERROR

-I 选项用于显现头信息,-s 选项标明运用静默形式,不显现过错和进展。查看数据库的端点是否正确:

$ curl -I -s database:27017 HTTP/1.0 200 OK

那么或许是什么问题呢? 查看您的运用程序是否能够拜访数据库以外的其他方位:

$ curl -I -s https://opensource.com HTTP/1.1 200 OK

看起来这没问题,现在测验拜访数据库。您的运用程序正在运用数据库的主机名,因而请先测验:

$ curl database:27017 curl: (6) Couldn't resolve host 'database'

这标明您的运用程序无法解析数据库,由于数据库的 URL 不可用或主机(容器或VM)没有可用于解析主机名的域名服务器。

2. python -m json.tool / jq

运用 curl 后,API 调用的输出可读性或许较差。有时候,你期望将生成的 JSON 数据格式化输出以查找特定的条目。Python 有一个内置的库可协助您完成这个需求。能够运用python -m json.tool来缩进和安排 JSON。要运用 Python 的 JSON 模块,需求运用管道机制,将 JSON 文件的输出作为输入,写入到python -m json.tool指令行。

$ cat test.json {"title":"Person","type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"age":{"description":"Age in years","type":"integer","minimum":0}},"required":["firstName","lastName"]}

要运用 Python 库,运用 -m (module) 选项将输出内容和 Python 库组合成管道。

$ cat test.json | python -m json.tool { "properties": { "age": { "description": "Age in years", "minimum": 0, "type": "integer" }, "firstName": { "type": "string" }, "lastName": { "type": "string" } }, "required": [ "firstName", "lastName" ], "title": "Person", "type": "object" }

关于更高档的 JSON 解析,能够装置 jq。jq 供给了一些从 JSON 输入中提取特定值的选项。要像上面的 Python 模块相同将 JSON 输出格式化,只需将 jq 运用到输出即可。

$ cat test.json | jq { "title": "Person", "type": "object", "properties": { "firstName": { "type": "string" }, "lastName": { "type": "string" }, "age": { "description": "Age in years", "type": "integer", "minimum": 0 } }, "required": [ "firstName", "lastName" ] }

3. ls

ls用于列出目录中的文件,体系办理员和开发者会常常运用这个指令。在容器空间中,这条指令能够协助承认容器镜像中的目录和文件。除了查找文件,ls 还能够用于查看权限。下面的示例中,由于权限问题,你不能运转 myapp。当你运用ls -l查看权限时,你会发现它的权限在-rw-r–r–中没有”x”,只要读写的权限。

$ ./myapp bash: ./myapp: Permission denied $ ls -l myapp -rw-r--r--. 1 root root 33 Jul 21 18:36 myapp

4. tail

tail显现文件的终究一部分内容。一般状况下,你不需求阅读每行日志以进行毛病扫除。而是需求查看日志中对运用程序的最新恳求的阐明。例如,当你向 Apache HTTP 服务器建议恳求时,能够运用tail来查看日志中产生的状况。

运用

tail -f来盯梢日志文件并在建议恳求时查看它们。

-f选项标明跟从的意思,它可在日志被写入文件时输出它们。下面的示例具有每隔几秒拜访端点的后台脚本,日志会记载恳求。除了实时盯梢日志,还能够运用 tail 带上-n选项来查看文件的终究 100 行。

$ tail -n 100 /var/log/httpd/access_log

5. cat

cat首要用于查看文件内容和兼并文件。你或许会运用cat来查看依靠项文件的内容,或承认已在本地构建的运用程序的版别。

$ cat requirements.txt flask flask_pymongo

上面的示例查看您的 Python Flask 运用程序是否已将 Flask 列为依靠项。

6. grep

grep 能运用特定形式匹配(包含正则表达式)查找文本。假定你在另一条指令的输出中寻觅特定的形式,grep会高亮显现相关的行。可运用这条指令来查找日志文件以及特定的进程等。假定想查看 Apache Tomcat 是否发动,你或许会指令行的数量给吞没。但讲输出的内容和grep指令组合成管道,能够将标明服务器已发动的行独立出来。

壮观的20条系统管理员需要知道的命令的视图

$ cat tomcat.log | grep org.apache.catalina.startup.Catalina.start 01-Jul-2017 18:03:47.542 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 681 ms

7. ps

ps用于查看进程的各种状况信息。运用该指令可承认正在运转的运用程序或承认预期的进程。例如,假定要查看正在运转的 Tomcat Web 服务器,可运用带有选项的ps来获取 Tomcat 的进程 ID。

$ ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 2 18:55 ? 00:00:02 /docker-java-home/jre/bi root 59 0 0 18:55 pts/0 00:00:00 /bin/sh root 75 59 0 18:57 pts/0 00:00:00 ps -ef

为了更好的易读性,可运用grepps组合成管道。

$ ps -ef | grep tomcat root 1 0 1 18:55 ? 00:00:02 /docker-java-home/jre/bi

8. env

env用于列出一切环境变量及为其赋值。在毛病扫除期间,你或许会发现需求查看是否有过错的环境变量来阻挠运用程序发动。鄙人面的示例中,该指令用于查看程序主机上设置的环境变量。

$ env PYTHON_PIP_VERSION=9.0.1 HOME=/root DB_NAME=test PATH=/usr/local/bin:/usr/local/sbin LANG=C.UTF-8 PYTHON_VERSION=3.4.6 PWD=/ DB_URI=mongodb://database:27017/test

请注意,该运用程序正在运用 Python 3,并具有衔接到 MongoDB 数据库的环境变量。

9. top

top用于显现体系中各个进程的信息和资源占用状况,相似于 Windows 的使命办理器。运用该指令可承认哪些进程正在运转,以及它们耗费了多少的内存和 CPU。一种常见的状况是当你运转一个运用程序时,它在一分钟后挂掉。这时,你首要查看运用程序的回来过错,发现是一个内存过错。

$ tail myapp.log Traceback (most recent call last): MemoryError

你的运用是否真的内存不足?要承认这个问题,可运用top来查看运用程序耗费多少 CPU 和内存。当运用 top 指令后,您注意到一个 Python 运用程序运用了大部分的 CPU,其内存运用量也敏捷攀升。当它运转时,假定进程是你的运用程序,则按”C”键来查看完好指令并进行逆向工程。发现原来是你的内存密集型运用程序(memeater.py)。当你的运用程序现已竭尽内存,体系会杀掉它并回来一个内存不足(OOM)的过错。

运用程序的内存和 CPU 运用量增加,终究由于内存不足而被杀掉。

经过按下”C”键,能够看到发动该运用程序的完好指令

除了查看运用程序,还能够运用top来调试其他运用 CPU 或内存的进程。

10. netstat

netstat用于显现网络状况信息。该指令可显现正在运用的网络端口及其传入衔接。可是,netstat 在 Linux 中不能开箱即用。假定需求装置它,需求在net-tools包中找到它。作为在本地进行实验或将运用程序推送到主机的开发者,或许会收到端口已被分配或地址已被运用的过错。运用netstat得到协议、进程和端口这些信息,下图标明 Apache HTTP 服务器现已鄙人面的主机上运用了 80 端口。

运用

netstat -tulpn标明 Apache 现已在这台机器上运用了 80 端口。

11. ip address

假定ip address在你的主机上不能运用,有必要运用iproute2包进行装置。ip address用于显现运用程序的主机接口和 IP 地址。可运用 ip address来验证你的容器或主机的 IP 地址。例如,当你的容器衔接到两个网络时,ip address 可显现哪个接口衔接到了哪个网络。关于简略的查看,能够随时运用ip address指令获取主机的 IP 地址。下面的示例展现了在接口 eth0 上的 Web 层容器的 IP 地址为 172.17.0.2

运用

ip address显现 eth0 接口的 IP 地址为 172.17.0.2

12. lsof

lsof用于列出当时体系翻开的文件(list open files)。在某些 Linux 体系中,或许需求运用lsof包来装置lsof。在 Linux 中,简直任何和体系的交互都被视为一个文件。因而,假定你的运用程序写入文件或代开网络衔接,lsof将会把这个交互映射为一个文件。与netstat相似,可运用 lsof 来查看侦听端口。例如,假定要查看 80 端口是否正在被运用,可运用lsof来查看哪个进程正在运用它。下面的示例中,能够看到 httpd (Apache) 在 80 端口上侦听。还能够运用lsof来查看 httpd 的进程ID,查看 Web 服务器的二进制文件所在方位(/usr/sbin/httpd)。

Lsof标明晰 httpd 在 80 端口上侦听。查看 httpd 的进程ID还能够显现一切需求运转的文件httpd。

翻开文件列表中的翻开文件的称号有助于承认进程的来历,特别是 Apache。

13. df

能够运用df显现闲暇的磁盘空间(display free disk space)以排查磁盘空间问题。挡在容器办理器上运转运用程序时,或许会收到一条过错信息,提示容器主机上短少可用空间。尽管磁盘空间应该由体系办理程序来办理和优化,你仍能够运用df找出目录中的现有空间并承认是否没有空间。

Df显现每个文件体系的磁盘空间、绝对空间以及其可用性。

-h选项标明以可读性较高的方法来显现信息,上面的比如标明这个主机具有很多的磁盘空间。

14. du

du指令也是用于查看运用空间的,可是与 df 指令不同的是 du 指令是对文件和目录磁盘运用的空间的查看,要获取有关哪些文件在目录中运用磁盘空间的更多详细信息,能够运用 du 指令,和 df 指令仍是有一些差异的。例如,你想了解那个日志文件占用 /var/log 目录最多的空间,能够运用du指令加上-h选项和用于获取总巨细的-s选项。

温暖的20条系统管理员需要知道的命令的图片

$ du -sh /var/log/* 1.8M /var/log/anaconda 384K /var/log/audit 4.0K /var/log/boot.log 0 /var/log/chrony 4.0K /var/log/cron 4.0K /var/log/maillog 64K /var/log/messages

上面的示例中显现了/var/log下的的最大目录为 /var/log/audit。能够将dudf调配运用,以承认在运用程序的主机上运用的磁盘空间。

15. id

要查看运转运用程序的用户,可运用id指令来回来用户身份。id 指令能够显现真实有效的用户ID(UID)和组ID(GID)。下面的示例运用Vagrant来测验运用程序并阻隔其开发环境。登录进 Vagrant 盒子后,假定测验装置 Apache HTTP Server(依靠联络),体系会提示你需求以 root 身份履行该指令。要查看你的用户ID和组ID,运用id指令,会发现你正在”vagrant”组中以”vagrant”用户身份运转。

$ yum -y install httpd Loaded plugins: fastestmirror You need to be root to perform this command. $ id uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

要处理此问题,有必要以超级用户的身份运转该指令,这将供给提高的权限。

16. chmod

chmod 指令用来改变文件或目录的权限。当你在主机上初次运转运用程序的二进制文件时,或许会收到过错提示信息“回绝拜访”。如ls的示例所示,能够用于查看运用程序二进制文件的权限。

$ ls -l total 4 -rw-rw-r--. 1 vagrant vagrant 34 Jul 11 02:17 test.sh

这标明您没有权限(没有“x”)来运转二进制文件。chmod能够修正权限,使的用户能够运转二进制文件。

$ chmod +x test.sh [vagrant@localhost~]$ ls -l total 4 -rwxrwxr-x. 1 vagrant vagrant 34 Jul 11 02:17 test.sh

如比如所示,这将更新权限,使其具有可履行的权限。现在当你测验履行二进制文件时,运用程序不会抛出回绝拜访的过错。当将二进制文件加载到容器时,Chmod或许很有用。它能确保容器具有适宜的权限以履行二进制文件。

17. dig / nslookup

dig指令是常用的域名查询东西,能够用来测验域名体系作业是否正常。域名服务器(DNS)有助于将 URL 解析为一组运用程序服务器。但是,你会发现有些 URL 不能被解析,这会导致运用程序的衔接问题。例如,假定你测验从运用程序的主机拜访你的数据库。你收到一个”不能解析”的过错。要进行毛病排查,你测验运用 dig(DNS 查询东西)或nslookup(查询 Internet 域名服务器)来承认运用程序好像无法解析数据的原因。

$ nslookup mydatabase Server: 10.0.2.3 Address: 10.0.2.3#53 ** server can't find mydatabase: NXDOMAIN

运用nslookup显现无法解析 mydatabase。测验运用dig处理,但仍是相同的成果。

$ dig mydatabase ; > DiG 9.9.4-RedHat-9.9.4-50.el7_3.1 > mydatabase ;; global options: +cmd ;; connection timed out; no servers could be reached

这些过错或许是由许多不同的问题引起的。假定无法调试出根本原因,与体系办理员联络以进行更多的查询。关于本地测验,这些问题或许标明你的主机的域名服务器未正确装备。要运用这些指令,需求装置BIND Utilities

18. iptables

iptables 用于阻挠或答应 Linux 主机上的流量,用于 IP 包过滤器办理,相似于网络防火墙。此东西可阻挠某些运用程序接纳或发送恳求。更具体地说,假定您的运用程序难以拜访另一个端点,或许已被 iptables 回绝流量拜访该端点。例如,假定您的运用程序的主机无法拜访 Opensource.com,您运用curl来测验衔接。

$ curl -vvv opensource.com * About to connect() to opensource.com port 80 (#0) * Trying 54.204.39.132... * Connection timed out * Failed connect to opensource.com:80; Connection timed out * Closing connection 0 curl: (7) Failed connect to opensource.com:80; Connection timed out

衔接超时。您置疑某些东西或许会堵塞流量,因而您运用-S选项显现iptables规矩。

$ iptables -S -P INPUT DROP -P FORWARD DROP -P OUTPUT DROP -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -i eth0 -p udp -m udp --sport 53 -j ACCEPT -A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT -A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT

前三个规矩显现,默许状况下流量已被丢掉。剩余的规矩标明答应 SSH 和 DNS 流量。在这种状况下,假定需求答应流量到外部端点的规矩,请跟上 sysadmin。假定这是用于本地开发或测验的主机,可运用iptables指令来答应适宜的流量。增加答应到主机的流量的规矩时一定要慎重。

19. sestatus

一般会在企业办理的运用程序主机上运用 SELinux(一个 Linux 安全模块)。SELinux 对主机上运转的进程供给最低权限的拜访,避免潜在的歹意进程拜访体系上的重要文件。某些状况下,运用程序需求拜访特定文件,但或许会产生过错。要查看 SELinux 是否阻挠了运用程序,运用tail和 grep 在/var/log/audit日志记载中查找”denied”(被回绝)的信息。不然,运用sestatus来查看是否发动了 SELinux。

$ sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 28

上面的输出标明运用程序的主机已启用 SELinux。在本地开发环境中,能够更新SELinux使得权限更宽松。

20. history

当你运用很多的指令进行测验和调试时,或许会忘掉有用的指令。每个shell都有一个history指令的变体。它可显现自会话开端以来运用的指令的前史记载。能够运用history来记载用来扫除运用程序毛病的指令。history 指令用于显现指定数目的指令指令,读取前史指令文件中的目录到前史指令缓冲区和将前史指令缓冲区中的目录写入指令文件。

$ history 1 clear 2 df -h 3 du

假定期望履行之前前史记载中的指令,但又不想从头输入,该怎么办?运用符号!即可,能够运用符号 ! 履行指定序号的前史指令。例如,要履行第 2 个前史指令,则输入!2,

在需求从头履行的指令的指定编号前增加!即可从头履行

这些根本指令能增强排查毛病的专业技能,可查看为什么运用程序能够在一个开发环境中作业,而在另一个开发环境中则不能够。许多体系办理员运用这些指令来调试体系问题。了解一些有用的毛病排查指令可协助处理运用程序的问题。

原文来自:http://blog.jobbole.com/112085/

本文地址:https://www.linuxprobe.com/20-sa-command.html

告发/反应

相关文章

718吃瓜网友科普:芯片的芯怎么读?正确发音解析

718吃瓜网友科普:芯片的『芯』怎么读?发音解析近日,『718吃瓜网友』发起的热门话题引发讨论:『芯片的“芯”到底读xīn还是xìn?』。这个看似简单的问题,其实藏着不少语言学问。今天我们就用轻松有趣...

广告代言拿到手软,谷爱凌这两年收入至少超越1个亿

近年国内文娱明星一再翻车,品牌方找其代言,危险现已变得很大,很或许因小失大。而体育明星,首要必须用成果说话,实力都是一望而知的。一同,体育明星能够代表国家出战,在品质上,要比文娱明星更有保证、愈加安全...

燕京新语丨回应年代审美新需求,《天山雪》引领杂技剧开展进入新阶段

“雄鹰能够飞过的当地,拉上钢丝也能够走过去。”昨日在京举行的杂技剧《天山雪》研讨会上,国家级非遗达瓦孜代表性传承人阿迪力·吾休尔说。他曾是应战高空的雄鹰,《天山雪》里一以贯之的雄鹰意象及雄鹰精力,也在...

为“一分钱”抱歉的屈臣氏,正尽力自救的屈臣氏,还能拯救年青顾客的心吗?

本文共2409字阅读完约4分钟金融出资报记者 梅婧 陈雨禾 薛蕾旧日化妆品零售巨子屈臣氏,现在因“1分钱促销面膜”风云而堕入言辞漩涡中。最新消息显现,屈臣氏已连夜抱歉称将补货实行剩下订单,但是余波并没...

巴菲特最青的估值目标宣布美股买入信号

巴菲特最青的估值目标宣布美股买入信号

巴菲特所推重的一个要害估值目标显现美国股市相对使宜,这进一步支撑了美国股市微弱反弹仍有上涨空间的观念。这项“巴菲特目标”衡量的是以威尔希尔5000指数为基准的美国股市总价值除以美国国内生产总值美元值的...

男人开迈巴赫加油站逃单200元,结清费用就完事?别给人幻想空间

极目新闻谈论员 吴双建近来,西安网友称一男人开迈巴赫在蓝田某加油站加油未付款驾车逃单,此事引发广泛重视。视频显现,加油站职工正在给一辆黑色迈巴赫加油,刚刚加完预备收费时,司机一脚油门溜之大吉。到发稿,...

友情链接: