Linux---进程与计划任务管理 | 查看进程命令PS,PGREP,TOP | 计划任务管理AT | CRONTAB | 定期执行程序|超详细

程序和进程的关系

★ 什么是程序?

★保存在硬盘、光盘等介质中的可执行代码和数据
★文件中静态保存的代码

★什么是进程?

★在CPU及内存运行的程序代码
★动态执行的代码
★父、子进程
★每个程序可以创建一个或多个进程

查看进程信息的命令(静态)

ps-查看静态的进程统计信息

第一种表示方法:
★命令: ps aux
在这里插入图片描述

★a:显示终端上的所有进程,包括其他用户的进程
★u:表示列出进程的用户
★x:显示所有终端的进程
各列项的说明:
★USER:进程的用户。
★PID:进程的ID。
★%CPU:进程占用的CPU百分比。
★%MEM:占用内存的百分比。
★VSZ:该进程使用的虚拟内存量(KB)。
★RSS:该进程占用的物理内存量(KB)。
★TTY:启动进程的终端名。不是从终端启动的进程则显示为 ?
★STAT:该行程的状态:
D:不可中断的休眠状态;R:正在运行状态;S:处于休眠状态,可被唤醒;T:停止状态,可能是在后台暂停或进程处于跟踪 调试状态;Z:僵尸进程,进程已经中止,但是部分程序还在内存当中
★START:该进程被触发启动时间。
★TIME:该进程实际使用CPU运行的时间。
★COMMAND:进程的启动命令。

ps-查看静态的进程统计信息

第二种表示方法:
★命令: ps -elf
在这里插入图片描述

★-e:显示系统内的所有进程信息。
★-l:使用长格式显示进程信息。
★-f:使用完整的格式显示进程信息。
各列的说明:
★F:内核分配给进程的系统标记。
★S:进程的状态。
★UID:启动这些进程的用户。
★PID:进程的进程ID。
★PPID:父进程的进程号(如果该进程是由另一个进程启动的)。
★C:进程生命周期中的CPU利用率。
★PRI:进程的优先级(越大的数字代表越低的优先级)。
★NI:谦让度值用来参与决定优先级。
★ADDR:进程的内存地址。
★SZ:假如进程被换出,所需交换空间的大致大小。
★WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名。
★STIME:进程启动时的系统时间。
★TTY:进程启动时的终端设备。
★TIME:运行进程需要的累计CPU时间。
CMD:进程的启动命令。

什么是僵尸进程?

★一个进程的父进程先结束,那此进程将不会变成僵尸进程 因为每个进程结束时,系统会扫描当前系统中所运行的所有程序查看有没有哪个进程时刚刚结束的这个进程的子进程 如果是的话,就有Init来接管他,成为它的父进程 子进程退出后Init会回收其占用相关资源
★如果子进程先结束,就会变成僵尸进程

查看进程排名信息的命令(动态)

★命令: top在这里插入图片描述
第一行是任务队列信息
★20:35:13 : 系统时间
★up 15:20 : 系统已运行时长
★2 user :当前登录用户数
★load average: 0.39, 0.12, 0.07 :系统负载,即单位时间内系统处理的任务数,后面三个数值分别为1分钟、5分钟、15分钟前到现在的平均值

第二行为进程信息
★Tasks :总进程数
★running :正在运行的进程数
★sleeping :休眠的进程数
★stopped :中止的进程数
★zombie :僵死的进程数

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

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

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

在这里插入图片描述
各列项说明

★PID:进程id
★USER:进程所有者的用户名
★PR:优先级
★NI:谦让度值。负值表示高优先级,正值表示低优先级
★VIRT:进程使用的虚拟内存总量,单位kb
★RES:进程使用的物理内存大小,单位kb
★SHR:共享内存大小,单位kb
★S:进程状态
★%CPU:上次更新到现在的CPU时间占用百分比
★%MEM:进程使用的物理内存百分比
★TIME+:进程使用的CPU时间总计,单位1/100秒
★COMMAND :命令名/命令行
top常用命令
★P 键:根据CPU使用百分比大小进行排序
★M 键:根据驻留内存大小进行排序
★N 键:根据启动时间进行排序
★c 键:切换显示命令名称和完整命令行
★h 键:可以获得 top程序的在线帮助信息
★k 键:根据提示输入指定进程的 PID 号并按 Enter 键终止对应的进程
★q 键:退出 top 程序
数字1 键:显示CPU个数和状态

tty 终端
Centos 7 系统,tty1表示图形界面,tty2-tty6 表示文字界面,可以使用CTRL+

