目录

linux常用操作命令

有问题找男人

man 命令

显示说明

  • NAME 命令的名称和单行描述
  • SYNOPSIS 怎样使用命令
  • DESCRIPTION 命令功能的深入讨论
  • EXAMPLES 怎样使用命令的例子
  • SEE ALSO 相关主题(通常是手册页)

数字说明

  • 1 用户在shell环境中可以操作的命令或是可执行的文件
  • 2 系统内核(kernel)可以调用的函数
  • 3 常用的函数or函数库
  • 4 设备配置文件
  • 5 配置文件的格式
  • 6 游戏相关
  • 7 linux网络协议和文件系统
  • 8 系统管理员可以用的命令
  • 9 跟内核有关系的文件

时间日期类

  • date
  • cal

文件目录类

  • pwd,显示目前的目录

  • ls

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    功能:列出目录的内容
    语法:ls [选项] [目录或是文件]
    命令中主要选项的含义如下:
    选项与参数:
    -a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
    -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
    -l :长数据串列出,包含文件的属性与权限等等数据;(常用)
    每行列出的信息依次是: 
    文件类型与权限 链接数 文件属主 文件属组   文件大小用byte来表示   建立或最近修改的时间 名字 
    
    • 罗列目录里内容,ls 目录
    • 别名,ll
    • ls –R 递归查看目录
  • mkdir,创建一个新的目录

    • -p,可以自行帮你创建多层目录
  • rmdir 删除一个空的目录

  • touch

  • cd,切换目录

    • cd ~ 用户主目录
    • cd - 回到上一目录
  • cp,复制文件或目录

  • rm, 移除文件或目录

    提供一个移动文件到一个不存在目录的小技巧

    1
    2
    3
    4
    
    # 先创建目录
    $ mkdir -p ~/my/script
    # 再移动目录,$ _扩展到传递给上一个shell命令的最后一个参数,即:新创建的目录
    $ mv ReverseProxy_darwin_amd64 $_
    
  • mv ,移动文件与目录或修改名称

  • cat ,由第一行开始显示文件内容

    1
    2
    3
    4
    5
    6
    7
    
    选项与参数:
    -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
    -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
    -E :将结尾的断行字节 $ 显示出来;
    -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
    -T :将 [tab] 按键以 ^I 显示出来;
    -v :列出一些看不出来的特殊字符
    
  • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写!

  • more 一页一页的显示文件内容

    1
    2
    3
    4
    
    空白键 (space):代表向下翻一页;
    Enter       :代表向下翻『一行』;
    q           :代表立刻离开 more ,不再显示该文件内容。
    b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
    
  • less 与 more 类似,但是比 more支持的功能更多

    1
    2
    3
    4
    5
    6
    7
    8
    
    空白键   :向下翻动一页;
    [pagedown]:向下翻动一页;
    [pageup] :向上翻动一页;
    /字串    :向下搜寻『字串』的功能;
    ?字串    :向上搜寻『字串』的功能;
    n        :重复前一个搜寻 (与 / 或 ? 有关!)
    N        :反向的重复前一个搜寻 (与 / 或 ? 有关!)
    q        :离开 less 这个程序;
    
  • head 只看头几行

  • tail 只看尾巴几行

  • history 所敲命令历史

  • 重定向命令

    • > 覆盖
    • >> 追加
  • echo

    输出内容到控制台,基本语法echo [选项] [输出内容]

    echo会自动换行

  • ln 给文件创建一个软连接

    用法: ln -s[源文件或目录][软连接名]

    eg使jmeter支持快捷启动只需要在/usr/local/bin下新建一个软连接即可,如下:

    ln -s $JMETER_HOME/bin/jmeter /usr/local/bin/jmeter

网路配置类

ifconfig

磁盘分区类

分区

注意
  • 主分区 操作系统所在分区
  • 拓展分区 主分区以外的空间都是拓展分区
  • 逻辑分区 拓展分区上再进行划分,比如D盘E盘

fdisk -l

https://gitee.com/lienhui68/picStore/raw/master/null/image-20201005181300111.png

  • s表示scsi硬盘,常用两种硬盘ide、scsi
  • d表示disk
  • a表示第一块盘(a为基本盘(第一块硬盘,两块就会有b),b为基本从属盘,c为辅助主盘,d为辅助从属盘) 数字,前四个分区用1~4表示,它们是主分区或扩展分区,从5开始才是逻辑分区

