Linux笔记 Day08---(ps命令、top命令、ulimit命令、mkdir命令、more命令、文件系统层级结构FHS)

文章目录

  • 一、ps命令
  • 二、top命令
  • 三、ulimit命令
    • (一)查看相关资源限制的ulimit
    • (二)修改相关资源限制的ulimit
    • (三)永久修改ulimit
  • 四、mkdir命令
  • 五、more命令
  • 六、文件系统层级结构FHS

一、ps命令

ps 命令是最常用的监控进程的命令,通过此命令可以查看系统中所有运行进程的详细信息

用法: ps [选项]

选项:

  • -A:所有的进程均显示出来,与 -e 具有同样的效用;
  • -a: 只显示现行终端机下的所有进程,包括其他用户的进程;
  • a:显示一个终端的所有进程,除会话引线外;
  • -u:以用户为主的进程状态 (也可不加-)
  • x:显示没有控制终端的进程;
  • -e:显示所有进程

输出格式选项:

  • l :较长、较详细的将该PID 的的信息列出(也可不加-)
  • j :工作的格式 (jobs format)
  • -f :做一个更为完整的输出。

可以看到,ps 命令有些与众不同,它的部分选项不能加入"-",比如命令"ps aux",其中"aux"是选项,但是前面不能带“-”

执行 “man ps” 命令,则会发现 ps 命令的帮助为了适应不同的类 UNIX 系统,可用格式非常多,不方便记忆。所以,建议大家记忆几个固定选项即可。比如:

  • ps aux 可以查看系统中所有的进程;
  • ps -le 可以查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级;
  • ps -l 只能看到当前 Shell 产生的进程;

其实有这三个命令就足够了

【例 1】

ps aux 查看系统中所有的进程

[dxk@admin ~]$ ps -aux
#查看系统中的所有进程
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.2  0.3 128000  6660 ?        Ss   09:16   0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    09:16   0:00 [kthreadd]
root          3  0.1  0.0      0     0 ?        S    09:16   0:02 [kworker/0:0]
root          4  0.0  0.0      0     0 ?        S<   09:16   0:00 [kworker/0:0H]
root          5  0.0  0.0      0     0 ?        S    09:16   0:00 [kworker/u256:0]
root          6  0.0  0.0      0     0 ?        S    09:16   0:00 [ksoftirqd/0]
…省略部分输出…

说明以上输出信息中各列的具体含义:

表头 含义
USER 该进程是由哪个用户产生的
PID 进程的ID
%CPU 该进程占用CPU资源的百分比,占用的百分比越高,进程越耗费资源
%MEM 该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源
VSZ 该进程占用虚拟内存的大小,默认单位为KB
RSS 该进程占用实际物理内存的大小 ,默认单位为KB
TTY 该进程是在哪个终端上运行的。其中tty1~tty7代表本地控制台终端(tty7是图形化终端),pts0—pts255代表伪终端,一般是远程连接的终端
STAT 进程状态。-Z:僵尸进程;-S:该进程处于睡眠状态,可被唤醒;-D:不可被唤醒的睡眠状态;-R:该进程正在运行…
START 该进程启动的时间
TIME 该进程占用CPU的运算时间,而不是系统时间
COMMAND 产生此进程的的命令名

【例 2】

ps -le 命令也能看到系统中所有的进程。由于 “-l” 选项的作用,所以 ps -le命令能够看到更加详细的信息,比如父进程的 PID、优先级等。但是这两个命令的基本作用是一致的

[dxk@admin ~]$ ps -le
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0      1      0  0  80   0 - 32000 ep_pol ?        00:00:03 systemd
1 S     0      2      0  0  80   0 -     0 kthrea ?        00:00:00 kthreadd
1 S     0      3      2  0  80   0 -     0 worker ?        00:00:03 kworker/0:0
1 S     0      4      2  0  60 -20 -     0 worker ?        00:00:00 kworker/0:0H
1 S     0      5      2  0  80   0 -     0 worker ?        00:00:00 kworker/u256:0
……省略部分输出信息……

说明以上输出信息中各列的具体含义:

表头 含义
F 进程标志,说明进程的权限,常见的标志有两个。1:进程可以被复制,但不能执行 4:进程使用超级用户权限
S 进程状态,和ps aux命令输出内容中的STAT一致
UID 运行此进程的用户ID
PID 进程的ID
PPID 父进程的ID
C 该进程的CPU使用率,单位是百分比
PRI 进程的优先级,数值越小该进程的优先级越高,越早被CPU执行
NI Nice值, 可通过修改其值调整进程的优先级
ADDR 该进程在内存的哪个位置
SZ 该进程占用的内存大小
WCHAN 该进程是否在运行。“-”代表在运行
TTY 该进程在哪个终端上个运行
TIME 该进程占用CPU的时间,不是系统时间
CMD 产生此进程的命令名

