CentOS8基础篇9:进程的延迟与周期调度

一、进程的概念

进程:开始执行但是还没有结束的程序的实例

程序:包含可执行代码的文件

进程与程序的关系

进程由程序产生,是一个运行着的、要占系统资源的程序

进程不等于程序

浏览网络时,打开多个IE浏览器程序;不同的IE浏览器打开不同的网页,但每个IE浏览器都使用了相同的iexlporer.exe程序。

操作系统如何辨认相同程序打开的不同的网页,并将每一个执行中的程序识别出来?

二、进程的调度

在Linux系统中,每运行一个程序时系统就需要启动一个进程,进程的启动可以通过手动的方式直接在命令行下完成,也可以通过调度命令有计划地执行。常用的调度命令有at和crontab。

调度启动

at命令

crontab命令

1.延迟性调度命令at

功能:指定时间运行指定的程序

格式:at  [-f 文件] [-m ] 时间  

-f  : 指定存放计划执行命令的文件

-m: 作业结束后发送邮件给执行at命令的用户

时间:任务执行的时间,可采用相对和绝对两种方法

绝对表示法: MMDDYY或MM/DD/YYYY,也可指定 today 或 tomorrow 来表示今天或明天

相对表示法:now+num+时间单位,其中的时间间隔可以是 minutes, hours, days, weeks

〖例5〗 让系统在两天后的17:30执行文件data中指定的作业

#at  -f  data  17:30 +2 days

〖例6〗一分钟以后在tty1中,提示 “hello !!”

 at  now + 1 minutes

 at>  echo “hello!  !” >/dev/tty1

 at> ctrl + D

〖例7〗明天凌晨2点 将正在登陆的用户写入/tmp/aaa.txt

  at  2:00  tomorrow

  at>  w > /tmp/aaa.txt

  at> ctrl + D

〖例8〗一分钟以后,在家目录中建立文件夹 at

 at  now + 1 minutes

 at>mkdir  at

 at> ctrl + D

2.周期性调度命令crontab

功能:计划调度服务

crontab –u user {-e | -l | -r}

-u:设定user的时程表

-e:使用vi设定时程表

-l:列出目前的时程表

-r:删除目前的时程表

crontab –u user file

file:存放时程表的文件

时程表格式:minute hour day month day-of-the-week command

空格分割

*代表任意的值

-表达一个范围

用逗号分隔表达一个值的列表

按 ctrl+D结束

〖例9〗 每周四早晨 8:30,提醒用户上午 10:00 有一个会议

#crontab

30  8   *  *  4  echo  “meeting at 10:00 AM” > /dev/tty1

Ctrl + D

如果需要修改周期性任务,可以执行:

#crontab  -e

此时系统会打开一个vim编辑器,用于修改调度任务。

三、进程的查看

1.查看系统进程信息的命令ps

命令语法:    ps  [选项]

选项说明:

-A:显示系统中所有进程的信息,与-e具有相同的功能。

-a:显示所有用户进程的信息。

-f:完整的显示进程的所有信息。

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

-r:只显示正在运行的进程。

-u:显示面向用户的格式(包括用户名、CPU及内存使用情况等信息)。

-x:显示所有非控制终端上的进程信息。

-p:显示由进程ID指定的进程的信息。

-t:显示指定终端上的进程的信息。

〖例10〗查看系统中终端上所有用户进程的所有信息。

# ps  aux

如果显示的信息过多可以使用管道命令分页查看输出信息:

# ps  aux| less

如果想查看用户glenda的所有进程信息可以执行下面的命令:

# ps  aux | grep  Glenda

2.查看各进程继承关系的命令pstree

pstree命令以树状结构显示系统进程的继承关系。树状图将会以 pid (如果有指定) 或是以 init为根,如果指定user,则树状结构只显示该用户所拥有的进程。

命令格式:    pstree [选项] [pid|user]

选项说明:

-a:显示该进程的完整继承关系,如果是被内存置换出去的进程则会加上括号。

-c 如果有重复的进程名, 则分开列出 (默认值是会在前面加上 * )。

pid|user:查看指定根进程(pid)或用户(user)所拥有的进程。

四、进程的终止

终止进程的kill 命令

功能:结束指定进程的运行

格式:kill [-9]  进程号

进程号:每个进程都有一个PID

-9 :强行结束指定进程的运行

〖例11〗 终止sshd服务进程的执行。

#ps  -A | grep  sshd//查询sshd服务进程的pid

#kill   1097   //1097是sshd服务进程的pid

通过进程名终止进程的killall命令

功能:

killall命令通过进程的名字,直接杀死进程。通常与ps命令结合在一起使用的。

格式:killall [-9]  进程名

〖例12〗终止所有sshd进程。

# killall  sshd

五、作业控制的概念

作业控制是指控制当前正在运行的进程的行为。使用作业控制,用户可以同时运行多个作业,并在需要时在作业之间进行切换。例如,系统资源紧张的时候,用户可以挂起一个不紧急的、正在运行的进程,稍后再恢复它的运行。Shell会记录所有系统中的进程,并保持对进程状态的跟踪。

例如,完整地看完一个DVD碟是一个完整的任务,由一个独立的进程来完成。看碟的过程是进程处于运行状态,但是在观看的过程中,遇到电话、敲门等事务的干扰,此时电话、敲门是紧急、首要需解决的事务,不是非常紧急的事情——看DVD的过程——将被暂停,暂停的过程即是正在运行进程的挂起。当处理完突发事务——电话或敲门——以后,可以将被暂停的DVD播放过程重新激活,继续完成这个任务。这即是一个简单的作业控制的例子:运行à暂停à运行。

命令

功能说明

Ctrl+d

正常终止一个正在前台运行的进程

Ctrl+c

强行终止一个正在前台运行的进程

Ctrl+z

挂起一个正在前台运行的进程

jobs

查看后台运行或者被挂起的进程

bg(background)

将被挂起的进程调到后台运行

fg(foreground)

将被挂起的进程调到前台运行

cmd &

直接在后台启动运行一个新的命令,不占用终端资源

kill

杀死进程

项目三:进程的延迟与周期调度

操作过程

$at  4:50pm

at> echo “I’m off work now. ”> /dev/tty1

at><EOT>

$crontab

30  5  *  *  *  ls  -l | grep  .port > list

按 ctrl+D结束

$./test

$ps  aux | grep  test

$kill  -9  6424

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北方的流星

你的鼓励是我创作最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值