资讯专栏INFORMATION COLUMN

Linux进程管理

SillyMonkey / 2114人阅读

摘要:是由系统内核直接运行的进程还有另一种情况处理进程。参考资料作业控制是指控制当前正在运行的进程的行为。守护进程的启动方式独立启动独立运行的守护进程由脚本负责管理,脚本存放在目录下所有的系统服务都是独立运行的。

前言
只有光头才能变强

回顾前面:

看完这篇Linux基本的操作就会了

Linux用户和权限管理看了你就会用啦

这篇主要讲解在Linux下进程的管理

那么接下来就开始吧,如果文章有错误的地方请大家多多包涵,不吝在评论区指正哦~

声明:基于Centos6.9
一、Linux下的进程

每个用户均可同时运行多个程序。为了区分每一个运行的程序,Linux给每个进程都做了标识,称为进程号(process ID),每个进程的进程号是唯一的。

Linux 给每个进程都打上了运行者的标志,用户可以控制自己的进程:给自己的进程分配不同的优先级,也可以随时终止自己的进程。

进程从执行它的用户处继承UID、GID,从而决定对文件系统的存取和访问

Linux 不可能在一个 CPU 上同时处理多个任务(作业)请求,而是采用 “分时” 技术来处理这些任务请求。

使用PID区分不同的进程

系统启动后的第一个进程是init,它的PID是1。init是由系统内核直接运行的进程(还有另一种情况:coredump 处理进程)。

除了init之外,每个进程都有父进程(PPID标识)

每个进程还有四个与用户和组相关的识别号

实际用户识别号 (real user ID,RUID)

实际组识别号 (real group ID,RGID)

有效用户识别号 ( effective user ID,EUID)

有效组识别号 (effective group ID,EGID)

RUID和RGID的作用:识别正在运行此进程的用户和组

EUID和EGID的作用:确定一个进程对其访问的文件的权限

进程类型

交互进程

由一个Shell启动的进程。

交互进程既可以在前台运行,也可以在后台运行。

批处理进程

不与特定的终端相关联,提交到等待队列种顺序执行的进程。

守护进程(Daemon)

在Linux在启动时初始化,需要时运行于后台的进程。

进程的启动方式

手工方式:使用操作系统提供的用户接口

前台

后台 (&)

调度方式:按照预先指定的时间执行

at

batch

cron

前台进程组:

指一个程序控制着标准输入/输出,在程序运行时,shell 被暂时挂起,直到该程序运行结束后,才退回到 shell。在这个过程中,用户不能再执行其它程序

后台进程:

用户不必等待程序运行结束就可以执行其它程序。运行后台进程的方法是在命令行最后加上 “&”

进程和作业的区别:

进程:操作系统的概念,由操作系统负责管理

作业:shell程序的概念,由shell程序负责管理

一个操作系统可以启动多个shell程序,shell本身也是一个进程

一个作业里至少包含一个进程,也可以包含多个进程

作业分前台和后台运行之分

有了上面的知识点,我们就可以画出这么一张流程图:

1.1管理进程常用命令

使用ps命令查看进程状态信息

ps -ef

ps aux

ps命令参数说明:

ps命令输出说明:

还有其他几个常用命令:

nohup:忽略SIGHUP信号nohup 命令 [选项] [参数] [输出文件] &

用过SpringBoot打jar包部署到Linux下的同学对上面这个命令一定不会陌生啦~

杀死进程kill pid -9

free :查看内存使用状况

top :查看实时刷新的系统进程信息

进程调度的优先权nice命令:

进程运行后调整优先级:renice命令。

参考资料:https://www.cnblogs.com/lvyah...

作业控制是指控制当前正在运行的进程的行为。

暂时停止某个运行程序 使用Ctrl+z

列举作业号码和名称:jobs

在后台恢复运行:bg [%作业号码]

在前台恢复运行:fg [%作业号码]

发送信号:kill -[信号] pid

1.2进程练习题
以root账户登录,运行ps命令,选项分别用-a和-af;观察对比结果,并截图;运行ps命令,选项为-ef,观察结果;运行ps,选项为au,观察结果,并截图。

切换到jkXX账户,用长格式列出/usr/bin/passwd命令,观察命令的权限属性;用后台方式运行passwd命令;运行ps命令,选项为-ao,参数为user,pid,ruid,euid,tty,cmd,观察结果并截图

切换到peter账户,用后台执行命令ls -l /usr/bin | more &,观察结果;上述命令再次执行两遍,观察结果;执行ps命令,选项为au,观察有哪些进程在运行;执行命令jobs,查看有哪些作业在运行;通过fg命令把后台命令转移到前台,使之结束,观察剩余作业;直到作业全部结束。

