linux--进程管理和监控

Posted 南岸青栀*

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux--进程管理和监控相关的知识,希望对你有一定的参考价值。

SHELL命令

Shell可执行的用户命令可分为两大类:内置命令,实用命令

命令类型功能
内置命令为提高执行效率,部分最常用命令的解释器构筑与Shell内部
实用程序Linux程序:存放在/bin,/sbin目录中的Linux自带的命令
实用程序应用程序:存放在/usr/bin,/usr/sbin等目录中的应用程序
实用程序Shell脚本:用Shell语言编写的脚本程序
实用程序用户程序:用户编写的其他可执行程序

处理方式:

  • 1.如果用户输入的是内置命令,那么由Shell内部解释器进行解释,并交由内核执行。
  • 2.如果用户输入的是实用程序命令,而且给出了命令的路径,那么shell会按照用户提供的路径在硬盘中查找。如果找到则调入内存,交由内核执行,否则输出提示信息。
  • 3.如果用户输入的是实用程序命令,但没有给出命令的路径,那么shell会根据PATH环境变量所指向的路径进行查找。如果找到则调入内存,交由内核执行;否则输出提示信息。

通配符

  • 1.“ * ” 代表任意长度的任何字符。需要注意通配符 “ * ” 不能与 “ . ” 开头的文件名匹配。
  • 2.“ ? ” 代表任意一个字符
  • 3.“ [ ] ”代表指定的字符范围
  • 4.“ - ”
  • 5.“!”表示不在此范围内的其他字符
    在这里插入图片描述

重定向

1.输出重定向

命令执行的结果不在标准输出(屏幕)上显示,而是保存到某一文件的操作。>

功能:

  • (1)创建文本文件 cat > f1

ps:现在会卡在当前进程,但是文件会创建

  • (2)合并文本文件[root@localhost mytest]# cat f1 f2 > f

2.附加输出重定向 >>

3.错误输出重定向2>

例:查看/temp目录的文件和子目录信息,如有错误,则保存到err文件中

ls /temp 2>err

4.输入重定向

不从标准输入(键盘)读入数据,而是从文件读入数据,<

cat <f1 和cat f1命令相同

进程管理与系统监控

基本概念

1.进程

进程是具有独立功能的程序的一次运行过程,也是系统进行资源分配和调度的基本单位。Linux创建新进程时都会为其指定一个唯一的号码,即进程号(PID),并以此区分不同的进程。

进程与程序的区别:

进程不是程序,但是由程序产生

程序是一系列指定的集合,是静态的概念;而进程则是程序的一次运行过程,是动态的概念。程序可以长期保存;进程只能暂时存在,动态的产生、变化和消亡。进程与程序并不一一对应,一个程序可启动多个进程;一个进程可以调用多个程序。

2.作业

正在执行的一个或多个相关进程可形成一个作业。使用管道命令和重定向命令,一个作业可启动多个进程。

例:cat sample.text | grep High | wc -l作业就同时启动cat、grep和wc三个进程

作业可分为:

  • 前台作业:运行于前台,用户正对其进行交互操作
  • 后台作业:运行于后台,不接收终端的输入,但向终端输出执行结果。

作业既可以在前台运行也可以在后台运行,但是同一时刻,每个虚拟终端只能有一个前台作业

3.进程的状态

  • 就绪状态:进程已获得除CPU以外的运行所需的全部资源
  • 运行状态:进程占用CPU正在运行
  • 等待状态:进程正在等待某一事件或某一资源
  • 挂起状态:正在运行的进程,因为某个原因使其CPU而暂时停止运行
  • 终止状态:进程已结束
  • 休眠状态:进程主动暂时停止运行
  • 僵死状态:进程已停止运行,但是相关控制信息仍保留

4.进程的优先级

Linux中所有进程根据其所处状态,按照时间顺序排列形成不同的队列。系统按照一定的策略进行调度就绪队列中的排列顺序,从而尽快得到运行。

进程优先级的取值范围为-20~19之间的整数,取值越低,优先级越高,默认为0。进程所有者或超级用户有权修改进程的优先级,普通用户只能调低优先级,而超级用户既可以调低也可以调高。

启动进程与作业

1.进程与作业的启动方式

  • (1)手动启动:由用户输入shell命令后直接启动进程,又可分为前台启动和后台启动。用户输入shell命令后按回车键,就将启动一个前台作业。这个作业可能同时启动多个前台进程。而后shell命令行的末尾加上&,再按回车,这样就将启动一个后台作业。
  • (2)调度启动:系统按用户要求的时间或方式执行特定的进程,分为at调度、batch调度、cron调度。

2.作业的前后台切换

  • (1)bg 作业号(background):将前台作业切换到后台运行。若未指定作业号,则将当前作业切换到后台。
  • (2)fg 作业号(foreground):将后台作业切换到前台运行。若未指定作业号,则将后台作业序列中的第一个作业切换到前台运行。