上面四个放在一块表示我的计算机里面第一块SCSI硬盘

挂载/卸载

对于Linux用户来讲,不论有几个分区,分别分给哪一个目录使用,它总归就是一个根目录、一个独立且唯一的文件结构Linux中每个分区都是用来组成整个文件系统的一部分,她在用一种叫做“挂载”的处理方法,它整个文件系统中包含了一整套的文件和目录,并将一个分区和一个目录联系起来,要载入的那个分区将使它的存储空间在这个目录下获得

mount / umount :将分区挂载到某个目录 / 将分区从某个目录卸载

mount 【参数】 设备名称 落地挂载点目录

unmount 挂载点目录

小结分区跟目录的关系
  • linux分区也是目录.如/boot 表明分区了一个boot文件夹的分区.
  • Windows的文件都是放在分区中,系统寻找文件是从分区开始的,所有分区之间是并行的关系。而Linux中,由于文件结构是树形的,根目录必须占用一个分区,然后这个根目录下可以挂载其他的分区,因此这些个分区可以是并行的或者从属的关系。

比如:有一块硬盘,分成了4个分区,分别是/;/boot;/usr;对于/和/boot或者/和/usr,它们是从属关系;对于/boot和/usr,它们是并列关系。

以下节选自《鸟哥私房菜》

image-20201005183804217

硬盘

列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况

df

选项与参数:

  • -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
  • -k :以 KBytes 的容量显示各文件系统;
  • -m :以 MBytes 的容量显示各文件系统;
  • -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
  • -H :以 M=1000K 取代 M=1024K 的进位方式;
  • -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
  • -i :不用硬盘容量,而以 inode 的数量来显示

du

df 可以查看一级文件夹大小、使用比例、档案系统及其挂入点,但对文件却无能为力

du 查询文件或文件夹的磁盘使用空间。

两者配合使用,非常有效。比如用df查看哪个一级目录过大,然后用df查看文件夹或文件的大小,如此便可迅速确定症结。

如果当前目录下文件和文件夹很多,使用不带参数du的命令,可以循环列出所有文件和文件夹所使用的空间。这对查看究竟是那个地方过大是不利的,所以得指定深入目录的层数,参数:–max-depth=,这是个极为有用的参数!

如下,注意使用“*”,可以得到文件的使用空间大小.

