栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux下程序管理和文件处理

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux下程序管理和文件处理

文章目录
  • 1 ps/top[【监控进程】
    • 1.1 Intel Hyper-Threading Technology(超线程技术)【Simulate MultiThreading(SMT,同步多线程技术)】
  • 2 kill/kill all【关闭进程】
  • 3 监测磁盘空间
    • 3.1 挂载
    • 3.2 移除
    • 3.3 df【查看磁盘空间】
    • 3.4 du【以显示某个特定目录(默认情况下是当前目录)的磁盘使用情况】

1 ps/top[【监控进程】
ps -ef

显示信息:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 500 3081 3080 0 80 0 - 1173 wait pts/0 00:00:00 bash
0 R 500 4463 3081 1 80 0 - 1116 - pts/0 00:00:00 ps

参数含义:

  • UID:启动这些进程的用户。
  • PID:进程的进程ID。
  • PPID:父进程的进程号(如果该进程是由另一个进程启动的)。
  • C:进程生命周期中的CPU利用率。
  • STIME:进程启动时的系统时间。
  • TTY:进程启动时的终端设备。
  • TIME:运行进程需要的累计CPU时间。
  • CMD:启动的程序名称。

缺点:ps命令虽然在收集运行在系统上的进程信息时非常有用,但也有不足之处:它只能显示某个特定时间点的信息。

top指令实时显示进程信息。

默认情况下,top命令在启动时会按照%CPU值对进程排序。可以在top运行时使用多种交互命令重新排序。

每个交互式命令都是单字符,在top命令运行时键入可改变top的行为:

  • 键入f允许你选择对输出进行排序的字段,
  • 键入d允许你修改轮询间隔。
  • 键入q可以退出top。

用显示的信息如下【Linux下top查看的CPU也是逻辑CPU个数】:

[root@hdp-jiangxue ~]# top
top - 10:19:36 up 94 days, 20:09,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 209 total,   1 running, 208 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.4 us,  0.4 sy,  0.0 ni, 99.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 16378664 total,   343132 free, 14923576 used,  1111956 buff/cache
KiB Swap:  2097148 total,   123496 free,  1973652 used.   985392 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 27241 root      20   0 2214808 364292   5464 S   1.0  2.2 748:41.35 java
 18381 root      20   0 3102436 207996   2528 S   0.7  1.3 842:56.06 java
 21171 root      20   0 2893492 352456   6956 S   0.7  2.2   1283:11 java
   517 root      20   0       0      0      0 S   0.3  0.0  56:58.31 xfsaild/dm-0
  2314 root      20   0 4780608 259256   6612 S   0.3  1.6  87:29.34 java
  9856 root      20   0 3907688  93924   1872 S   0.3  0.6 219:10.73 java
 21321 root      20   0 2886176 561516   6852 S   0.3  3.4 966:31.66 java
 21828 root      20   0 2928204 257340   6484 S   0.3  1.6 237:24.95 java
 29601 root      20   0 2156112 149960   5004 S   0.3  0.9 145:42.31 java
 56051 root      20   0 6771692  71376   1632 S   0.3  0.4 118:23.42 java
 93840 root      20   0       0      0      0 S   0.3  0.0   0:00.23 kworker/0:2
 94489 root      20   0  162112   2376   1596 R   0.3  0.0   0:02.43 top
115277 zabbix    20   0   79244   2128   1096 S   0.3  0.0  22:55.17 zabbix_agentd
     1 root      20   0  134760   3516   1396 S   0.0  0.0  41:39.13 systemd
     2 root      20   0       0      0      0 S   0.0  0.0   0:10.29 kthreadd
     4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
     6 root      20   0       0      0      0 S   0.0  0.0  42:22.97 ksoftirqd/0
     7 root      rt   0       0      0      0 S   0.0  0.0   0:14.37 migration/0
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh

详细解释如下:

top - 10:12:34 up 94 days, 20:02,  1 user,  load average: 0.00, 0.01, 0.0

第一行显示了当前时间、系统的运行时间、登录的用户数以及系统的平均负载。【平均负载有3个值:最近1分钟的、最近5分钟的和最近15分钟的平均负载。】

⚠️:值越大说明系统的负载越高。由于进程短期的突发性活动,出现最近1分钟的高负载值也很常见,但如果近15分钟内的平均负载都很高,就说明系统可能有问题。【高负载,取决于系统的硬件配置以及系统上通常运行的程序。通常,如果系统的负载值超过了2,就说明系统比较繁忙了。】

Tasks: 210 total,   3 running, 207 sleeping,   0 stopped,   0 zombie

第二行显示了进程概要信息——top命令的输出中将进程叫作任务(task):有多少进程处在运行、休眠、停止或是僵化状态(僵化状态是指进程完成了,但父进程没有响应)。

%Cpu(s):  0.5 us,  0.4 sy,  0.0 ni, 99.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

第三行显示了CPU的概要信息。top根据进程的属主(用户还是系统)和进程的状态(运行、空闲还是等待)将CPU利用率分成几类输出。

KiB Mem : 16378664 total,   343180 free, 14923536 used,  1111948 buff/cache
KiB Swap:  2097148 total,   123496 free,  1973652 used.   985432 avail Mem

如果是多核计算,显示的是所有CPU的平均值,按数字“1”可监控每一个逻辑CPU的状况。

%Cpu0  :  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.7 us,  1.0 sy,  0.0 ni, 98.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :  0.7 us,  0.7 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

第四、五两行说明了系统内存的状态。第一行说的是系统的物理内存:总共有多少内存,当前用了多少,还有多少空闲。后一行说的是同样的信息,不过是针对系统交换空间(如果分配了的话)的状态而言的。

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 18381 root      20   0 3102436 207996   2528 S   1.0  1.3 842:57.20 java
 27241 root      20   0 2214808 364292   5464 S   1.0  2.2 748:42.71 java

后面的行数显示了当前运行中的进程的详细列表,有些列跟ps命令的输出类似。

  • PID:进程的ID。
  • USER:进程属主的名字。
  • PR:进程的优先级。
  • NI:进程的谦让度值。
  • VIRT:进程占用的虚拟内存总量。
  • RES:进程占用的物理内存总量。
  • SHR:进程和其他进程共享的内存总量。
  • S:进程的状态(D代表可中断的休眠状态,R代表在运行状态,S代表休眠状态,T代表
    跟踪状态或停止状态,Z代表僵化状态)。
  • %CPU:进程使用的CPU时间比例。
  • %MEM:进程使用的内存占可用内存的比例。
  • TIME+:自进程启动到目前为止的CPU时间总量。
  • COMMAND:进程所对应的命令行名称,也就是启动的程序名。
1.1 Intel Hyper-Threading Technology(超线程技术)【Simulate MultiThreading(SMT,同步多线程技术)】

一块CPU上面能处理数据的芯片组的数量、比如现在的i5 760,是双核心四线程的CPU,一般来说,物理CPU个数×每颗核数就应该等于逻辑CPU的个数,如果不相等的话,则表示服务器的CPU支持超线程技术。【一颗cpu可以有多核,加上intel的超线程技术(HT), 可以在逻辑上再分一倍数量的cpu core出来逻辑CPU数量=物理cpu数量 x cpu cores 这个规格值 x 2(如果支持并开启ht)】

查看CPU信息:

【1】查看CPU型号:cpu型号是E7-4820

[root@node1 ~]# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
    32  Intel(R) Xeon(R) CPU E7- 4820  @ 2.00GHz

【2】查看物理cpu个数:物理核心数是2核

[root@node1 ~]# cat /proc/cpuinfo | grep "physical id" | sort | uniq|wc -l
2

【3】查看逻辑cpu的个数:逻辑cpu个数是32个

[root@node1 ~]# cat /proc/cpuinfo | grep "processor" |wc -l
32

【4】查看cpu是几核:cpu是8核

[root@node1 ~]# cat /proc/cpuinfo | grep "cores"|uniq
cpu cores       : 8

参考链接

Intel Hyper-Threading Technology(超线程技术)【Simulate MultiThreading(SMT,同步多线程技术)】:
超线程是英特尔开发出来的一项技术,使得单个处理器可以象两个逻辑处理器那样运行,这样单个处理器以并行执行线程。

一个线程在执行时会占用CPU资源,其他线程想要得到执行就必须等待该线程将CPU资源让出。

利用超线程技术,模拟出的两个逻辑内核共享同一个CPU资源,所以同一时刻可以有两个线程都占用CPU资源,因此这两个线程都可以得到执行,这就是实现同一时间执行两个线程的并行操作。


单一处理器核心来说来说,虽然也可以每秒钟处理成千上万条指令,但是在某一时刻,只能够对一条指令(单个线程)进行处理,超线程技术能够把一个物理处理器在软件层变成两个逻辑处理器,可以使处理器在某一时刻,同步并行处理更多指令和数据(多个线程)。超线程是一种可以将CPU内部暂时闲置处理资源充分“调动”起来的技术。

2 kill/kill all【关闭进程】

linux常见信号:

kill命令可通过进程ID(PID)给进程发信号。默认情况下,kill命令会向命令行中列出的全部PID发送一个TERM信号。

要发送进程信号,必须是进程的属主或登录为root用户。

$ kill 3940

killall命令支持通过进程名而不是PID来结束进程。killall命令也支持通配符。

killall http*
3 监测磁盘空间

Linux虚拟目录中比较复杂的部分是它如何协调管理各个存储设备。在Linux PC上安装的第一块硬盘称为根驱动器。根驱动器包含了虚拟目录的核心,其他目录都是从那里开始构建的。

通常系统文件会存储在根驱动器中,而用户文件则存储在另一驱动器中。

Linux会在根驱动器上创建一些特别的目录,我们称之为挂载点(mount point)。挂载点是虚拟目录中用于分配额外存储设备的目录。虚拟目录会让文件和目录出现在这些挂载点目录中,然而实际上它们却存储在另外一个驱动器中。

3.1 挂载

挂载(mounting):在使用新的存储媒体之前,需要把它放到虚拟目录下。

大多数Linux发行版都能自动挂载特定类型的可移动存储媒体。【可移动存储媒体指的是可从PC上轻易移除的媒体,比如CD-ROM、软盘和U盘。】如果不支持,则需要手动完成。

mount命令提供如下四部分信息:

  • 媒体的设备文件名
  • 媒体挂载到虚拟目录的挂载点
  • 文件系统类型
  • 已挂载媒体的访问状态

常见文件系统类型:

  • vfat:Windows长文件系统。
  • ntfs:Windows NT、XP、Vista以及Windows 7中广泛使用的高级文件系统。
  • iso9660:标准CD-ROM文件系统。

注意:大多数U盘和软盘会被格式化成vfat文件系统。而数据CD则必须使用iso9660文件系统类型。

手动将U盘/dev/sdb1【存储设备的设备文件的位置】挂载到/media/disk【挂载点在虚拟目录中的位置】。

# mount -t type device directory
mount -t vfat /dev/sdb1 /media/disk

媒体设备挂载到了虚拟目录后,root用户就有了对该设备的所有访问权限,而其他用户的访问则会被限制。

3.2 移除

上移除一个可移动设备时,不能直接从系统上移除,而应该先卸载。

卸载设备的命令是umount,umount命令的格式:

umount [directory | device ]

示例:

umount /home/rich/mnt

注意:

  • 如果有任何程序正在使用设备上的文件,系统就不会允许你卸载它。
  • 如果在卸载设备时,系统提示设备繁忙,无法卸载设备,通常是有进程还在访问该设备或使用该设备上的文件。这时可用lsof命令获得使用它的进程信息,然后在应用中停止使用该设备或停止该进程。lsof命令的用法很简
    单:lsof /path/to/device/node
3.3 df【查看磁盘空间】

查看某个设备上还有多少磁盘空间【。df命令的输出值显示的是Linux系统认为的当前值。有可能系统上有运行的进程已经创建或删除了某个文件,但尚未释放文件。这个值是不会算进闲置空间的。】:

df

显示内容:

输出信息为:

  • 设备的设备文件位置;
  • 能容纳多少个1024字节大小的块;
  • 已用了多少个1024字节大小的块;
  • 还有多少个1024字节大小的块可用;
  • 已用空间所占的比例;
  • 设备挂载到了哪个挂载点上。

更简洁的显示【把输出中的磁盘空间按照用户易读的形式显示,通常用M来替代兆字节,用G替代吉字节】:

df -h

显示内容:

 
3.4 du【以显示某个特定目录(默认情况下是当前目录)的磁盘使用情况】 
du -sh * | sort -nr
  • 将du命令的输出重定向到sort命令;
  • sort:
    • -n --numeric-sort 按字符串数值来排序(并不转换为浮点数)
    • -r --reverse 反序排序(升序变成降序)
  • du:
    • -s:显示每个输出参数的总计。
    • -h:按用户易读的格式输出大小,即用K替代千字节,用M替代兆字节,用G替代吉字节。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/276945.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号