切换到jason账户,用nice命令启动在后台启动vi编辑软件,优先级增加10,用ps命令,选项为-l观察vi进程的优先级;用nice命令启动在后台启动vi编辑软件,优先级减少10,观察结果,为什么不成功;切换到root账户,用nice命令启动在后台启动vi编辑软件,优先级减少10;

ps命令中显示TTY代表什么?

答:tty代表字符终端。

ps命令的输出结果,哪个进程的状态为运行状态?哪个进程为休眠状态?

答:ps au命令的进程是运行状态,用R表示;其余的都是休眠状态(经提醒,这部分不太严谨)。应该修改成: S 和 I 状态看作休眠,而 D、t、T 状态都是等待状态(但是 D 也可能是冻结状态)。

passwd命令的euid为多少,它在执行中应获得谁的权限?

答:euid为0,它在执行中应获得文件所有者root的权限。

如果用chmod命令把passwd命令的suid属性去掉,在普通账户下运行passwd命令,可以修改密码吗?为什么?

答:不可以,因为passwd命令要修改shadow文件,shadow文件是root用户的,普通账户运行passwd命令,没有获得root用户权限,无法修改shadow文件。

nice命令减少优先级的值,需要什么样的权限?

答:需要root用户权限

二、守护进程

始终在后台运行并响应合法请求的程序称为守护(Daemon)进程。守护进程不是由用户启动运行的,也不与终端关联

一个实际运行中的系统一般会有多个守护进程在运行,且各个系统中运行的守护进程都不尽相同。

除非程序异常中止或者人为终止,否则它们将一直运行下去直至系统关闭。

UNIX/Linux的守护进程在Windows系统中被称作“服务”。

守护进程的分类:

系统守护进程

计划性任务 daemon:如 atd、crond

系统日志 daemon:如 rsyslogd

打印假脱机 daemon:如 cupsd、lpd

网络参数设置 daemon:如 network

网络守护进程:

各种网络协议侦听 daemon

如:sshd、httpd、postfix、vsftpd

网络超级服务器(Supper Server)

如:xinetd 或 inetd

超级服务器的引入xinetd

对于系统所要提供的每一种网络服务,都必须运行一个监听某个端口连接发生的守护程序,这通常意味着系统资源的浪费。

为了避免系统资源浪费引入了“超级服务器”。超级服务器启动后同时监听它所管理的服务的所有端口

当有客户提出服务请求时

超级服务器会判断这是对哪一个服务的请求,然后再开启与此服务相应的守护进程

由超级服务器产生的某服务的进程处理客户的请求,当处理结束便终止此服务进程

超级服务器本身继续监听其他服务请求

经提示:

至于 xinetd 啊 chkconfig 啊那些,还有关于守护进程的信息,基本上都被 systemd 重新定义/实现了。现在 xinetd 基本上没有人用了。

守护进程的启动方式

独立启动

独立运行的守护进程由init脚本负责管理,脚本存放在/etc/rc.d/init.d/目录下

所有的系统服务都是独立运行的。如:crond、syslogd等

一些常用的网络守护进程是独立运行的。如:httpd等

瞬态启动

由网络超级服务器(xinetd)运行的守护进程,由xinetd管理的守护进程的配置文件存在/etc/xinetd.d/目录下

默认的xinetd的主配置文件是/etc/xinetd.conf

一些不常用的网络守护进程是由xinetd启动的,如:telnet、 tftp等

xinetd本身是独立运行的守护进程

2.1管理守护进程常用命令

chkconfig命令的功能

添加指定的新服务

清除指定的服务

显示由chkconfig管理的服务

改变服务的运行级别

检查服务的启动状态

chkconfig --list会显示出对应的运行级别:

0: 关机

1: 单用户

2: 无网络的多用户

3: 命令行模式

4: 未用

5: GUI(图形桌面 模式)

6 : 重启

ntsysv管理守护进程

使用service管理守护进程

service --status-all

service server-name status

service server-name start|stop|restart

2.2守护进程练习题
安装守护进程工具ntsysv,并运行它;通过ntsysv界面,取消crond的自动启动,通过命令chkconfig来检查crond自动运行是否被取消;通过chkconfig命令设置crond启动启动,通过ntsysv检查结果;观察结果,并截图

编辑xinetd的主配置文件,修改链接instances = 2,重新启动xinetd;用putty以telnet方式连接到linux,用pstree命令观察xinetd启动的telnet进程数量;继续开启telnet链接,直到连接超过限制

