Java教程

进程和计划任务的管理

本文主要是介绍进程和计划任务的管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

查看进程

控制进程

at一次性任务设置

crontab周期性任务设置

 程序 二进制对的文件、属于静态

进程:是程序运行的过程,属于动态,有生命周期及运行状态

程序 进程 线程关系
线程包含在进程之中,是进程中实际运作单位,也是操作系统中能够独立运行的基本单位,
也称作轻量进程,一个进程中可以并发多个线程,每条线程可以并行执行不同任务,而我们在任务
管理器中看到的一个个进程则由我们下载的应用程序所产生的,当然一个应用程序可以包含多个进程。

 

 

查看进程

 

方法一
常用的参数
-a:显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将显示系统中所有的进程信息。
-u:使用以用户为主的格式输出进程信息。
-x:显示当前用户在所有终端下的进程信息。

常用的选项组合
ps -aux #将以简单列表的形式显示出进程信
上述输出信息中,第一行为列表标题,其中各字段的含义描述如下。
USER:启动该进程的用户账号的名称。
PID:该进程在系统中的数字 ID 号,在当前系统中是唯一的。
%CPU:CPU 占用的百分比。
%MEM:内存占用的百分比。
VSZ:该进程使用的虚拟内存量(KB)。
RSS:该进程占用的物理内存量(KB)。
TTY:表明该进程在哪个终端上运行。不是从终端启动的进程则显示为?。
简说:pts 是远程登录终端 ctrl+ALT F1-F6 tty1 图像界面 2和6 字符界面 ? 系统本身自身执行的进程

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

D:系统守护进程
T:调式、程序执行一般停止
R :该程序目前正在运作,或者是可被运作;
S :该程序目前正在睡眠当中 (可说是 idle 状态啦!),但可被某些讯号(signal) 唤醒。T :该程序目前正在侦测或者是停止了;
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态D 不可中断状态.
它们含意如下::
<: 表示进程运行在高优先级上
N: 表示进程运行在低优先级上
L: 表示进程有页面锁定在内存中
s: 表示进程是控制进程
l: 表示进程是多线程的
+: 表示当前进程运行在前台
D:系统守护进程
T 调式、程序执行一般停止

START:启动该进程的时间。
TIME:该进程占用的 CPU 时间。
COMMAND:启动该进程的命令的名称

 

 ctrl+z [1]+   已停止 vim a.txt

 

例2 D 不可中断状态
[root@xuegod63 ~]# tar -zcvf usr-tar.gz /usr/
#然后在另一个终端不断查看状态,由 S+,R+变为 D+

 

 

ps -elf #将以长格式显示系统中的进程信息

-e:显示系统内的所有进程信息。
-1:使用长格式显示进程信息。
-f:使用完整的格式显示进程信息。


各列的解释:
F:内核分配给进程的系统标记。
S:进程的状态。
UID:启动这些进程的用户。
PID: 进程的进程ID.
PPID:父进程的进程号(如果该进程是由另一“个进程启动的)
C:进程生命周期中的CPU利用率。
PRI:进程的优先级(越大的数字代表越低的优先级)。
NI: 谦让度值用来参与决定优先级。
ADDR:进程的内存地址。
SZ:假如进程被换出,所需交换空间的大致大小。
WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名。
STIME:进程启动时的系统时间。
TTY:进程启动时的终端设备。 pts/0255代表虚拟终端,一般是远程连接的终端;tty1tty7 代表本地控制台终端
TIME:运行进程需要的累计CPU时间。
CMD:进程的启动命令。

 

僵尸进程:
一个进程结束了,但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程,因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程,看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由Init来接管它,成为它的父进程,子进程退出后init会回收其占用的相关资源。但是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。

 

进程状态。常见的状态有以下几种:
-D:不可被唤醒的睡眠状态,通常用于I/O情况。
-R:该进程正在运行。
-S:该进程处于睡眠状态,可被唤醒。
-T:停i状态,可能是在后台暂停或进程处于除错状态。
-W:内存交互状态(从2.6内核开始无效)。
-X:死掉的进程(应该不会出现)。
-Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。
-<:高优先级(以下状态在 BSD 格式中出现)。
-N:低优先级。
-L:被锁入内存。
-s:包含子进程。
-l:多线程(小写L) 。
-+:位于后台。
-C:进程占用cPU的百分比

 

 