1
2
du -h --max-depth=1 /home/work/    # 仅列出home目录下面所有的一级目录文件大小;
du -h --max-depth=1 /home/work/*   # 列出home下面所有一级目录的一级目录文件大小。

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
$ du -h .
328K	./img
380M	./null
364M	./.git/objects/pack
  0B	./.git/objects/info
364M	./.git/objects
4.0K	./.git/info
4.0K	./.git/logs/refs/heads
8.0K	./.git/logs/refs/remotes/origin
8.0K	./.git/logs/refs/remotes
 12K	./.git/logs/refs
 16K	./.git/logs
 44K	./.git/hooks
4.0K	./.git/refs/heads
  0B	./.git/refs/tags
8.0K	./.git/refs/remotes/origin
8.0K	./.git/refs/remotes
 12K	./.git/refs
364M	./.git
744M	.

搜索查找类

find

find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。

命令:find+搜索路径+参数+搜索关键字

  • 按文件名:find /home/esop -name 't*'
  • 按拥有者:find /home/esop -user esop
  • 按文件大小:find /home/esop -size esop

示例

1
2
3
4
➜  / pwd
/
➜  / find /tmp -name 'a.*'
/tmp/com.eh/source/io/a.txt

grep

在文件内搜索字符串匹配的行并输出

命令:grep+参数+查找内容+源文件

参数:

  • -c:只输出匹配行的计数。

  • -I:不区分大小写(只适用于单字符)。

  • -h:查询多文件时不显示文件名。

  • -l:查询多文件时只输出包含匹配字符的文件名。

  • -n:显示匹配行及行号。

  • -s:不显示不存在或无匹配文本的错误信息。

  • -v:显示不包含匹配文本的所有行。

    1
    
    $ ps -ef | grep zookeeper | grep -v grep
    

示例

1
2
3
➜  ~ grep -ni "samba" nsswitch.conf
32:#	winbind			Use Samba winbind support
33:#	wins			Use Samba wins support

进程线程类

ps

显示进程的状态,最常用的方法是

  • ps -aux

    • a 显示当前终端的所有信息
    • u 指定(当前)用户的所有进程
    • x 显示后台运行的参数

    https://gitee.com/lienhui68/picStore/raw/master/null/20201007170523.png

    • System V 展示风格
    • 项目说明
      • USER:用户名称
      • PID:进程号
      • %CPU:进程占用 CPU 的百分比
      • %MEM:进程占用物理内存的百分比
      • VSZ:进程占用的虚拟内存大小(单位:KB)
      • RSS:进程占用的物理内存大小(单位:KB)
      • TT:终端名称,缩写 .
      • STAT:进程状态,其中 S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先 级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
      • STARTED:进程的启动时间
      • TIME:CPU 时间,即进程使用 CPU 的总时间
      • COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
  • ps -ef 是以全格式显示当前所有的进程

    • e 显示所有进程。
    • f 显示程序间的关系,pid & ppid

    https://gitee.com/lienhui68/picStore/raw/master/null/20201007170611.png

    • BSD风格
    • 项目说明
      • UID:用户 ID
      • PID:进程 ID
      • PPID:父进程 ID
      • C:CPU 用于计算执行优先级的因子。数值越大,表明进程是 CPU 密集型运算,执行优先级会降低;数值越小,表明进程是 I/O 密集型运算,执行优先级会提高
      • STIME:进程启动的时间
      • TTY:完整的终端名称
      • TIME:CPU 时间
      • CMD:启动进程所用的命令和参数
注意

ps -efps aux的区别

  • ef是System V展示风格,而aux是BSD风格。
  • COMMADN列如果过长,aux会截断显示,而ef不会

综上:

  • 如果想查看进程的CPU占用率和内存占用率,可以使用aux
  • 如果想查看进程的父进程ID和完整的COMMAND命令,可以使用ef

ps: 可以再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作,如果进程很多可以使用ps -ef | less查看。

netstat

显示网络统计信息的命令

此命令用来显示整个系统目前的网络状况。例如目前的连接、数据包传递数据、或是路由表内容,此命令直接输入即可使用

参数

  • -a–all 显示所有连线中的Socket
  • -n–numeric 直接使用IP地址,而不通过域名服务器
  • -p–programs 显示正在使用Socket的程序识别码和程序名称
  • -t–tcp 显示TCP传输协议的连线状况
  • -u–udp 显示UDP传输协议的连线状况

top

top 与 ps 命令很相似。它们都用来显示正在执行的进程。Top 与 ps 最大的不同之处,在于 top 在 执行一段时间可以更新正在运行的的进程。

基本语法

top [选项]

选项说明

https://gitee.com/lienhui68/picStore/raw/master/null/20201007171503.png

交互操作说明:

https://gitee.com/lienhui68/picStore/raw/master/null/20201007171536.png

应用案例

  • 案例1.监视特定用户

    top:输入此命令,按回车键,查看执行的进程。 u:然后输入“u”回车,再输入用户名,即可

    https://gitee.com/lienhui68/picStore/raw/master/null/20201007171811.png

    系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。3个值加起来的平均值如果超过60%说明系统负载已经很严重了。

  • 案例2:终止指定的进程。

    top:输入此命令,按回车键,查看执行的进程。 k:然后输入“k”回车,再输入要结束的进程ID号

  • 案例3:指定系统状态更新的时间(每隔10秒自动更新):

    1
    
    bash> top -d 10
    

压缩和解压类

gzip

命令

  • 压缩:gzip
  • 解压:gunzip + 文件.gz

特点:

  • 只能压缩文件不能压缩目录;
  • 不保留原来的文件

tar

打包目录,压缩后的文件格式.tar.gz

参数:

  • -c 产生.tar打包文件
  • -v 显示详细信息
  • -f 指定压缩后的文件名
  • -z 打包同时压缩
  • -x 解包.tar文件

命令:

  • 压缩:tar -zcvf XXX.tar.gz n1.txt n2.txt
  • 解压:tar -zxvf XXX.tar.gz

zip

压缩文件和目录的命令,window/linux通用且可以压缩目录且保留源文件

参数:-r 压缩目录

压缩:zip mypackage.zip 1.txt 2.txt 解压:unzip mypackage.zip

性能优化类

1220201005-202829
图片标题