【例 3】如果不想看到所有的进程,只想查看一下当前shell产生了哪些进程,那只需使用 “ps -l” 命令就足够了

[dxk@admin ~]$ ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S  1000   1640   1639  0  80   0 - 28917 do_wai pts/1    00:00:00 bash
0 R  1000   1735   1640  0  80   0 - 38337 -      pts/1    00:00:00 ps

可以看到,是在 pts/1 伪终端登录,且只产生了两个进程:一个是登录之后生成的 Shell,也就是 bash;另一个是正在执行的 ps 命令

僵尸进程的产生一般是由于进程非正常停止或程序编写错误,导致子进程先于父进程结束,而父进程又没有正确地回收子进程,从而造成子进程一直存在于内存当中,这就是僵尸进程。僵尸进程会对主机的稳定性产生影响,所以,在产生僵尸进程后,一定要对产生僵尸进程的软件进行优化,避免一直产生僵尸进程;对于已经产生的僵尸进程,可以在查找出来之后强制中止

二、top命令

实时监控系统处理器状态的命令 top

ps 命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,并且,如果管理员需要实时监控进程运行情况,就必须不停地执行 ps 命令,这显然是缺乏效率的。

为此,Linux 提供了 top 命令。top 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。

通过top命令查看系统的CPU、内存、运行时间、交换分区、执行的线程等信息。通过top命令可以有效的发现系统的缺陷出在哪里。是内存不够、CPU处理能力不够、IO读写过高…

用法: top [选项]

选项:

  • -d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;
  • -b:使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;
  • -n 次数:指定 top 命令执行的次数。一般和"-"选项合用;
  • -p 进程PID:仅查看指定 ID 的进程;
  • -s:使 top 命令在安全模式中运行,避免在交互模式中出现错误;
  • -u 用户名:只监听某个用户的进程;
  • -o [+/-] fieldname:以表头的某个选项排序,+代表所有进程根据该选项从大到小排序(+是默认的),-代表从小到大排序)

在 top 命令的显示窗口中,还可以使用如下按键,进行交互操作:

  • ? 或 h:显示交互模式的帮助;
  • P:按照 CPU 的使用率排序,默认就是此选项;
  • M:按照内存的使用率排序;
  • N:按照 PID 排序;
  • T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;
  • k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号;
  • r:按照 PID 给某个进程重设优先级(Nice)值;
  • q:退出 top 命令;

我们看看 top 命令的执行结果,如下:

top - 10:29:47 up  1:13,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 131 total,   1 running, 130 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.1 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1863040 total,  1527264 free,   192192 used,   143584 buff/cache
KiB Swap:  3907580 total,  3907580 free,        0 used.  1519428 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                       
  1916 dxk       20   0  162116   2256   1580 R   0.3  0.1   0:00.10 top                                                                           
     1 root      20   0  128000   6660   4144 S   0.0  0.4   0:03.26 systemd                                                                       
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.03 kthreadd                                                                      
     3 root      20   0       0      0      0 S   0.0  0.0   0:07.92 kworker/0:0                                                                   
     4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                                  
     5 root      20   0       0      0      0 S   0.0  0.0   0:00.44 kworker/u256:0                                                                
     6 root      20   0       0      0      0 S   0.0  0.0   0:00.18 ksoftirqd/0                                                                   
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.70 migration/0                                                                   
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh         
    ……省略部分输出……

说明输出的内容:

top 命令的输出内容是动态的,默认每隔 3 秒刷新一次。命令的输出主要分为三部分:

  1. 第一部分是前五行,显示的是整个系统的资源使用状况,我们就是通过这些输出来判断服务器的资源使用状态的;

  2. 第二部分是第六行,提供人机交互;

  3. 第三部分从第七行开始,显示的是系统中进程的信息;

第一部分信息的含义:

第一行为任务队列信息

内容 说明
10:29:47 当前系统时间
up 1:13 系统的运行时间。本机以运行1小时13分钟
2 users 当前登录了两个用户
load average: 0.00, 0.01, 0.05 系统在之前1分钟、5分钟、15分钟的CPU平均负载(这个平均负载一般认为不应该超过服务器 CPU 的核数)

第二行为进程信息

