Linux进程管理

4、进程管理

概述

进程管理是操作系统中一项非常重要的功能,因为进程是运行中的程序,而操作系统本身就是通过进程来完成各种任务的。一个进程会占用四类资源,包括cpu、内存、网络和磁盘资源,而且至少会占用cpu和内存资源。

服务就是进程,但是有些进程并不是服务,因为服务必须具备一定的功能。进程是运行中的程序,而服务则是具备某种特定功能的进程。

在Linux中,第一个进程是整个系统的父进程。在RHEL6及之前的版本中,第一个进程叫做init,负责启动后续进程,nit有问题,通过init进程启动的后续进程,都是串行启动的,串行启动的进程意味着速度较慢;而在RHEL7及之后的版本中,第一个进程叫做systemd,相比init,systemd采用并行启动方式,启动速度更快。

常用操作:

查看进程:ps,pstree,w

杀进程: pkill

作业:jobs,bg,fg

服务管理:systemctl

进程优先级:nice,renice

常用命令

ps命令

进程管理的作用非常广泛,其中最常用的命令是ps命令。通过ps命令,我们可以查看系统中所有正在运行的进程。其中,最常用的命令是ps aux命令,它可以显示出所有进程的详细信息,包括进程的PID、CPU使用率、内存使用率等等。

例如:ps aux | grep weblogic

pkill命令

另外一个常用的进程管理命令是pkill命令。pkill命令常用来剔除某个用户创建的所有进程,可以通过指定-T选项来指定某个终端,

例如:比如pkill -t pts/0命令可以剔除由pts/0终端创建的所有进程。

pstree命令

pstree命令可以用来查看进程树之间的关系,即哪个进程是父进程,哪个是子进程,可以清晰地看出是谁创建了谁。

w命令

w命令可以显示出当前登入系统的用户信息,包括用户名、终端、登录时间、CPU使用率等等。

systemctl命令

sytemd管理服务操作,基本上较新的linux发型版都支持systemd管理网络服务
systemd管理的内容不仅仅有service,systemd管理的单位是unit,service只是unit中的一种

systemctl 管理unit

systemctl是用来管理systemd服务的命令,可通过以下命令查看所有systemd管理的unit:

systemctl list-units

另外,以下命令可用于查看所有管理文件的状态:

systemctl list-unit-files

要查看服务的状态,可使用以下命令:

systemctl status [service name]

要停止、启动或重启服务,可使用以下命令:

systemctl stop [service name]
systemctl start [service name]
systemctl restart [service name]

要关闭或开启启动自启动,可使用以下命令:

systemctl disable [service name]
systemctl enable [service name]

要查看服务状态是否为启动状态,可使用以下命令:

systemctl is-active [service name]

要查看服务是否开机自启动,可使用以下命令:

systemctl is-enable [service name]

为了使用自动补全,可安装bash-completion,yum -y install bash-completion然后重启终端后生效。

systemd管理target

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

我们需要了解的target 有两个:multi-user.targetgraphical.target

multi-user.target 字符界面的linux系统

systemctl isolate multi-user.target 将图形界面临时切换到字符界面

如果你的系统安装了图形界面,你切换到字符界面,ctl + alt +F1~F6都是字符界面

graphical.target 图形界面的linux系统

systemctl isolate grahpical.target 临时切换到图形界面

systemctl get-default 获取系统默认的启动的target

systemctl set-default 设置系统默认启动的target

systemctl set-default multi-user.target

systemctl daemon-reload 修改完service文件后,一定要重新加载才能生生效

jobs命令

关于作业(jobs)调度的说明:

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

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

后台进程则不会影响当前 shell 运行其他进程。有些命令并不可以作为后台命令运行,例如 top 命令。

如何判断一个进程到底应不应该放在后台运行?
1、运行时间较长,用户不想再前台等待,该进程可以后台运行结束
2、服务进程,用户想让其永远处于运行状态

将一个进程放到后台可以使用 & 符号,例如 cat &。使用 jobs 命令可以查看本shell上后台运行的作业,使用 ctrl + z 可以将当前前台进程放到后台,使用 bg 命令可以将后台进程转为前台进程,使用 kill %1 可以通过作业标号删除进程。

注意事项:

当前台进程运行时,可以使用ctrl +c 停止该进程,也可以使用ctrl+z将该进程放到后台,当一个进程由前台通过ctrl+z到后台运行时,会变为stop状态。

示例:

cp testfile testfile2 &

bg命令

ctrl + z 将作业后台运行并停止

bg %1 bg通过job id 将作业放在后台运行,变为运行状态

fg命令

fg %1 fg通过job id 将作业放在前台运行

lscpu命令

查看cpu情况

nice命令

要在运行进程时指定优先级,可以使用命令:

nice -n <priority> <command>

其中,为优先级,取值范围为-20到19,数值越小表示优先级越高。例如,要将一个进程的优先级设置为5,可以使用命令:

nice -n 5 <command>

renice命令

要调整一个正在运行的进程的优先级,可以使用命令:

renice -n <priority> <pid>

其中,为新的优先级,为进程的PID。例如,要将PID为17443的进程的优先级设置为-30,可以使用命令:

renice -n -30 17443

注意,nice值越小,权限越高。同时,PR减去NI始终等于20,NI越大,PR越大。

在使用虚拟机批量部署时,可以通过设置nice值让某台机器的优先级高,从而先完成安装。

要使CPU占用100%,可以使用以下命令:

cat /dev/zero >> /dev/null &

要运行四个这样的进程可以执行命令:

cat /dev/zero >> /dev/null & cat /dev/zero >> /dev/null & cat /dev/zero >> /dev/null & cat /dev/zero >> /dev/null &

要查看CPU占用情况,可以使用top命令。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值