查看进程信息pgrep(特定条件)

根据特定条件查询进程PID信息
★命令:pgrep
★格式:pgrep -l 进程关键字
★-l: 显示进程名
★-U: 指定特定用户
★-t: 指定终端

在这里插入图片描述

在这里插入图片描述

查看进程树pstree

★命令:pstree
★格式:pstree -aup [用户名]
-a:显示完整信息
-u:列出对应用户名
-p:列出对应PID号
在这里插入图片描述
★注意:只查看属于指定用户的进程树结构
在这里插入图片描述

进程的启动方式:

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

★调度启动
1.使用at命令,设置一次性计划任务
2.使用crontab命令,设置周期性计划任务

进程的前后台调度

★Ctrl+Z 组合键
1.将当前进程挂起,即调入后台并停止执行

★jobs命令
1.jobs -l
2.查看处于后台的任务列表在这里插入图片描述

★fg命令
1.将后台进程恢复到前台运行,可指定任务序号

终止进程的运行

★Ctrl+C 组合键
1.中断正在执行的命令
★kill、 killall命令
1.kill用于终止指定PID号的进程
2.killall 用于终止指定名称相关的所有进程
3. -9选项用于强制终止
4. 在这里插入图片描述

★pkill命令
1.根据特定条件终止相应的进程
2.常用命令选项:
-U 根据进程所属的用户终止相应进程
-t 根据进程所在的终端终止相应进程

计划任务管理

一次性计划任务-at命令

★格式:at [HH:MM] [yyyy-mm-dd]
在这里插入图片描述

注意:CTRL+ D 提交任务

在这里插入图片描述
★查看未执行的任务列表
命令: atq
在这里插入图片描述
★删除未执行任务
命令:atrm [序号]
序号:是查询未执行任务列表前系统标记任务的序号

在这里插入图片描述

计划任务管理crontab

★命令:crontab 命令
★这个服务要打开才能操作systemctl stauts crond.service
在这里插入图片描述

1.按照预先设置的时间周期(分钟、小时、天、月、周)重复执行用户指定的命令操作
2.属于周期性计划任务
★主要设置文件
1.全局配置文件:位于文件:/etc/crontab
2.系统默认的设置:位于目录:/etc/cron.*/
3.用户定义的设置,位于:/var/spool/cron/用户名
★管理crontab计划任务
1.编辑计划任务
crontab -e [-u 用户名]
2.查看计划任务
crontab -l [-u 用户名]
3.删除计划任务
crontab -r [-u 用户名]
注意:-u 缺省时默认是针对当前用户

★任务配置的格式
1.时间周期的设置
分钟------小时---------日期---------月份-----周
0-59------0-23---------1-31--------1-12-----0-7
分钟:取值为0-59之间的任意整数
小时:取值为0-23之间的任意整数
日期:取值为1-31之间的任意整数
月份:取值为1-12之间的任意整数
星期:取值为0-7之间的任意整数(0、7都是星期天的意思)
2.任务内容设置
命令或者脚本文件
run_command

3.时间数值的特殊表示方法
1.* 表示该范围内的任意时间
2.,表示间隔的多个不连续时间点
3.- 表示一个连续的时间范围
4./ 指定间隔的时间频率

★例如:
0 17 * * 1-5
#周一到周五每天17:00执行
2.30 8 * *1,3,5
#每周一三五的8点30分执行
0 8-18/2 * * *
#8点到18点之间每2小时执行
0 * */3 * *
#每3天执行
*/ * * * * 或者 * * * * *
#每分钟执行
*/5 * * * *
#每5分钟执行
0 * * * * 或者 0 */1 * * *
#每小时执行
0 7 * * *
#每天7执行
0 0 * * *
#每天执行
0 0 * * 1
#每周执行执行
0 0 1 * *
#每月执行执行
0 0 1 1 *
#每年执行执行
5 * * * * ls
#指定每小时的第5分钟执行一次ls命令
30 5 * * * ls
#指定每天的 5:30 执行ls命令
30 7 8 * * ls
#指定每月8号的7:30分执行ls命令
30 5 8 6 * ls
#指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls
#指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
30 3 10,20 * * ls
#每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25 8-11 * * * ls
#每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15 * * * * ls
#每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
30 6 */10 * * ls
#每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令。 ]

★第二种方法:
echo '30 7 * * 6 /usr/bin/systemctl httpd restart ’ >> /var/spool/cron/root

猜你喜欢

转载自blog.csdn.net/Dark_Tk/article/details/113528376