五分钟扫盲:25个工作中常用的Linux命令

§基础篇

cd 命令

  语法:cd [dirName]。

  功能:全拼change directory,从当前工作目录切换到指定的工作目录。dirName 表示法可为绝对路径或相对路径。

  说明:该命令将当前目录改变至dirName所指定的目录。若没有指定dirName,则回到用户的主目录。为了改变到指定目录,用户必须拥有对指定目录的执行和读权限。

  常用方式示例:

  • cd .. 返回上一级目录。
  • cd ~ 进入当前用户目录。
  • cd /root/Documents # 切换到目录/root/Documents
ls / ll 和 clear 命令

  语法:ls [选项] [目录或是文件]

  功能:列出目录的内容

  说明:list之意,用于查看某个目录的内容。当未给出目录名或是文件名时,就显示当前目录的信息。ll与之类似,不再赘述。

  clear:清除屏幕上的信息,清屏后,提示符移动到屏幕左上角。

  cd和ls应该是使用最多的两个命令,尤其是对于Linux目录结构陌生的用户。

grep 命令 : 查找关键字

  语法:grep [-acinv] [--color=auto] [keyword] [文件或目录...]

  功能:文本搜索工具,类似于正则表达式搜索,可以在一个大的文件中快速搜索到满足一定规则的内容,查到就高亮显示。

  说明:Global Regular Expression Print 的缩写,分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等。

例如,取出文件/etc/man.config中包含MANPATH的行,并把找到的关键字加上颜色

grep --color=auto 'MANPATH' /etc/man.config

find命令

  语法:find [PATH] [option] [action]

  功能:多用于查找文件路径。

  说明:常用的是-name fileName 找出文件名为fileName的文件。

  案例一:搜索Data目录下以点fna结尾的文件,

find ../Data -name *.fna

  案例二:查找大于100M的文件;

find ./ -size 100M

  案例三:查找 48 小时内修改过的文件,可以分分钟确认关键文件是否被修改

find -atime -2

  案例四:查找关键词keyword在哪个目录:

find -name "keyword"
kill

  语法:kill -signal PID。

  功能:启动或者结束进程,PID可以通过ps命令、管道命令加上grep命令进行筛选获得。

  说明:该命令用于向某个工作(%jobnumber)或者是某个PID(数字)传送一个信号,它通常与ps和jobs命令一起使用.

  signal的常用参数如下:

  • 1:SIGHUP,启动被终止的进程
  • 2:SIGINT,相当于输入ctrl+c,中断一个程序的进行
  • 9:SIGKILL,强制中断一个进程的进行(常用)
  • 15:SIGTERM,以正常的结束进程方式来终止进程
  • 17:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行

注:最前面的数字为信号的代号,使用时可以用代号代替相应的信号。例如:
以正常的结束进程方式来终于一个后台工作(pid = 2821)

kill -15 2821

tail

  语法:tail [options] [fileName]

  功能:查看文件的内容。

  说明:有一个常用的参数 -f 常用于查阅正在改变的日志文件。
参数-n<行数> 显示文件的尾部 n 行内容。例如:

tail -f fileName # 把 fileName 文件里的最尾部的内容显示在屏幕上,并且不断刷新。
tail -500f fileName # 在屏幕上显示 fileName 文件里尾部500行的内容,且不断刷新。

cp命令

全拼copy,其功能为复制文件或目录。

  语法:cp [选项] 源文件或目录 目标文件或目录。

  功能:把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。

  说明:为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp命令拷贝文件后,这个文件就会被新源文件覆盖,因此,建议用户在使用cp命令拷贝文件时,最好使用i选项。

mv命令

  语法:mv [选项] 源文件或目录 目标文件或目录。

  功能:用户可以使用mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中。

  说明:视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。

案例:将文件 test.log 重命名为 test1.txt

mv test.log test1.txt

rm命令

  语法:rm [选项] 文件…

  功能:删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。

  说明:对于链接文件,只是断开了链接,原文件保持不变。

