idea离线安装 比特微 Transformer iphone string linq dom vue手册 安卓项目实战 pmp培训视频 直销系统源码 鼠标进入和离开事件 软件测试实战项目 base64转16进制 git显示所有远程分支 如何升级python bootstrap单选按钮 mysql 选择数据库 python多线程 python基本语法 python简易教程 python正则替换 java覆盖 java函数式接口 javastring类型 java自定义异常 java时间转换 java基础框架 javaabstract java判断是否为空 linux基础教程 redis入门指南 图片链接生成器 ps校正倾斜照片 js删除节点 unix系统下载 超星网课助手 3d软件下载 pdf安装包官方下载 R语言初学者指南
当前位置: 首页 > 学习教程  > 编程语言

进程和计划任务管理

2020/12/28 19:23:20 文章标签:

进程和计划任务管理 一、什么是进程 在 Linux系统当中:触发任何一个事件时,系统都会将它定义成为一个进程,并且给予这个进程一个ID,称为PID,同时根据触发这个进程的用户与相关属性关系,给予这个PID一组有…

进程和计划任务管理

一、什么是进程

在 Linux系统当中:触发任何一个事件时,系统都会将它定义成为一个进程,并且给予这个进程一个ID,称为PID,同时根据触发这个进程的用户与相关属性关系,给予这个PID一组有效的权限设置。从此以后,这个PID能够在系统上面执行的操作就与这个PID的权限有关。

二、程序和进程

1.程序和进程的概念

程序( program):通常为二进制程序,放置在存储媒介中(如硬盘、光盘、软盘、磁带等,以物理文件的形式存在。(文件中静态保存的代码

进程( process):程序被触发后,执行者的权限与属性、程序的代码与所需数据等都会被加载到内存中,操作系统给予这个内存中的单元一个标识符(PID),可以说进程就是一个正在运行中的程序。(动态执行的代码;父、子进程;每个程序可以创建一个或多个进程

2.子进程与父进程

当我们登录系统后,会获取一个bash的shel,然后我们用这个bash提供的接口去执行另一个命令,例如/usr/bin/passwd或是 touch等,那些另外执行的命令也会被触发成为PID。那个后来执行命令所产生的PD就是子进程,而在我们原本的bash环境下,就称为父进程。连续执行两个bash后,第二个bash的父进程就是前一个bash。

例:

在目前的bash环境下,再触发一次bash,并用ps -l这个命令查看进程相关的输出信息。

直接执行bash,会进入到子进程的环境中,然后输入ps -l后,出现:

在这里插入图片描述

三、查看进程信息ps(静态)

ps命令——查看静态的进程统计信息

方法一:ps aux

●a:显示终端上的所有进程,包括其他用户的进程
●u:表示列出进程的用户
●x:显示所有终端的进程

执行ps aux命令后得到

[root@localhost ~] # ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 128164  6848 ?        Ss   00:45   0:01 /usr/lib/systemd/systemd --switched-roo
root          2  0.0  0.0      0     0 ?        S    00:45   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    00:45   0:00 [ksoftirqd/0]
......

相关名词解释:
1)USER:进程的用户。

2)PID:进程的ID。

3)%CPU:进程占用的CPU百分比。

4)%MEM:占用内存的百分比。

5)VSZ:该进程使用的虚拟内存量(KB)。

6)RSS:该进程占用的物理内存量(KB)。

7)TTY:启动进程的终端名。不是从终端启动的进程则显示为 ?

8)STAT:该行程的状态:
D:不可中断的休眠状态;R:正在运行状态;S:处于休眠状态,可被唤醒;T:停止状态,可能是在后台暂停或进程处于跟踪 调试状态;Z:僵尸进程,进程已经中止,但是部分程序还在内存当中

9)START:该进程被触发启动时间。

10)TIME:该进程实际使用CPU运行的时间。

11)COMMAND:进程的启动命令。

方法二:ps -elf

-e:显示系统内的所有进程信息。

-l:使用长格式显示进程信息。

-f:使用完整的格式显示进程信息。

[root@localhost ~] # ps -elf
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root          1      0  0  80   0 - 32041 ep_pol 00:45 ?        00:00:01 /usr/lib/systemd/systemd --switched-ro
1 S root          2      0  0  80   0 -     0 kthrea 00:45 ?        00:00:00 [kthreadd]
1 S root          3      2  0  80   0 -     0 smpboo 00:45 ?        00:00:00 [ksoftirqd/0]
1 S root          5      2  0  60 -20 -     0 worker 00:45 ?        00:00:00 [kworker/0:0H]

相关名词解释:
1)F:内核分配给进程的系统标记。

2)S:进程的状态。

3)UID:启动这些进程的用户。

4)PID:进程的进程ID。

5)PPID:父进程的进程号(如果该进程是由另一个进程启动的)。

6)C:进程生命周期中的CPU利用率。

7)PRI:进程的优先级(越大的数字代表越低的优先级)。

8)NI:谦让度值用来参与决定优先级。

9)ADDR:进程的内存地址。

10)SZ:假如进程被换出,所需交换空间的大致大小。

11)WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名。

12)STIME:进程启动时的系统时间。

13)TTY:进程启动时的终端设备。

14)TIME:运行进程需要的累计CPU时间。

15)CMD:进程的启动命令。

四、查看进程信息top(动态)

1.每行对应的信息

在这里插入图片描述

第一行是任务队列信息
1)10:38:13 : 系统时间
2)up 3:09 : 系统已运行时长
3)2 user :当前登录用户数
4)load average: 0.00, 0.01, 0.05 :系统负载,即单位时间内系统处理的任务数,后面三个数值分别为1分钟、5分钟、15分钟前到现在的平均值