编辑系统服务文件services,修改telnet服务的端口为27,重启xinetd;用putty以telnet方式连接到linux,显示当前的网络链接;恢复telnet默认的服务端口,并检查;观察结果,并截图。

telnet服务端口可以改变吗?如果可以改变,连接telnet服务应注意什么问题?

答:telnet服务端口可以改变。连接telnet服务的时候,应该注意端口号修改为正在提供telnet服务的端口号。

修改telnet配置文件,需要xinetd服务重启吗?为什么?

答:需要重新启动xinetd服务,因为xinetd作为超级服务器,它负责管理telnet服务的启动,也要同时查看telnet的服务配置文件。当telnet服务配置文件修改的时候,xinetd服务需要知道配置文件的变化,重新启动会重新读取配置文件的内容,使之生效。

Telnet为什么可以看到脚本程序的执行结果?

答:telnet是一个远程的字符界面的网络工具,它实现了远程字符界面的标准输入和输出功能;脚本执行的结果是输出到标准输出设备,也就是字符界面的屏幕,telnet将标准输出通过网络传递到telnet客户端的屏幕上显示,因此它可以看到脚本程序执行的结果。

通过ntsysv命令和chkconfig命令打开守护进程启动运行的结果是否完全一样?有什么不同?

答:ntntsysv命令关闭守护进程,只是改变了当前用户运行级别的守护进程开关,具体来说,改变了3号运行级别命令行模式的守护进程开关。chkconfig命令默认改变3、4、5级别的全部开关,chkconfig还可以指定某个运行级别的守护进程开关。

三、安排自动化任务

调度任务的守护进程:

atd

crond

安排调度任务的几个命令:

at 安排作业在某一时刻执行一次

batch 安排作业在系统负载不重时执行一次

cron 安排周期性运行的作业

3.1atd守护进程

atd守护进程负责监控一次性任务的执行,atd守护进程的执行参数 /etc/sysconfig/atd

控制普通用户的使用

/etc/at.allow存在,仅列在其中的用户允许使用

/etc/at.allow 不存在,检查/etc/at.deny,没有列于其中的所有用户允许使用

若两个文件均不存在,仅允许root用户使用

空的/etc/at.deny文件,表示允许所有用户使用(默认值)

如何使用:

安装命令yum install at

atd的启动service atd start

atd服务的查看chkconfig --list | grep atd或者ps -aef | grep atd

at 命令格式及参数 at [-q 队列] [-f 文件名] 时间

3.2cron

crond守护进程负责监控周期性任务的执行

crond守护进程的执行参数配置文件/etc/sysconfig/crond

控制普通用户的使用

/etc/cron.allow存在,仅列在其中的用户允许使用

/etc/cron.allow 不存在,检查/etc/cron.deny,没有列于其中的所有用户允许使用

若两个文件均不存在,仅允许root用户使用

空的/etc/cron.deny文件,表示允许所有用户使用(默认值)

crond启动以后,每分钟唤醒一次,检测如下文件的变化并将其加载到内存

/etc/crontab:是crontab格式(man 5 crontab)的文件