mkdir命令

  语法:mkdir [-p] dirName。

  功能:创建一个名为dirName的子目录。

  说明:-p 确保目录名称存在,不存在的就建一个。

rmdir 命令

  语法:rmdir [选项] dir-name

  功能:删除空目录。

cat 命令

  语法:cat fileName。

  功能:查看文本文件的内容,后接要查看的文件名。

  说明:通常可用管道与more和less一起使用,从而可以一页页地查看数据。例如:cat text | less # 查看text文件中的内容

pwd 命令

  语法:pwd

  功能:显示当前工作目录的绝对路径。

  说明:全拼print working directory。在Linux层次目录结构中,用户利用cd命令可以从一个目录转换到另一个目录,然而,没有提示信息告知用户目前处于哪一个目录中。要想知道当前所处的目录,可以使用pwd命令,它显示整个路径名。

gzip和unzip命令

  语法:gzip/unzip [选项] 待压缩的文件名 或者 unzip [选项] 压缩文件名.zip。

  功能:前者用于压缩,后者用于解压。

  说明:减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。

ping 命令 : 检测主机

  执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

  语法:ping [-c]  [主机名称或IP地址]

-c<完成次数> 设置完成要求回应的次数。

telnet 命令 : 端口是否可访问

  语法:telnet [主机名称或IP地址<通信端口>]

  虽然 Linux telnet 命令主要用于远端登入。执行 telnet 指令开启终端机阶段作业,并登入远端主机,但是我更经常用它来查看某个远端主机端口是否可访问。

| 管道命令

  通常情况下,我们在终端只执行一条命令,那么如何执行多条命令呢?使用管道命令。管道是一种通信机制,通常用于进程间的通信(也可通过 socket 进行网络通信),它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。

ps 命令

  语法:ps [options]

  功能:查看当前进程 (process) 的状态。

  options:-e 显示所有进程,-f 全格式。

  说明:英文全拼是process status。列出当前正在运行的程序,连带命令行

ps -ef

  那如何定位我们想要查看的进程A,这个时候需要结合管道命令和grep,即 ps -ef | grep A。例如,查看是否已经有tomcat在运行:

ps -ef | grep tomcat

watch

  语法:watch  [参数]  [指令]

  功能:动态查看指令执行的结果

  说明:以周期性的方式执行给定的指令,指令输出以全屏方式显示。

  • 比如如果需要每隔一秒高亮显示网络连接数的变化情况。则

watch -n 1 -d netstat -ant

  • 每隔一秒高亮显示http连接数的变化情况

watch -n 1 -d 'pstree | grep http'

  • 十秒一次输出系统的平均负载

watch -n 10 'cat /proc/loadavg'

diff

  语法:diff -c file1 file2

  功能:显示两个文件的差异

§进阶篇

  部署在Linux系统的服务出现性能问题,一般可以通过 top、iostat、free、vmstat和ifstat等命令来初步定位问题,下面就聊聊这几位宝贝。

top 及其精简版uptime

  语法:top [options] / uptime

  功能:实时显示 process 的动态,查看机器整体性能。然后,按数字“1”可监控每个逻辑CPU的状况。如果不按1,则在top视图里面显示所有cpu的平均值。

  说明:常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。重点看load average、%CPU和%MEM三个指标。

top - 18:17:22 up 8:52, 1 user, load average: 0.05, 0.04, 0.05
Tasks: 99 total, 2 running, 97 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 739932 total, 353944 free, 125284 used, 260704 buff/cache
KiB Swap: 1044476 total, 1044476 free, 0 used. 459304 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
47 root 20 0 0 0 0 S 0.1 0.0 0:36.55 kworker/0:1
643 root 20 0 21668 1284 972 S 0.1 0.2 0:18.13 irqbalance
1668 root 20 0 0 0 0 S 0.1 0.0 0:01.08 kworker/1:1
1 root 20 0 127968 6480 4096 S 0.0 0.9 0:01.93 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.23 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.02 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 R 0.0 0.0 0:01.95 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain

  第一行,任务队列信息,与 uptime 命令的执行结果一模一样。