第二行是进程信息
1)Tasks :总进程数
2)running :正在运行的进程数
3)sleeping :休眠的进程数
4)stopped :中止的进程数
5)zombie :僵死的进程数

第三行为CPU的信息
1)us :用户占用
2)sy :内核占用
3)ni :优先级调度占用
4)id :空闲CPU,要了解空闲的 CPU 百分比,主要看%id 部分
5)wa:I/O 等待占用
6)hi :硬件中断占用
7)si :软件中断占用
8)st :虚拟化占用

第四行为内存的信息
1)total:总内存空间
2)free :空闲内存
3)used:已用内存
4)buff/cache:物理内存和交换内存的缓冲区总和

第五行为交换空间的信息
1)total:总交换空间
2)free :空闲交换空间
3)used:已用交换空间
4)avail Mem:可用物理空间

2.进程信息的对应解释

在这里插入图片描述

1)PID:进程id

2)USER:进程所有者的用户名

3)PR:优先级

4)NI:谦让度值。负值表示高优先级,正值表示低优先级

5)VIRT:进程使用的虚拟内存总量,单位kb

6)RES:进程使用的物理内存大小,单位kb

7)SHR:共享内存大小,单位kb

8)S:进程状态(D:不可中断的休眠状态;R:正在运行状态;S:处于休眠状态,可被唤醒;T:停止状态,可能是在后台暂停或进程处于跟踪 调试状态;Z:僵尸进程,进程已经中止,但是部分程序还在内存当中)

9)%CPU:上次更新到现在的CPU时间占用百分比

10)%MEM:进程使用的物理内存百分比

11)TIME+:进程使用的CPU时间总计,单位1/100秒

12)COMMAND :命令名/命令行

按键及其数据管理

按键功能/作用
P根据CPU使用百分比大小进行排序
M根据驻留内存大小进行排序
N根据启动时间进行排序
c切换显示命令名称和完整命令行
h可以获得 top程序的在线帮助信息
k根据提示输入指定进程的 PID 号并按 Enter 键终止对应的进程
q退出 top 程序
数字1键显示CPU个数和状态(前提是有多个CPU)

3.查看进程信息pgrep

  • gprep根据特定条件查询进程PID信息(常用的)
    -l #显示进程名称(后面必须跟参数,这个最好带上,不然只显示进程号)
    -u #指定进程的有效用户ID

在这里插入图片描述

加或不加-l的区别

在这里插入图片描述

4.查看进程树pstree

  • pstree以树形结构列出进程信息(常用选项)
    pstree -aup
    -a #显示完整信息
    -u #列出对应用户名
    -p #列出对应PID号

在这里插入图片描述

加上-u显示相应进程的用户名

在这里插入图片描述

5.进程的启动

1)手动启动

前台启动:用户输入命令,直接执行程序
后台启动:在命令行尾加入“&”符号
在这里插入图片描述

输出的信息中包含后台任务序号[1] 、PID号1654。

2)调度启动

使用at命令,设置一次性计划任务
使用crotab命令,设置周期性计划任务

6.进程的前后调度

按键或命令功能/作用
Ctrl+Z组合键将当前进程挂起,即调入后台并停止执行
jobs命令查看处于后台的任务列表
jobs -l(加上-l显示进程号,某些命令需要进程号)
fg命令将后台进程恢复到前台运行,可指定任务序号

在这里插入图片描述

7.终止进程的运行

按键或命令功能/作用
Ctrl+C组合键中断正在执行的命令
kill命令kill用于终止指定PID号的进程(可以加上-9选项强制终止)
killall命令killall用于终止指定名称相关的所有进程(可以加上-9选项强制终止)
pkill命令作用:根据特定条件终止相应的进程
常用命令选项:
-U:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应程序

五、任务管理

1.一次性计划任务at

建立任务格式:

at [HH:MM] [yyyy-mm-dd]   #如果后面不跟年月日,那么默认使用当前日期

建立任务格式对应:

at [小时:分钟] [年-月-日]

查看任务命令:atq

删除任务:atrm 任务编号

在这里插入图片描述

查看及删除未执行任务

在这里插入图片描述

六、计划任务管理crontab(非常重要)

1.crontab命令

概念:按照预先设置的时间周期(分、时、日、月、周)重复执行用户指定的命令操作,是一种周期性计划任务。

主要设置文件
全局配置文件,位于文件:/etc/crontab
系统默认的设置,位于目录:/etc/cron.*/
用户定义的设置,位于文件:/var/spool/cron/用户名

2.管理crontab计划任务

编辑计划任务:crontab -e [-u 用户名]     # -u默认的是当前用户
查看计划任务:crontab -l [-u 用户名]
删除计划任务:crontab -r [-u 用户名]

3.crontab任务配置的格式

字段分钟小时日期月份任务
取值范围0~590~231~311~120~7执行的命令或脚本

注意:周中0和7都代表周日

4.时间数值的特殊表示方法

*表示该范围内的任意时间
,表示间隔的多个不连续时间点
-表示一个连续的时间范围
/表示间隔的时间频率

例:

每1分钟执行: */1 * * * *或者* * * * *
每小时执行: 0 * * * *或者0 */1 * * *
每天执行 0 0 * * *
每周执行 0 0 * * 0
每月执行 0 0 1 * *
每年执行 0 0 1 1 *
0 17 * * 1-5         周一到周五每天17点
30 8 * * 1,3,5       周一,周三,周五8.30
0 8-18/2 * * *       8点到18点每两小时
0 * */3 * *          每三天

补充:

每个星期6的7点30重启httpd服务
echo '30 7 * * 6 /usr/bin/systemctl httpd restart' >> /var/spool/cron/root #(使用echo和>>追加此任务到后面的目录下)

本文链接: http://www.dtmao.cc/news_show_550222.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?