Linux进程管理(linux进程管理实验报告)
nanshan 2025-03-19 00:35 14 浏览 0 评论
这篇主要讲解在Linux下进程的管理。
那么接下来就开始吧,如果文章有错误的地方请大家多多包涵,不吝在评论区指正哦~
声明:基于Centos6.9
一、Linux下的进程
每个用户均可同时运行多个程序。为了区分每一个运行的程序,Linux给每个进程都做了标识,称为进程号(process ID),每个进程的进程号是唯一的。
Linux 给每个进程都打上了运行者的标志,用户可以控制自己的进程:给自己的进程分配不同的优先级,也可以随时终止自己的进程。
- 进程从执行它的用户处继承UID、GID,从而决定对文件系统的存取和访问。
Linux 不可能在一个 CPU 上同时处理多个任务(作业)请求,而是采用 “分时” 技术来处理这些任务请求。
使用PID区分不同的进程
- 系统启动后的第一个进程是init,它的PID是1。init是唯一一个由系统内核直接运行的进程。
- 除了init之外,每个进程都有父进程(PPID标识)
- 每个进程还有四个与用户和组相关的识别号
- 实际用户识别号 (real user ID,RUID)
- 实际组识别号 (real group ID,RGID)
- 有效用户识别号 (effect user ID,EUID)
- 有效组识别号 (effect 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 命令 [选项] [参数] [输出文件] &
- 用过SpringBoot打jar包部署到Linux下的同学对上面这个命令一定不会陌生啦~
- 杀死进程:kill pid -9
- free:查看内存使用状况
- top :查看实时刷新的系统进程信息
- 进程调度的优先权nice命令:
- 进程运行后调整优先级:renice命令。
作业控制是指控制当前正在运行的进程的行为,也被称为进程控制。
- 暂时停止某个运行程序 使用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表示;其余的都是休眠状态。
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:
- 对于系统所要提供的每一种网络服务,都必须运行一个监听某个端口连接发生的守护程序,这通常意味着系统资源的浪费。
- 为了避免系统资源浪费引入了“超级服务器”。超级服务器启动后同时监听它所管理的服务的所有端口
- 当有客户提出服务请求时
- 超级服务器会判断这是对哪一个服务的请求,然后再开启与此服务相应的守护进程
- 由超级服务器产生的某服务的进程处理客户的请求,当处理结束便终止此服务进程
- 超级服务器本身继续监听其他服务请求
守护进程的启动方式:
- 独立启动
- 独立运行的守护进程由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的基础~
另外还有一些关于c++ Linux后台服务器开发的一些知识点分享:Linux,Nginx,MySQL,Redis,P2P,K8S,Docker,TCP/IP,协程,DPDK,webrtc,音视频等等视频。
喜欢的朋友可以后台私信【1】获取学习视频
相关推荐
- 轻量级分析利器再升级:解读 DuckDB 1.3.0 新特性
-
DuckDB团队近日正式发布了最新版本——DuckDB1.3.0,代号“Ossivalis”。此次版本以金眼鸭的远古祖先BucephalaOssivalis命名,象征项目在演化和成长过...
- C++跨平台编译的终极奥义:用Docker把环境差异按在地上摩擦
-
"代码在本地跑得飞起,一上服务器就coredump?"——每个C++程序员都经历过的《编译器的复仇》事件!大家好,我是Henry,废话少说,今天来简单谈一下跨平台编译的那些事儿,...
- 全网最全-Version Script以及__asm__((".symver xxx"))使用总结
-
首先提醒一点,一切的前提建立在你的名字必须要mangling,不然无论你写的versionscript还是__asm__都不会起任何效果VersionScript简单用法:这是一个典型例子,这个例...
- Ubuntu 25.04 Beta发布:Linux 6.14内核
-
IT之家3月28日消息,Canonical昨日(3月27日)放出了Beta版Ubuntu25.04系统镜像,代号“PluckyPuffin”,稳定版预估将于2025年...
- 不同平台CRT的区别?什么是UCRT?如何看libc源代码?
-
若文章对您有帮助,欢迎关注程序员小迷。助您在编程路上越走越好!CRT运行时库C标准规定例如输入输出函数、字符串函数、内存操作等接口,一般采用C运行时库实现。微软的CRT微软有两套CRT,早期的MS...
- 信创力量,中兴绽放——中兴新支点桌面操作系统安装与使用全攻略
-
原文链接:「链接」Hello,大家好啊,今天给大家带来一篇中兴新支点桌面操作系统安装使用的文章,欢迎大家分享点赞,点个在看和关注吧!中兴新支点桌面操作系统是一款基于Linux内核、面向政企和信创环...
- Linux下安装常用软件都有哪些?做了一个汇总列表,你看还缺啥?
-
1.安装列表MySQL5.7.11Java1.8ApacheMaven3.6+tomcat8.5gitRedisNginxpythondocker2.安装mysql1.拷贝mysql安装文件到...
- 一篇文章解决Linux系统安全问题排查,另配实操环境
-
实操地址:https://www.skillup.host/1/linux/safe/command.md#Linux安全检查排查指南##1.系统账户安全检查###1.1检查异常账户``...
- 程序员必备的学习笔记《TCP/IP详解(一)》
-
为什么会有TCP/IP协议在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样...
- 《Linux常用命令》(linux的常用命令总结)
-
一、文件与目录操作1.目录导航pwd:显示当前工作目录路径示例:pwd关键词:当前路径、工作目录cd:切换目录示例:cd/home/user#切换到绝对路径cd..#...
- Kubernetes 教程之跟着官方文档从零搭建 K8S
-
前言本文将带领读者一起,参照者Kubernetes官方文档,对其安装部署进行讲解.Kubernetes更新迭代很快,书上、网上等教程可能并不能适用于新版本,但官方文档能.阅读这篇文章你...
- 电脑网卡坏了怎么修复(电脑网卡坏了怎么修复win7系统)
-
当电脑网卡出现故障时,无论是有线网络还是无线网络,都可能无法正常连接。下面从软件、硬件等方面,分步骤为你介绍排查与修复的解决方案。一、初步排查:锁定问题源头检查网络环境将手机、平板等其他设备连接至同一...
- 如何查询电脑/手机的物理地址(如何找手机的物理地址)
-
一、要查询电脑的物理地址(也称为MAC地址),可以按照以下步骤进行操作:1.打开命令提示符(Windows)或终端(Mac):-在Windows上,点击“开始”按钮,搜索“命令提示符”,然后点击打...
- IPv4 无网络访问权限全流程解决方案
-
当设备出现IPv4无网络访问权限问题时,多由网络配置错误、连接故障或服务异常导致。以下提供系统化的排查步骤与解决方案,帮助用户快速定位并修复问题。一、基础故障快速检查1.物理连接确认有线网络:检...
- Python教程(十九):文件操作(python操作文件夹)
-
昨天,我们学习了列表推导式,掌握了Python中最优雅的数据处理方式。今天,我们将学习文件操作—Python中读写文件的基础技能。文件操作是编程中的核心技能,无论是读取配置文件、保存用户数据,还是...
你 发表评论:
欢迎- 一周热门
-
-
UOS服务器操作系统防火墙设置(uos20关闭防火墙)
-
极空间如何无损移机,新Z4 Pro又有哪些升级?极空间Z4 Pro深度体验
-
手机如何设置与显示准确时间的详细指南
-
NAS:DS video/DS file/DS photo等群晖移动端APP远程访问的教程
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
如何修复用户配置文件服务在 WINDOWS 上登录失败的问题
-
一加手机与电脑互传文件的便捷方法FileDash
-
日本海上自卫队的军衔制度(日本海上自卫队的军衔制度是什么)
-
10个免费文件中转服务站,分享文件简单方便,你知道几个?
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
- 最近发表
-
- 轻量级分析利器再升级:解读 DuckDB 1.3.0 新特性
- C++跨平台编译的终极奥义:用Docker把环境差异按在地上摩擦
- 全网最全-Version Script以及__asm__((".symver xxx"))使用总结
- Ubuntu 25.04 Beta发布:Linux 6.14内核
- 不同平台CRT的区别?什么是UCRT?如何看libc源代码?
- 信创力量,中兴绽放——中兴新支点桌面操作系统安装与使用全攻略
- Linux下安装常用软件都有哪些?做了一个汇总列表,你看还缺啥?
- 一篇文章解决Linux系统安全问题排查,另配实操环境
- 程序员必备的学习笔记《TCP/IP详解(一)》
- 《Linux常用命令》(linux的常用命令总结)
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)