上述输出信息中,开头的部分显示了系统任务(Tasks)、CPU占用、内存占用(Mem)、交换空间(Swap)等汇总信息,汇总信息下方依次显示当前进程的排名情况。相关信息的含义表述如下。
uptime
13:22:30    当前时间
up 20days 系统运行时间 ,说明此服务器连续运行 20 天了
2 user 当前登录用户数
load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。 三个数值分别为 1 分钟、5 分钟、15 分钟前到现在的平均值。


系统任务(Tasks)信息

total,总进程数;

running,正在运行的进程数;

sleeping, 休眠的进程数;

stopped,中止的进程数;

zombie,僵死无响应的进程数。
CPU 占用信息:us,用户占用;

sy,内核占用;

ni,优先级调度占用;

id,空闲CPU;

wa,I/O 等待占用;

hi,硬件中断占用;

si,软件中断占用;

st,虚拟化占用。要了解空闲的 CPU 百分比,主要看%id 部分。
内存占用(Mem)信息:total,总内存空间;free,空闲内存;used,已用内存;buff/cache,物理内存和交换内存的缓冲区总和。

交换空间(Swap)占用:total,总交换空间;free,空闲交换空间;used,已用交换空间;avail Mem,可用物理空间。

详细说明

Tasks: 481 total 进程总数
1 running 正在运行的进程数
480 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s): 0.0% us 系统用户进程使用 CPU 百分比。
0.0% sy 内核中的进程占用 CPU 百分比 优先级调度占用
0.0% ni 用户进程空间内改变过优先级的进程占用 CPU 百分比
98.7% id 空闲 CPU 百分比


0.0% wa
cpu 等待 I/0 完成的时间总量。
测试:
终端 1:执行:top
终端 2:dd if=/dev/zero of=/a.txt count=10 bs=100M
终端 3:dd if=/dev/zero of=/a.txt count=10 bs=100M

 

0.0% hi(了解) 硬中断消耗时间 硬件中断占用
硬中断,占的 CPU 百分比。1. 硬中断是由硬件产生的,比如,像磁盘, 网卡,键盘,时钟等。每个设备或设备集都有它自己的 IRQ(中断请求)。基于 IRQ,CPU 可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。# hi ->
Hardware IRQ: The amount of time the CPU has been servicing hardware interrupts.

 

0.0% si(了解) 软中断消耗时间 软件中断占用
软中断,占的 CPU 百分比。1. 通常,软中断是一些对 I/O 的请求。这些请求会调用内核中可以调度 I/O 发生的程序。对于某些设备,I/O 请求需要被立即处理,而磁盘 I/O 请求通常可以排队并且可以稍后处理。根据 I/O 模型的不同,进程或许会被挂起直到 I/O 完成,此时内核调度器就会选择另一个进程去运行。I/O 可以在进程之间产生并且调度过程通常和磁盘 I/O 的方式是相同。# si -> Software Interrupts.: The amount of time the CPU has been servicingsoftware interrupts.

0.0 st (steal 偷) 虚拟化占用。要了解空闲的 CPU 百分比,主要看%id 部分。
st:虚拟机偷取物理的时间。比如:物理机已经运行了 KVM,XEN 虚拟机。KVM 虚拟机占用物理机的 cpu 时间


Mem: 2033552k total 物理内存总量
340392k used 使用的物理内存总量
1376636k free 空闲内存总量
316524k buff/cache 用作内核缓存的内存量。和 free -k 一个意思
Swap: 2017948k total 交换区总量
0k used 使用的交换区总量
192772k free 空闲交换区总量
1518148 avail Mem 总的可利用内存是多少

 

7 行进程信息

PID 进程 id
USER 进程所有者的用户名
PR 优先级(由内核动态调整),用户不能
NI 进程优先级。 nice 值。负值表示高优先级,正值表示低优先级,用户可以自己调整