内容 说明
Tasks: 131 total 系统中的进程总数
1 running 正在运行的进程数
130 sleeping 睡眠的进程数
0 stopped 正在停止的进程数
0 zombie 僵尸进程数

第三行为CPU信息

内容 说明
%Cpu(s) CPU百分比
0.1 us 用户模式占用的CPU百分比
0.1 sy 系统模式占用的CPU百分比
0.0 ni 修改过优先级的用户进程占用的CPU百分比
99.8 id CPU空闲时间占用CPU总时间的百分比
0.0 wa 等待I/O的进程占用的CPU百分比
0.0 hi 硬中断请求服务占用的CPU百分比
0.0 si 软中断请求服务占用的CPU百分比
0.0 st st(steal time)意为虚拟时间百分比。被hypervisor(虚拟化层,虚拟机监控器)偷去的时间,实现虚拟化的程序占用CPU时间的百分比

第四行为物理内存信息

内容 说明
KiB Mem : 物理内存信息,单位:KB
1863040 total 物理内存的总量
1527264 free 空闲的物理内存大小
192192 used 已经使用的物理内存大小
143584 buff/cache 缓冲区/缓存的物理内存大小

第五行为交换(swap)分区信息

内容 说明
KiB Swap 交换分区(虚拟内存)信息,单位:KB
3907580 total 交换分区的总大小
3907580 free 空闲交换分区的大小
0 used 已经使用的交换分区的大小
1519428 avail Mem 可以使用的交换分区大小(一般近似为交换分区总大小的30%)

可以使用cat /proc/sys/vm/swappinessx来查看可以使用的交换分区大小的百分比:

[root@admin ~]# cat /proc/sys/vm/swappiness 
30

通过 top 命令的第一部分就可以判断服务器的健康状态。如果 CPU 是单核的, 1 分钟、5 分钟、15 分钟的平均负载高于 1,则证明系统压力较大。如果 CPU 的使用率过高或空闲率过低,则证明系统压力较大。如果物理内存的空闲内存过小,则也证明系统压力较大。

这时,我们就应该判断是什么进程占用了系统资源。如果是不必要的进程,就应该结束这些进程;如果是必需进程,那么我们该増加服务器资源(比如増加虚拟机内存)等

缓冲(buffer)和缓存(cache)的区别:

  • 缓存(cache) 是在读取硬盘中的数据时,把最常用的数据保存在内存的缓存区中,再次读取该数据时,就不去硬盘中读取了,而在缓存中读取。
  • 缓冲区(buffer) 是在向硬盘写入数据时,先把数据放入缓冲区,然后再一起向硬盘写入,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。

简单来说,缓存(cache)是用来加速数据从硬盘中"读取"的,而缓冲(buffer)是用来加速数据"写入"硬盘的。

top 命令的第二部分输出,主要是系统进程信息,各个字段的含义如下:

内容 说明
PID 进程的 ID
USER 该进程所属的用户
PR 优先级,数值越小优先级越高,越先被CPU执行
NI Nice值,数值越小、优先级越高
VIRT 该进程使用的虚拟内存的大小,单位为 KB
RES 该进程使用的物理内存的大小,单位为 KB
SHR 共享内存大小,单位为 KB
S 进程状态
%CPU 该进程占用 CPU 的百分比
%MEM 该进程占用内存的百分比
TIME+ 该进程共占用的 CPU 时间
COMMAND 进程的命令名

这部分和 ps 命令的输出比较类似,只是如果在终端执行 top 命令,则不能看到所有的进程,而只能看到占比靠前的进程

【例 1】

如果只想让 top 命令查看某个进程,就可以使用 “-p 选项”。命令如下:

[dxk@admin ~]$ top -p 1639
#只查看PID为1639的进程信息
top - 11:20:10 up  2:03,  2 users,  load average: 0.00, 0.01, 0.05
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1863040 total,  1527908 free,   191528 used,   143604 buff/cache
KiB Swap:  3907580 total,  3907580 free,        0 used.  1520080 avail Mem 

PID USER      PR  NI    VIRT    RES   SHR  S  %CPU %MEM     TIME+  COMMAND                                                                       
1639 dxk      20   0   158928   2464  1100 S  0.0  0.1    0:01.50   sshd                 

【例 2】

top 命令如果不正确退出,则会持续运行。在 top 命令的交互界面中按 “q” 键会退出 top 命令;也可以按 “?” 或 “h” 键得到 top 命令交互界面的帮助信息。在帮助信息中可以看到更多的在交互界面对应按键功能和作用,这里只介绍几个比较常用的:
(1)【k】键:可以终止某个进程
在这里插入图片描述
说明:这里如果进程号写错无法退格删除,按【Esc】键退出该文本行,再按【k】键重新来过