Ctrl + z:挂起作业

3.管理进程与作业的Shell命令

(1)jobs [选项]:显示当前所有作业

Options:
  -l	lists process IDs in addition to the normal information
  -n	lists only processes that have changed status since the last
		notification
  -p	lists process IDs only
  -r	restrict output to running jobs
  -s	restrict output to stopped jobs

(2)ps [选项]:显示进程的状态。无选项时显示当前用户在当前终端启动的进程

Options:
  -a	显示当前终端上所有进程
  -A	显示系统所有进程,包括其他用户进程和系统进程信息
  -l	显示系统的详细信息
  -u	显示包括进程的所有者在内的详细信息
  -x	显示后台进程的信息
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S    42   1993   1704  0  80   0 - 192762 x64_sy tty1    00:00:00 gnome-session-b
0 S    42   2047   1993  0  80   0 - 865614 x64_sy tty1    00:00:04 gnome-shell
0 S    42   2161   2047  0  80   0 - 139095 do_epo tty1    00:00:00 Xwayland
0 S    42   2190   2047  0  80   0 - 143858 x64_sy tty1    00:00:00 ibus-daemon

主要输出说明:

  • S:进程状态爱,启动R表示运行,S表示休眠状态,T表示暂停或终止状态,Z表示僵尸状态
  • UID:进程所有者的用户ID
  • PID:进程号
  • PPID:父进程的进程号
  • NI:进程的优先级
  • SZ:进程占用内存的大小
  • TTY:进程所在终端的终端号,其中桌面环境的终端窗口表示pts/0,字符界面的终端号为tty1~tty6
  • TIME:进程已运行的时间
  • CMD:启动该进程的shell命令

(3)pstree:以树形图显示当前系统进程

(4)kill:终止正在运行的进程或作业。超级用户可终止所有进程,普通用户只能终止自己启动的进程。

4.进程调度

Linux允许用户根据需要在指定时间自动运行指定的进程,也允许用户将非常消耗资源和时间的进程安排到系统比较空闲的时间来执行。进程调度有利于提高资源的利用率。

  • 对于偶尔运行的进程采用at或batch调度
  • 对于特定时间重复运行的进程采用cron调度

(1)at调度

格式:at [选项] [时间]

进程的执行时间采用的方法

1)绝对计时法:指定具体时间,默认采用24小时计时制。

MMDDYY,MM/DD/YY,DD.MM.YY:指定具体日期,必须写在具体时间之后。年份可用两位数字表示,也可用四位数字表示

2)相对计时法:now+时间间隔

3)直接计时法:today、tomorrow、midnight、noon

例:

[root@localhost ~]# date
Fri Jun 18 00:52:33 CST 2021
[root@localhost ~]# at 01:00 06182021
warning: commands will be executed using /bin/sh
at> wall Happy New year!!'
at> <EOT>
job 1 at Fri Jun 18 01:00:00 2021
[root@localhost ~]# at -l
1	Fri Jun 18 01:00:00 2021 a root

(2)batch调度

batch调度将在系统较空闲时运行,适合于时间上要求不高,但运行时占用系统资源较多的工作。

(3)cron调度

cron调度与crond进程、crontab命令、crontab配置文件有关。

1)crontab配置文件

crontab配置文件保存与/var/spool/cron目录中

  • “-”:表示一段时间
  • “,”:表示指定时间
  • “/”:表示时间间隔

在这里插入图片描述

2)crontab命令

Options:
 -u <user>  define user
 -e         edit user's crontab
 -l         list user's crontab
 -r         delete user's crontab

3)crond进程

crond进程在系统启动时自动启动,一直运行在后台。crond进程负责检测crontab配置文件,并按照其设置内容,定期执行指定的cron调度工作。

系统监控

1.who命令:查看当前已登录的所有用户

2.top命令:动态显示CPU利用率、内存利用率和进程状态等相关信息。

3.free命令:显示内存和交换分区的使用情况

系统日志管理

系统日志文件均保存与/var/log目录中,重要的日志文件:

  • boot.log:记录系统引导的相关信息
  • cron:记录cron调度的执行情况
  • dmesg:记录内核启动时的信息,主要包括硬件和文件系统的启动信息
  • Xorg.0.log:记录图形化用户界面的Xorg服务器的相关信息
  • yum.log:记录yum在线更新的相关信息

以上是关于linux--进程管理和监控的主要内容,如果未能解决你的问题,请参考以下文章

linux 系统监控和进程管理

Linux06(网络配置进程管理服务管理动态监控进程)

linux之进程管理,系统监控

Linux基础21 进程介绍, 进程监控状态ps, 进程相关命令pstree,pgrep,pidof, 动态进程监控top, 进程中断概念, kill停止进程信号介绍pkill, killall

Linux crond任务调度 磁盘分区和挂载 网络环境 进程管理 服务(service)管理 动态监控进程 rpm和yum

Linux系统监控与进程管理软件—Htop取代top