zoukankan      html  css  js  c++  java
  • 五分钟扫盲: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

    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 指令开启终端机阶段作业,并登入远端主机,但是我更经常用它来查看某个远端主机端口是否可访问。

    b18f28cae4ba34595816739bdea3b470.png

    | 管道命令

      通常情况下,我们在终端只执行一条命令,那么如何执行多条命令呢?使用管道命令。管道是一种通信机制,通常用于进程间的通信(也可通过 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 每两秒采样一次,共采样三次:
    d76d0c32bdfc1278b3f32b81644ef6a5.png

      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

    59b5ebd3cbe4f2337f2d0c35be426c44.png

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

    pidstat -u 1 -p 进程编号

    fb43a8553d81f7dc550526cbddf130c6.png

    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


      读后有收获,小礼物走一走,请作者喝咖啡。

    赞赏支持

  • 相关阅读:
    运算符、基本数据类型-----整型、字符串
    练习题
    python安装与初识(python起源、分类,if语句、while语句、基本数据类型、变量的命名)
    hdu2187悼念512汶川大地震遇难同胞——老人是真饿了(贪心 简单题)
    牛客小白月赛9 A签到(分数取模,逆元)
    牛客小白月赛9H论如何出一道水题(两个连续自然数互质)
    EOJ3134. 短信激活码(大数幂取模)
    EOJ3650 转机折扣(26进制,字符串)
    hdu1042 N!(大数求阶乘)
    hdu2061 Treasure the new start, freshmen!(暴力简单题)
  • 原文地址:https://www.cnblogs.com/east7/p/14533268.html
Copyright © 2011-2022 走看看