输入你想要终止的进程号,回车后在该交互行会出现以下信息:

在这里插入图片描述
此时是top 命令提示我们输入信号(信号 9 代表强制中止,15代表正常终止),回车执行(不输入直接执行为默认正常终止,因为该进程是系统进程正常终止是不行的必须强制终止)

举例:

这样该进程就被终止了,比如这里我要终止我当前的sshd进程(即当前客户端服务),首先我们需要查找到该进程的PID号,然后按下【k】键,输入查找到的PID号,如果正常终止肯定是不被执行的,所以我们进行强行终止:

①查找当前虚拟终端sshd进程PID
第一种:
Linux笔记 Day08---(ps命令、top命令、ulimit命令、mkdir命令、more命令、文件系统层级结构FHS)_第1张图片
这样我们找到的PID为1961

第二种:

先执行命令

[dxk@admin ~]$ top -u dxk

Linux笔记 Day08---(ps命令、top命令、ulimit命令、mkdir命令、more命令、文件系统层级结构FHS)_第2张图片
这样也可以找到,第二种更好因为直接就可以进行终止操作

②按下【k】键,输入PID号并回车执行
在这里插入图片描述

③接下来 top 命令提示我们输入信号(信号 9 代表强制中止,15代表正常终止),回车执行(不输入直接执行为默认正常终止,因为该进程是系统进程正常终止是不行的必须强制终止)
Linux笔记 Day08---(ps命令、top命令、ulimit命令、mkdir命令、more命令、文件系统层级结构FHS)_第3张图片
④执行后就会结束当前客户端服务,即退出当前虚拟终端
Linux笔记 Day08---(ps命令、top命令、ulimit命令、mkdir命令、more命令、文件系统层级结构FHS)_第4张图片
(2)【r】键:按照 PID 给某个进程重设优先级(Nice)值,用法与【k】键类似,不做详细说明

步骤:
在交互界面输入 “r” 交互命令(即按下【r】键),会提示输入需要修改优先级的进程的 PID————>输入PID后,需要输入Nice的优先级号,回车后就能看到
(3)【1】键:显示每个CPU使用情况
需要注意的是:Nice值越小、优先级越高,越先被CPU执行,我们能够修改的只有 Nice 的优先级,而不能修改 Priority 的优先级

还有很多功能自己可以按 【h】键或【?】键 得到 top 命令交互界面的帮助信息,记得退出top命令和退出查看帮助信息都是 【q】键

【例 3】

指定 top 命令每隔1秒更新(默认是 3 秒)

[dxk@admin ~]$ top -d 1

【例 4】

指定 top 命令更新3次后就退出

[dxk@admin ~]$ top -n 3

【例 5】

指定 top 命令只显示dxk用户的进程信息(伪用户也可以)

[dxk@admin ~]$ top -u dxk
#伪用户
[dxk@admin ~]$ top -u apache

【例 6】

查看看指定进程(PID)的信息

[dxk@admin ~]$ top -p 1734

【例 7】

将进程按照表头项中的任何一个进行排序显示

#将各进程信息按照使用物理内存大小从大到小排序显示
[dxk@admin ~]$ top -o RES  #等价于 top -o +RES
##将各进程信息按照优先级从小到大排序显示
[dxk@admin ~]$ top -o -PR 

【例 8】

如果在操作终端执行 top 命令,则并不能看到系统中所有的进程,默认看到的只是 CPU 占比靠前的进程。如果我们想要看到所有的进程,则可以把 top 命令的执行结果重定向到文件中。不过 top 命令是持续运行的,这时就需要使用 “-b” 和 “-n” 选项。
具体命令如下:

[dxk@admin ~]$ top -b -n 1 > /home/dxk/top.log
#让top命令只执行一次,然后把执行结果重定向到top.log文件中,这样就能看到所有的进程

三、ulimit命令

ulimit命令用来修改 shell 资源限制。在允许此类控制的系统上,提供对于 shell 及其创建的进程所可用的资源的控制。

在有限的软硬件资源的限制下,为保证系统安全和良好的性能。对于开启文件描述符的数量,进程数,分配堆栈的大小,CPU 时间,虚拟内存大小,等等,都有非常严格的要求。资源的合理限制和分配,才是保证系统可用性的必要条件,也是制约系统上软件运行效率的关键性因素。这时,ulimit 可以起到很大的作用,它是一种简单并且有效的实现资源限制的方式。