VIRT(virtual memory usage) 虚拟内存,是进程正在使用的所有内存(ps 中标为 VSZ) VIRT:virtual memory usage 虚拟内存
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请 100m 的内存,但实际只使用了 10m,那么它会增长
100m,而不是实际的使用量


RES(resident memory usage) 是进程所使用的物理内存。实际实用内存(ps 中标为 RSS) RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括 swap out
2、包含其他进程的共享
3、如果申请 100m 的内存,实际使用 10m,它只增长 10m,与 VIRT 相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小


SHR 共享内存大小,单位 kb SHR:shared memory 共享内存
1、除 M 了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR 4、swap out 后,它将会降下来


S 进程状态。
D=不可中断的睡眠状态
R=运行中或可运行S=睡眠中
T=已跟踪/已停止Z=僵停

%CPU 上次更新到现在的 CPU 时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的 CPU 时间总计,单位 1/100 秒
COMMAND 命令名/命令行

 

top 命令全屏操作界面快捷键:
默认 3s 刷新一次,按 s 修改刷新时间按空格 :立即刷新。
P:按 CPU 排序
M:按内存排序
T:按时间排序
p: 进程 IP,查看某个进程状态    退出top -p +PID号
N 键根据启动时间进行排序
数字键 1:显示每个内核的 CPU 使用率u/U:指定显示的用户
h:可以获得 top 程序的在线帮助信息
q:键可以正常地退出 top 程序

注:若通过 top 排名工具发现某个进程 CPU 占用率非常高,需要终止该进程的运行,可以在 top 操作界面中按 k 键,然后在列表上方将会出现“PID to signal/kill [default pid = 3180]:” 的提示信息,根据提示输入指定进程的 PID 号并按 Enter 键, 出现“Send pid 5597 signal [15/sigterm]”的二次确认的提示信息,然后按Enter 键确认即可终止对应的进程。

 

 

 

 

pgrep -l "log"

 

 

pgrep -l -U root -t tty1

 

 

 

 

 pstree -aup apache

 

 

 

 

 &后台运行

 jobs -l  查看后台运行

 

 fg 2后台调到前台

 

 

 kill -9 +PID号 #强行杀死

killall -9 vim #杀死所有

 

 

 指定用户的进程  杀死

pkill -9 -U "cheng5"

 

 

 

[root@dc4 ~]# pkill -9 -U "cheng5"
[root@dc4 ~]# date
2021年 12月 30日 星期四 19:12:53 CST
[root@dc4 ~]# at 19:15 2021-12-30
at> pgrep -U root|wc -l>/tmp/ps.root
at> <EOT>
job 1 at Thu Dec 30 19:15:00 2021
[root@dc4 ~]# cat /tmp/ps.root
cat: /tmp/ps.root: 没有那个文件或目录
[root@dc4 ~]# cat /tmp/ps.root
214
[root@dc4 ~]# cat /tmp/ps.root
214

 

 

 

 

 

使用 crontab 命令管理用户的计划任务
设置用户的周期性计划任务列表主要通过 crontab 命令进行,结合不同的选项可以完成不同的计划任务管理操作。常用的选项如下。
-e:编辑计划任务列表。
-u:指定所管理的计划任务属于哪个用户,默认是针对当前用户(自己),一般只有 root 用户有权限使用此选项(用于编辑、删除其他用户的计划任务)。
-l:列表显示计划任务。
-r:删除计划任务列表。
下面将分别讲解 crontab 命令相关选项的使用。

crontab -u 用户名 #指定XX用户的cron服务
crontab -l #列出当前用户下的cron的详细内容
crontab -u zx -l #列出zx用户下的cron的详细内容
crontab -r #删除所有用户的cron内容,普通用户执行,只删除自己的cron内容
crontab -r -u zx #删除zx用户的cron内容
crontab -e #编辑cron服务

 

 

总结

查看进程的命令(ps、top、pgrep、pstree)

进程控制

启动进程、调度进程、终止进程

at命令设置计划任务

crontab计划任务的配置字段

 

 

 

这篇关于进程和计划任务的管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!