/etc/cron.d/*:是crontab格式(man 5 crontab)的文件

/var/spool/cron/*:是crontab格式(man 5 crontab)的文件

/etc/anacrontab:是anacrontab格式(man 5 anacrontab)的文件

3.3安排自动化任务练习
安装at计划任务服务,并且启动它;在下午茶的时间,检查网卡信息;在两分钟之后,开启防火墙;2019年6月1日凌晨两点,服务器重启;明天晚上9点,关闭eth1;用命令检查正在等待的计划任务;用at -c检查正在等待任务的具体内容;删除其中一条任务,观察结果。观察结果,并截图

编辑一个文件myatXX(XX为学生的学号末两位),要求按顺序执行如下命令:返回用户主目录;查看用户账户名;查看当前系统运行的所有进程,并将记录保存到文件ps.log中;添加一个计划任务,要求下午5点执行文件中的命令;观察结果,并截图

用普通账户jsjXX登录,添加一个计划任务,明天中午关闭eth0;更改at命令的相关配置文件,禁止jsjXX执行at命令,试验证之

修改crontab文件,添加一个新的周期任务,要求如下:每间隔6个小时,把服务器正在监听的端口信息,保存到/root/net.txt文件中;每周五或者10,20,30日上午9:00到下午15:00,每个小时第10分钟,清除目录/tmp下的所有文件

添加一个脚本,要求:每月执行该任务,查找/home目录下30天没有修改的文件,并删除它;脚本名称为clean-home

登录jsj08 账务,用crontab  -e命令编写一个周期任务,要求每个2分钟按顺序执行:显示当前系统时间;显示账户名;显示当前账户的进程信息;以上命令的结果,全部以追加式方式保存到用户主目录下文件,文件名为myplanXX(XX为学生的学号末两位)。用crontab -l检查编写的任务

myatXX文件是否要修改权限,才能执行?

答:不需要。atd服务只是从myatXX文件中读取内容,真正执行的命令会存放在另外一个文件,我们用at -c命令可以看到这个真正执行文件内容。

脚本放在哪个目录下?脚本需要添加可执行属性吗?

答:脚本根据不同的周期放到不同的目录下,本题以月为周期执行,因此放入/etc/cron.monthly目录下。脚本需要添加可执行属性,因为这是真正可执行的脚本。

普通用户可以修改at服务的配置文件吗?

答:修改at配置文件需要root权限,普通用户不可以修改at的配置文件。

四、总结

本文主要是总结了Linux下操作进程和自动化任务知识~~~这两个知识点在Linux下也是很重要的,是学习Linux的基础~

继续完善上一次的思维导图

如果文章有错的地方欢迎指正,大家互相交流。习惯在微信看技术文章,想要获取更多的Java资源的同学,可以关注微信公众号:Java3y。为了大家方便,刚新建了一下qq群:742919422,大家也可以去交流交流。谢谢支持了!希望能多介绍给其他有需要的朋友

文章的目录导航

https://zhongfucheng.bitcron.com/post/shou-ji/wen-zhang-dao-hang

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/10782.html

相关文章

  • Linux”不等同于Linux内核:构建Linux系统的8个软件包

    摘要:发行版并不仅仅是内核。它是操作系统的一部分,并且通常被称为。内核是整个系统的核心。例如,和包含了文件管理器而则包含了文件管理器。例如,如果你在中运行下的文件管理器,它会显得不协调并要求你安装一系列的库,而且启动时它或许会后在台运行桌面进程。 showImg(http://segmentfault.com/img/bVbMtv); Linux发行版并不仅仅是Linux内核。所有的Linu...

    wind3110991 评论0 收藏0
  • Linux”不等同于Linux内核:构建Linux系统的8个软件包

    摘要:发行版并不仅仅是内核。它是操作系统的一部分,并且通常被称为。内核是整个系统的核心。例如,和包含了文件管理器而则包含了文件管理器。例如,如果你在中运行下的文件管理器,它会显得不协调并要求你安装一系列的库,而且启动时它或许会后在台运行桌面进程。 showImg(http://segmentfault.com/img/bVbMtv); Linux发行版并不仅仅是Linux内核。所有的Linux...

    罗志环 评论0 收藏0
  • linux进程管理

    摘要:进程的管理我们不仅仅要查看进程,而且要对进程进行管理,那么进程之间是如何相互管理的呢,细想下来,只要涉及到管理,肯定要发出指令,对程序的管理也不例外。正常结束一个进程。 linux进程管理 毫无疑问进程管理是很重要的,当我们的操作系统很忙碌,运行的进程很多,但是可能有好几个进程是没有用的,那么我们是不是要找出这样的进程然后结束它。如果有很多个没用的进程一直在内存中,导致内存使用量过大,...

    channg 评论0 收藏0
  • 精选 82 道 Linux 系统管理员笔试填空题(附答案)

    摘要:静态路由设定后,若网络拓扑结构发生变化,需由系统管理员修改路由的设置。系统管理员的职责是进行系统资源管理系统性能管理设备管理安全管理和系统性能监测。目录用来存放系统管理员使用的管理程序。本文内容来源于网络,是个不错的知识总结,内容涵盖磁盘、文件系统及网络管理常用命令。花十分钟浏览一下即可获取全方位Linux基础知识。说不定什么时候就用上了呢? 注意粗体字为答案。 在Linux系统中...

    LiuRhoRamen 评论0 收藏0
  • Linux”不等同于Linux内核:构建Linux系统的8个软件包

    摘要:它是操作系统的一部分,并且通常被称为。内核是整个系统的核心。例如,和包含了文件管理器而则包含了文件管理器。例如,如果你在中运行下的文件管理器,它会显得不协调并要求你安装一系列的库,而且启动时它或许会后在台运行桌面进程。showImg(http://segmentfault.com/img/bVbMtv src=https://static.segmentfault.com/v-5cc2cd8...

    lastSeries 评论0 收藏0

发表评论

0条评论

SillyMonkey

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<