(一)查看相关资源限制的ulimit

用法: ulimit [选项]

选项:

  • -S:表示软限制,当超过限制值会报警

  • -H:表示硬限制,必定不能超过该限制值

  • -a:将列出所有资源限制

  • -c:当某些程序发生错误时,系统可能会将该程序在内存中的信息写成文件(除错用),这种文件就被称为核心文件(core file)。此为限制每个核心文件的最大容量

  • -d:每个进程数据段的最大值

  • -f:当前shell可创建的最大文件容量

  • -i:最多的可以挂起的信号数

  • -r:实时调度的最大优先级

  • -x:最大的锁数量

  • -l:可以锁定的物理内存的最大值

  • -m:可以使用的常驻内存的最大值

  • -n:每个进程可以同时打开的最大文件描述符

  • -p:管道的最大值

  • -s:堆栈的最大值

  • -t:每个进程可以使用CPU的最大时间

  • -u:每个用户运行的最大进程并发数

  • -v:当前shell可使用的最大虚拟内存

对每个资源的限制会有两个值,一个是软限制值,一个是硬限制值。参数S表示软限制,参数H表示硬限制,当不指定要查看哪个值时,默认表示显示软限制值

【例 1】

查看当前所有限制信息 ulimit -a

[root@admin ~]# ulimit  -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7183
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 7183
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

【例 2】

单独查看其它相关限制信息

[root@admin ~]# ulimit -c
0
[root@admin ~]# ulimit -d
unlimited			#表示未设置该限制值
[root@admin ~]# ulimit -f
unlimited
[root@admin ~]# ulimit -i
7183
[root@admin ~]# ulimit -r
0
[root@admin ~]# ulimit -x
unlimited
[root@admin ~]# ulimit -l
64
[root@admin ~]# ulimit -m
unlimited
[root@admin ~]# ulimit -n
1024
[root@admin ~]# ulimit -p
8
[root@admin ~]# ulimit -s
8192
[root@admin ~]# ulimit -t
unlimited
[root@admin ~]# ulimit -u
7183
[root@admin ~]# ulimit -v
unlimited

【例 3】

对每个资源的限制会有两个值,一个是软限制值,一个是硬限制值。参数S表示软限制,参数H表示硬限制,当不指定要查看哪个值时,默认表示显示软限制值。

[root@admin ~]# ulimit -s
8192
[root@admin ~]# ulimit -Ss
8192
[root@admin ~]# ulimit -Hs
unlimited
[root@admin ~]# ulimit -n
1024
[root@admin ~]# ulimit -Sn
1024
[root@admin ~]# ulimit -Hn
4096

(二)修改相关资源限制的ulimit

在查看的命令后面加上限制值,就可以调整某一项限制,但只对当前登录shell有效
参数S表示设置软限制;参数H表示设置硬限制;当都不指定时,表示设置软限制和硬限制均为指定值

用法: ulimit [选项] [限制数值]
选项: 同上

注意:修改过程中硬限制值必须要大于或等于软限制值,否则会报错

【例 1】

限制最大进程数为1000个:

[root@admin ~]# ulimit -u 1000
[root@admin ~]# ulimit -u
1000
[root@admin ~]# ulimit -Su
1000
[root@admin ~]# ulimit -Hu
1000

【例 2】

设置每个进程可以同时打开的最大文件描述符硬限制为2000

#因为设置硬限制值必须大于软限制值,所以先要查看下软、硬限制值为多少
[root@admin ~]# ulimit  -Hn 
1024
[root@admin ~]# ulimit  -Sn 
1024
[root@admin ~]# ulimit  -Hn 2000 
[root@admin ~]# ulimit  -Hn  
2000
[root@admin ~]# ulimit  -Sn  
1024

其他资源的限制同理

【例 3】

这里我们看下如果设置的硬限制值小于软限制值会怎样

[root@admin ~]# ulimit -Sn
1024
[root@admin ~]# ulimit -Hn 1023
-bash: ulimit: open files: 无法修改 limit 值: 无效的参数
[root@admin ~]# ulimit -Hn 1022
-bash: ulimit: open files: 无法修改 limit 值: 无效的参数
[root@admin ~]# ulimit -Hn 1000
-bash: ulimit: open files: 无法修改 limit 值: 无效的参数
[root@admin ~]# ulimit -Hn 800
-bash: ulimit: open files: 无法修改 limit 值: 无效的参数
[root@admin ~]# ulimit -Hn 1024   #所以硬限制值必须大于软限制值
[root@admin ~]# ulimit -Hn 
1024

