Linux作业调度和服务管理

目录

作业调度

调整进程的优先级

服务管理

systemd管理服务操作

systemd管理target(一点点)


作业调度的本质仍然是进程,之所以叫做作业调度,作业是以shell为单位的,一个shell建立的作业,不会被另外一个shell看到(包括root),但是仍然可以看到作业对应的进程。

  1. 前台进程

    运行在用户眼前的进程就是前台进程,当用户眼前运行一个前台进程时,如果想运行其他进程,必须关闭当前前台进程,或者将该前台进程放到后台(backgrand process)运行

  2. 后台进程

    后台进程不会影响用户当前shell运行其他进程。

    并不是所有的进程都能作为后台进程运行在后台的。(比如说top命令)

一个进程什么情况可以放在后台进程

  1. 运行时间较长,用户不想在前台等待,该进程可以运行结束

  2. 服务(service)进程,用户想永远让其处于运行状态

作业调度

& 在命令行的结尾加上一个&,就能够使前台进程变为后台进程

可以通过ps命令进行查看,但是无法判断使前台进程还是后台进程

jobs命令可以查看后台进程

 [root@bogon ~]# cat &
 [1] 2906
 [root@bogon ~]# jobs 
 [1]+  Stopped                 cat

jobs命令是一个阉割版本的ps,只能查看当前shell运行的后台进程。通过jobs来管理后台进程。 jobs功能有限,管理范围有限。 jobs管理后台进程,也是使用kill命令,只不过,kill命令本身也可以向job id发送相应的信号。 kill + %[后台进程号]就可以杀死后台进程

 [root@bogon ~]# cat &
 [1] 2923
 [root@bogon ~]# jobs
 [1]+  Stopped                 cat
 [root@bogon ~]# kill %1
 [1]+  Terminated              cat
 [root@bogon ~]# jobs 

前台进程和后台进程之间的转换 当前台进程运行时,可以使用ctrl+c停止该进程,也可以使用ctrl+z将该进程放到后台,注意,当一个进程由前台切换到后台时(ctrl+z),那么该进程的状态就会变成stop,如果你想继续运行该进程,需要使用kill命令发送让该进程继续运行的信号。

 bg %[进程号] : 将前台进程放在后台运行
 fg %[进程号] : 将后台进程放在前台

调整进程的优先级

最大允许4个进程同时使用100%的cpu,假如说有5个进程需要运行,且该5个进程都需要占用100%的cpu,如果你觉得哪个进程更需要快速运行结束,那么就调整这个进程的优先级。

[root@bogon ~]# nice -n -20 cat /dev/zero /dev/null &
[1] 3077
[root@bogon ~]# nice -n -10 cat /dev/zero /dev/null &
[2] 3079
[root@bogon ~]# top
top - 16:33:15 up  5:24,  2 users,  load average: 0.51, 0.17, 0.06
Tasks: 291 total,   3 running, 288 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us, 31.1 sy,  0.0 ni, 63.5 id,  0.0 wa,  2.1 hi,  2.9 si,  0.0 st
MiB Mem :   1748.7 total,    176.2 free,    984.0 used,    588.5 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.    585.6 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    3077 root       0 -20  221096   1016    928 S   3.9   0.1   0:01.33 cat        
    3079 root      10 -10  221096   1020    932 S   1.6   0.1   0:00.52 cat
[root@bogon ~]# renice -n -15 3079
3079 (process ID) old priority -10, new priority -15
[root@bogon ~]# top
top - 16:34:35 up  5:26,  2 users,  load average: 0.90, 0.36, 0.14
Tasks: 291 total,   3 running, 288 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us, 16.4 sy,  0.0 ni, 80.7 id,  0.0 wa,  1.1 hi,  1.5 si,  0.0 st
MiB Mem :   1748.7 total,    176.7 free,    983.4 used,    588.5 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.    586.1 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   3004 root      20   0   19336   7284   4960 R  31.3   0.4   1:16.80 sshd
   3077 root       0 -20  221096   1016    928 S   2.0   0.1   0:04.36 cat
   3079 root       5 -15  221096   1020    932 S   1.0   0.1   0:02.38 cat 
[root@bogon ~]# killall cat /dev/zero /dev/null &
[3] 3084

PR与NI的差为20,PR最大为20,最小为0,

  • nice -n NI值 进程号 : 调整进程的优先级
  • renice -n NI值 进程号 : 调整正在运行中的进程优先级

服务管理

服务就是进程,进程不一定是服务

服务是具备一定功能的进程,但是有些进程并不具备服务的特征,所以服务一定是进程,但是进程不一定是服务。

服务也是进程,就意味着服务也享受着之前学习过的进程的概念。Linux里面的第一个进程,是整个系统的父进程。

在RHEL6版本之前,包括RHEL6,采用的第一个进程叫做init。第一个进程非常重要,因为第一个进程要负责后面所有其他进程的启动,后面其他进程能否启动成功取决于系统能不能正常运行。

init有问题,通过init进程启动的后续进程都是串行启动的,串行启动就意味着速度慢。

在RHEL7版本,采用第一个进程叫做systemd。该进程相比如init来说,采用并行方式启动后续进程,并行启动就意味着速度快。

systemd管理服务操作

systemd管理service

1、查看服务信息

[root@bogon ~]# systemctl status service

2、停止服务

[root@bogon ~]# systemctl stop service

3 、启动服务

[root@bogon ~]# systemctl start service

4、重新启动服务

[root@bogon ~]# systemctl restart service

5、开机自启

[root@bogon ~]# systemctl enable service

6、开机不自启

[root@bogon ~]# systemctl disable service

7、判断服务是否开启

[root@bogon ~]# systemctl is-active service
active
[root@bogon ~]# systemctl is-active service
inactive

8、判断开机自启是否开启

[root@bogon ~]# systemctl is-enabled service
enabled
[root@bogon ~]# systemctl is-enabled service
disabled

9、重新加载配置文件

[root@bogon ~]# systemctl daemon-reload 

systemd管理target(一点点)

target是由服务组成的一类启动目标,systemd可以设置启动目标,如果systemd指定了一个target作为启动目录,那么下次系统启动的时候就会启动target里面的所有服务。

multi-user.target就是字符界面的Linux系统

graphical.target就是图形界面的Linux系统

1、临时切换到字符界面

[root@bogon ~]# systemctl isolate multi-user.target 

2、临时切换到图形界面

[root@bogon ~]# systemctl isolate graphical.target 

3、查看下次开机加载那个target

[root@bogon ~]# systemctl get-default 

4、修改下次开机启动的target

[root@bogon ~]# systemctl set-default multi-user.target 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值