系统时间:18:17:22
运行时间:up 8:52 min,
当前登录用户: 1 user
负载均衡 load average: 0.05, 0.04, 0.05

  load average后面的三个数分别代表1分钟、5分钟和15分钟的负载情况,是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。sum(三个值)/3\*100%>60% 同样表明系统在超负荷运转了。

  第七行以下:各进程(任务)的状态监控

PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S —进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)

top -pid 4712 指定进程 id后显示 process 的动态

vmstat

  语法:vmstat

  功能: 查看磁盘空间

  说明:是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的进程、虚拟内存、CPU活动进行监控。主要看首位两个参数proce和cpu。

  示例:vmstat -n 2 3 每两秒采样一次,共采样三次:

  CPU:

  • us 用户进程消耗CPU时间百分比。我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。us值越高,用户消耗CPU时间越多,如果长期大于50%,则需要优化系统。
  • sy 内核进程消耗CPU时间百分比。如果太高,表示系统调用时间长,例如是IO操作频繁。
  • id  空闲 CPU时间,一般来说,id + us + sy = 100。

  通常我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。

  Procs(进程):

  • r: 运行队列中进程数量,就是说多少个进程真的分配到CPU。
  • b: 等待IO的进程数量。

   查询所有CPU信息:

mpstat -P ALL 2

  idle CPU空闲率,超过80%说明性能可以,低于的话就要优化系统了。每个进程使用 cpu 的用量分解信息:

pidstat -u 1 -p 进程编号

free

  语法:free [-bkmotV][-s <间隔秒数>]

  功能:显示Linux系统中物理内存、交换内存的使用统计信息。

free -s 10 //每10s 执行一次命令

查看额外信息: pidstat -p 进程号 -r 采样间隔秒数

df

  语法:df [选项] [dirName]

  功能:统计磁盘使用情况,显示磁盘可用空间容量信息及空间结点信息。

  说明:英文全拼是disk free。一般加一个-h选项,然后接要查看的磁盘,默认所有磁盘。

  用法1:df 表示查看磁盘空间时以字节方式显示空间总大小和剩余空间。

  用法2:df -h 表示查看磁盘空间时以KB、MB、GB等单位方式显示剩余和总空间大小,比较常用的方式。温馨提示,常用选项-h 是human-readable的缩写,功能是使用我们更易读的格式,将文件或者消耗容量以(GB,kB等)列出来。

$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 5.5T 742G 4.7T 14% /
devtmpfs 126G 0 126G 0% /dev

  输出信息中,Filesystem表示文件系统(可以理解为分区),Size表示总空间,Used(表示已使用的空间),Avail(表示剩余空间),Use%(表示已使用空间的百分比),Mounted on(表示挂载点或磁盘挂载对应的目录路径)

iostat 磁盘IO

  语法:iostat

  功能:监控系统设备的IO负载情况

  说明: I/O statistics 是输入/输出统计的缩写。特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。

  如果 %iowait 的值过高,表示硬盘存在I/O瓶颈。%idle值高说明CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应先排查应用程序,如果不存在问题,则加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

Linux 远程登录

  介绍点远程登录的基础知识,温故知新。

  Linux 服务器远程登录常用客户端工具:Putty和XShell(推荐)。

  使用sftp客户端安装连接sftp服务器,来上传和下载安装包常用客户端工具:Winscp(推荐)和xftp。

小结

  以上只是日常运维工作需要基本掌握的一些命令,有了它们可以完成绝大部分的工作。当然,技不压身,如果掌握更多的命令可以更高效地完成工作。

Reference

posted @ 2021-03-14 17:35  楼兰胡杨  阅读(358)  评论(0编辑  收藏  举报