(三)永久修改ulimit

所谓永久,是指每次登陆shell时,都会按配置重新设定ulimit,以达到永久生效的效果,那么就需要写入相应的配置文件中。

限制资源使用的配置文件是 /etc/security/limits.conf 和 /etc/security/limits.d/ 目录,/etc/security/limits.d/里面配置会覆盖/etc/security/limits.conf 的配置,也可以写入/etc/profile环境变量文件中

步骤一:修改/etc/security/limits.conf

添加如下内容:

[root@admin ~]#  vim /etc/security/limits.conf
* hard nproc 64000   #修改运行的最大进程数硬限制为64000
* soft nproc 64000	 #修改运行的最大进程数软限制为64000
* hard nofile 64000	 #修改打开的最大文件描述符硬限制为64000
* soft nofile 64000	 #修改打开的最大文件描述符软限制为64000
* #core是内核文件,nofile是文件描述符,nproc是进程

以上内容表示,将-u(运行的最大进程并发数)和-n(每个进程可以同时打开的最大文件描述符)的软限制和硬限制同时修改为64000。

重新登录或使用source /etc/security/limits.conf 便会使配置立即生效

步骤二:修改/etc/profile

添加如下内容:

[root@admin ~]#  vim /etc/profile
ulimit -u 64000
ulimit -n 64000
#同样是将-u(运行的最大进程并发数)和-n(每个进程可以同时打开的最大文件描述符)的软限制和硬限制同时修改为64000

每次登陆shell后,会初始执行这两条ulimit命令,并使其生效。

重新登录或使用source /etc/profile 便会使配置立即生效。

source使当前shell对指定文件内容生效。

四、mkdir命令

功能: 创建一个或多个空目录

用法: mkdir [选项]… 目录…

选项:

  • -m:创建目录的同时为该目录设定指定权限 (类似 chmod)
    说明:mkdir –m 权限值 已有目录绝对路径/目录名

  • -p:递归创建目录
    说明:mkdir –p 绝对路径/目录名
    在绝对路径中去创建一个空目录文件,如果该绝对路径下目录存在则直接在这个已存在的目录中去创建一个为目录名的空目录文件,如果该绝对路径下目录不存在,则直接在该绝对路径下去创建这个目录然后在这个目录下直接创建目录名的空目录文件

  • -v:每次创建新目录都显示信息

【例 1】

在/home/dxk目录下简单创建一个名为test的空目录文件

[dxk@admin ~]$ mkdir /home/dxk/test
[dxk@admin ~]$ ll
总用量 0
-rwxrwxrwx. 1 dxk dxk 0 7月   8 15:44 mycsdn
drwxrwxr-x. 2 dxk dxk 6 7月  16 16:05 test

【例 2】

在当前目录下创建一个只有本用户拥有读、写和执行权限的名为myfile的目录文件

[dxk@admin ~]$ mkdir -m 700 myfile
[dxk@admin ~]$ ll
总用量 0
-rwxrwxrwx. 1 dxk dxk 0 7月   8 15:44 mycsdn
drwx------. 2 dxk dxk 6 7月  16 16:20 myfile
#这样创建好后即使是root用户对该目录也没有读、写和执行权限

【例 3】

创建多级目录

[dxk@admin ~]$ tree
.
├── mycsdn
└── myfile

创建目录myfile/myfile1/myfile2/myfile3/myfile4
根据以上信息我们知道,只有目录myfile存在,其他目录不存在,那么直接使用mkdir myfile/myfile1/myfile2/myfile3/myfile4 ?

[dxk@admin ~]$ mkdir myfile/myfile1/myfile2/myfile3/myfile4
mkdir: 无法创建目录"myfile/myfile1/myfile2/myfile3/myfile4": 没有那个文件或目录
[dxk@admin ~]$ 

从上面我们可以看到这样是是不行的,无法创建。难道要先mkdir myfile/myfile2再mkdir myfile/myfile2/myfile3……这样去做?这样也可以,但是效率太低,可以使用-p选项,进行多级目录创建(如果存在myfile1目录则在该目录下创建不存在就创建myfile1并依次创建……)

[dxk@admin ~]$ mkdir -p myfile/myfile1/myfile2/myfile3/myfile4
[dxk@admin ~]$ tree
.
├── mycsdn
└── myfile
    └── myfile1
        └── myfile2
            └── myfile3
                └── myfile4

5 directories, 1 file

【例 4】

每次创建新目录显示信息

[dxk@admin ~]$ tree
.
├── mycsdn
└── myfile
    └── myfile1

2 directories, 1 file
[dxk@admin ~]$ mkdir -p -v  myfile/myfile1/myfile2/myfile3/myfile4
mkdir: 已创建目录 "myfile/myfile1/myfile2"
mkdir: 已创建目录 "myfile/myfile1/myfile2/myfile3"
mkdir: 已创建目录 "myfile/myfile1/myfile2/myfile3/myfile4"
#只要是创建新的目录就会显示创建成功的信息

【例 5】
mkdir命令也可以同时创建多个目录

[dxk@admin ~]$ mkdir -v Dictory1 /home/dxk/myfile/Dictory2
mkdir: 已创建目录 "Dictory1"
mkdir: 已创建目录 "/home/dxk/myfile/Dictory2"

五、more命令

功能: 逐屏显示内容

Linux的more命令类似 cat命令 ,不过more命令以一页一页的形式显示,更方便使用者逐页阅读。按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,输入/+字符串可以搜索字符串

用法: more [选项] 文件…

选项:

  • -c:不滚屏,显示文本并清理行尾
  • -u:抑制下划线
  • -s:将多个空行压缩为一行
  • -NUM:指定每屏显示的行数为 NUM
  • +NUM:从文件第 NUM 行开始显示
  • +/STRING:从文件中查找第一个出现STRING字符串的行,并从该处前两行开始显示输出

在使用more命令查看模式下常用的功能键和操作命令:

  • Enter:向下n行,需要定义。默认为1行
  • Ctrl+F:向下滚动一屏
  • 空格键:向下滚动一屏
  • Ctrl+B:返回上一屏
  • =:输出当前行的行号
  • f:输出文件名和当前行的行号
  • V:调用vi编辑器
  • !:命令 调用Shell,并执行命令
  • q:退出more
  • /STRING:从显示内容处开始查找该STRING字符串,按【n】键跳到下一个STRING字符串处

【例 1】

逐页显示 testfile 文档内容,如有连续两行以上空白行则以一行空白行显示

[dxk@admin ~]$ more -s testfile

【例 2】

从第 20 行开始显示 testfile 之文档内容

[dxk@admin ~]$ more +20 testfile

【例 3】

+/STRING 从匹配搜索字符串 STRING 的文件位置开始显示
从testfile文件中查找第一个出现"linux"字符串的行,并从并从该处前两行开始显示输出

[dxk@admin ~]$ more -s +/linux testfile

【例 4】

以每屏显示5行查看testfile文件

[dxk@admin ~]$ more -5 testfile 

【例 5】

一个目录下的文件,由于内容太多,我们可以用more来分页显示。需要和管道 | 结合起来

以每行显示5个文件信息的格式查看/data/Packages/目录下的文件

[root@admin ~]# ls /data/Packages/ | more -5

六、文件系统层级结构FHS

当我们使用root用户登录到系统后切换到/目录下执行ls命令

[root@admin /]# ls
bin   data  etc   lib    media  opt   root  sbin  sys  usr
boot  dev   home  lib64  mnt    proc  run   srv   tmp  var

我们会看到在/目录下有很多目录结构

Windows: 以多根的方式组织文件 C:\ D:\ E:
Linux: 以单根的方式组织文件 /
Linux笔记 Day08---(ps命令、top命令、ulimit命令、mkdir命令、more命令、文件系统层级结构FHS)_第5张图片
/目录结构: FHS (Filesystem Hierarchy Standard)

Linux 或 Unix 操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构

文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就可以构成一个庞大的文件系统。

FHS定义了Linux系统中的主要目录及存放的内容,多数Linux发行版遵从FHS标准,只有少数Linux发行版没有使用FHS标准。

在FHS中,所有的(包括存储于不同物理/虚拟设备中的)文件和目录都存在于根目录 / 下。其中,部分目录仅当特定系统(如X Window)安装后才会存在

/ 主层次结构的根&&整个文件系统的根目录

  • /bin 所有用户在单用户模式中必须具备的二进制命令文件,如 cat, ls, cp

  • /boot Boot loader文件,如 kernels, initrd

  • /dev 必要的 device 文件,如 /dev/null

  • /etc 特定主机全系统的配置文件

一直以来,这个名字本身就有争议。在早期由Bell labs所撰写的UNIX实现文档中,/etc 被当作附加(etcetera)目录,因为历史上这个文件夹用来保存所有不属于其他地方的文件(但FHS限制/etc仅用于保存静态配置文件,不能保存二进制文件)。从早期的文档发布以来,这个文件夹的名字就被人们以不同的方式重新定义。最近的释义包括如”Editable Text
Configuration” 或 “Extended Tool Chest”词源

/etc/opt 保存在/opt/中的插件包的配置文件
/etc/sgml 处理SGML的程序(如catalogs)的配置文件
/etc/X11 X Window System, version 11 的配置文件
/etc/xml 处理xml的程序(如catalogs)的配置文件

  • /home 用户的个人目录,包含保存的文件和个人设置等

  • /lib /bin/ 和/sbin/ 中必须的依赖库

  • /media 一些可以热拔插的介质(如CD-ROMs)的挂载点 (在FHS-2.3中出现)

  • /mnt 临时挂载的文件系统

  • /opt 可选的应用程序包

  • /proc 将进程和内核信息以文件形式呈现的虚拟文件系统。在Linux中,与procfs mount(进程文件系统)对应

  • /root root用户的个人目录

  • /run 运行时变量数据:从本次启动到现在的系统信息。如当前登陆的用户和正在运行的守护进程

  • /sbin 必备的系统可执行文件,如fsck, init, route

  • /srv 本系统提供的特定站点的数据。如web服务器提供的数据和脚本,FTP服务器提供的数据,VCS的仓库

  • /sys 包含连接到本台计算机的设备信息

  • /tmp 临时文件(和/var/tmp相同). 通常在重启后清空,并且受到严格的大小限制

  • /usr 只读用户数据的次要层次,包含大部分(多)用户功能和应用

/usr/bin 所有用户的非必要的二进制可执行文件(在单用户模式中不需要)
/usr/include Standard include files.
/usr/lib /usr/bin/ 和 /usr/sbin/ 中的二进制文件的依赖库
/usr/lib Alternate format libraries (optional).
/usr/local 仅针对当前主机的 本地数据的第三个层次。一般包含其他的子目录,如 bin/, lib/, share/
/usr/sbin 非必须的系统二进制文件,如多种网络服务的守护进程
/usr/share 结构独立(共享)的数据
/usr/src 源代码,如 内核的源代码和它的头文件
/usr/X11R6 X Window System, Version 11, Release 6 (up to FHS-2.3, optional)

  • /var Variable files:各种在系统运行中,内容会不停改变的文件。如日志文件,spool files,和临时的电子邮件文件

/var/cache 应用缓存数据。这类文件由于耗时的I/O或计算而被生成在本地。应用必须能够重新生成或转储这些
文件,以保证这些数据被删除时不会造成数据丢失。(意思就是这些东西删了不会造成不良后果)
/var/lib 状态信息。程序运行时会改变的持久化数据,如 数据库,packaging system metadata,etc.
/var/lock Lock files. 追踪当前正在使用的资源的文件.
/var/log Log files. 各种日志.
/var/mail Mailbox files. 在某些发行版中,这些文件被放在已经不推荐使用的/var/spool/mail 目录
中.
/var/opt 来自保存在/opt 中的插件包的可变数据。
/var/run Run-time variable data. 这个目录包含描述系统的自启动以来的系统信息数据
在 FHS 3.0中, /var/run 被 /run 替代。系统不应该在使用/var/run 或者提供/var/run 到 /run 的符号连接,防止出现兼容性倒退
/var/spool Spool for tasks waiting to be processed, e.g., print queues and outgoing
mail queue.
/var/spool/mail 不建议使用的用户邮箱位置,见/var/mail
/var/tmp 重启时会被保存的临时数据

#设备(主要指存储设备)挂载目录

  • media 移动设备默认的挂载点
  • mnt 手工挂载设备的挂载点
  • misc automount进程挂载
  • net automount进程挂载

#命令存储位置

  • /bin 普通用户使用的命令 /bin/ls, /bin/date #RHEL7淘汰
  • /sbin 管理员使用的命令 #RHEL7淘汰
  • /usr/bin 普通用户使用的应用程序
  • /usr/sbin 管理员使用的应用程序

#库文件存储位置:

  • /lib 库文件Glibc #RHEL7淘汰
  • /lib64 库文件Glibc #RHEL7淘汰
  • /usr/lib 库文件Glibc
  • /usr/lib64 库文件Glibc

查看CPU物理信息:cat/proc/cpuinfo
查看内存使用情况:top、free
查看内存详细信息:cat/proc/meminfo
查看磁盘分区使用情况:df -h或lsblk -l
查看CPU使用情况:top–>1 负载:uptime 、w

你可能感兴趣的:(linux,centos)