340 likes | 502 Views
进程管理. 1 、进程概述 2 、进程管理 3 、守护进程 4 、安排周期性任务. 本章学习目标. 理解进程的相关概念 掌握进程管理命令的使用 理解并管理守护进程 掌握周期性任务的设置方法. 1 、进程概述. 1 、进程( Process ) 是一个程序在其自身的虚拟地址空间中的一次执行活动。进程与程序是有区别的,进程不是程序,虽然它由程序产生。 程序只是一个静态的指令集合 ,不占系统的运行资源;而 进程是 一个随时都可能发生变化的、 动态的、使用系统运行资源的 。而且一个程序可以启动多个进程。. 1 、进程概述. 2 、进程的类型
E N D
进程管理 1、进程概述 2、进程管理 3、守护进程 4、安排周期性任务
本章学习目标 • 理解进程的相关概念 • 掌握进程管理命令的使用 • 理解并管理守护进程 • 掌握周期性任务的设置方法
1、进程概述 1、进程(Process) • 是一个程序在其自身的虚拟地址空间中的一次执行活动。进程与程序是有区别的,进程不是程序,虽然它由程序产生。程序只是一个静态的指令集合,不占系统的运行资源;而进程是一个随时都可能发生变化的、动态的、使用系统运行资源的。而且一个程序可以启动多个进程。
1、进程概述 2、进程的类型 • 交互进程:由一个Shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。 • 批处理进程:不与特定的终端相关联,提交到等待队列种顺序执行的进程。 • 守护进程:在Linux在启动时初始化,需要时运行于后台的进程。
1、进程概述 3、进程的启动方式 • 手工启动 • 前台:如用户键入一个命令“ls –l” • 后台:该进程甚为耗时,且用户也不急着需要结果的时候可采用后台启动此进程。命令后使用&符号。 • 调度启动 • cron • at:在指定时刻执行指定的命令序列
2、进程管理 进程查看: • ps命令格式:# ps [选项] • 常用选项 a:显示所有进程 e:在命令后显示环境变量 u:显示用户名和启动时间等信息 x:显示没有控制终端的进程 f:显示进程树 w:宽行输出 -e:显示所有进程 -f:显示全部
2、进程管理 • 操作举例 1)显示出当前用户在shell下所运行的进程 # ps 2)只查看用户osmond的进程 # ps -u osmond 3)列出系统中正在运行的所有进程的详细信息 # ps -aux 4)显示系统进程树 # ps -auxf
2、进程管理 常用进程信号: • HUP/SIGHUP/1:从终端上发出的结束信号,发送给守护进程可使其重新读取配置文件 • INT/SIGINT/2:从键盘上发出的中断信号(ctrl+c) • QUT/SIGQUT/3:从键盘上发出的退出信号(ctrl+\) • KILL/SIGKILL/9:结束接受信号的进程(强行杀死进程) • TERM/SIGTERM/15:kill命令默认的终止信号 • STOP/SIGSTOP/19:从键盘来执行的信号(ctrl+d)
2、进程管理 杀死系统中的进程 : 1)kill命令 • 功能:向指定PID的进程发送进程信号 • 格式:kill [-signal] <PID> • 举例: • 杀死PID为1621的进程 $ kill 1621 • 强行杀死PID为1621的进程 $ kill -9 1621
2、进程管理 2)killall命令 • 功能:向指定进程名的进程发送进程信号 • 格式:killall [-signal] <进程名> • 举例: • 杀死进程名为cat的所有进程 $ killall cat • 强行杀死进程名为named的进程 # killall -9 named • 使xinetd守护进程重新读取其配置文件 # killall -1 xinetd
2、进程管理 nohup命令: • 功能:使进程在退出登录后仍旧继续执行。 • 格式:$ nohup <程序名> • 结果:如果程序program有结果输出,输出结果将会被保存到当前目录下的一个文件名为 nohup.out的文件中,如果用户在当前目录没有写的权限, 则结果将会被保存到用户主目录下的nohup.out文件中。 • 举例: # nohup mcal & nohup: appending output to `nohup.out'
2、进程管理 作业控制: 1)作业控制 • 是指控制当前正在运行的进程的行为,也称为进程控制。 • 作业控制是Shell的一个特性,使用户能在多个独立进程间进行切换。
2、进程管理 2)实施作业控制的常用命令和快捷键 • cmd &:命令后的&符号表示将该命令放到后台运行,以免霸占终端 • <Ctrl+d>:终止一个正在前台运行的进程(含有正常含义) • <Ctrl+c>:终止一个正在前台运行的进程(含有强行含义) • <Ctrl+z>:挂起一个正在前台运行的进程 • jobs:显示后台作业和被挂起的进程 • bg:在后台恢复运行一个被挂起的进程 • fg:在前台恢复运行一个被挂起的进程
3、守护进程 • 守护进程(Daemon)是在计算机启动时就被运行的,并在系统中持续运行的进程, 它等待着随时为客户提供自身负责的服务。 • 守护进程的工作就是打开一个端口,并且等待(Listen)进入的连接。 如果客户提请了一个连接,守护进程就创建(fork)子进程来响应此连接, 而父进程继续监听更多的服务请求。正因为如此,每个守护进程都可以处理多个客户服务请求。 • 查看系统当前运行的守护进程:pstree
3、守护进程 守护进程的运行方式: • 独立运行的守护进程 • 独立运行的守护进程由init脚本负责管理 • 独立运行的守护进程的脚本存放在/etc/rc.d/init.d/目录下 • 所有的系统服务都是独立运行的。如:crond、syslogd、xinetd等 • 由xinetd运行的守护进程 • 由xinetd管理的守护进程的配置文件存放在/etc/xinetd.d/目录下 • 默认的xinetd的主配置文件是/etc/xinetd.conf • xinetd本身是独立运行的守护进程
3、守护进程 守护进程的分类: • 系统守护进程:如atd、crond、lpd、syslogd、login等。 • 网络守护进程:如sshd、httpd、sendmail、xinetd等。
3、守护进程 xinetd的配置文件: • Red Hat 中xinetd 的配置文件 主配置文件:/etc/xinetd.conf • 每一个由xinetd启动的服务在目录/etc/xinetd.d/下都有一个以服务名称命名的配置文件 • 在主配置文件/etc/xinetd.conf中将/etc/xinetd.d目录下的所有文件的内容使用 includedir /etc/xinetd.d语句包含进来。
3、守护进程 • xinetd的配置选项: • disable:xinetd是否监控此服务 • server:指定由xinetd监控的服务器路径 • server_args:指定由xinetd监控的服务器的运行参数 • wait:是否为该服务提供多线程功能 • user:指定执行本守护进程的用户 • only_from:只允许指定的主机访问 • no_access:指定不能访问的主机 • per_source:每个客户机的最大连接数 • instances:服务器总共支持的最高连接数 • access_times:指定允许访问本守护进程的时间
3、守护进程 使用GUI工具管理守护进程: • system-config-services • “系统”→“管理”→“服务器设置”→“服务”
3、守护进程 使用TUI工具管理守护进程: • ntsysv是一个用于管理自动运行的守护进程的文本用户界面工具
3、守护进程 使用CLI工具(chkconfig)管理守护进程: • 功能 • 添加指定的新服务 • 清除指定的服务 • 显示由chkconfig管理的服务 • 改变服务的运行级别 • 检查指定服务的启动状态
3、守护进程 • 格式 • # chkconfig --list [server-name] • # chkconfig --add server-name • # chkconfig --del server-name • # chkconfig [--level levels] server-name <on|off|reset>
3、守护进程 • 说明 • server-name:是由chkconfig命令管理的服务的名字。 • --list:显示由chkconfig管理的所有服务。 • --level levels:指定某服务要在哪个运行级别中开启或关闭,levels的范围在0-6之间。 • --add:添加由chkconfig进行管理的指定服务。 • --del:删除由chkconfig进行管理的指定服务。 • on|off:在指定的运行级别,开启或关闭服务。不指定运行级别时,默认的运行级别是3、4、5。 • reset:在指定的运行级别,重置该服务,使其状态返回到操作系统启动时的默认状态。
3、守护进程 • 举例 • 查看指定的服务在所有运行级别的运行状态。 # chkconfig --list sendmail • 显示由chkconfig管理的所有服务。 # chkconfig --list • 添加一个由chkconfig管理的服务。 # chkconfig --add httpd • 更改指定服务在指定运行级别的运行状态。 # chkconfig --level 35 httpd on # chkconfig httpd on
3、守护进程 使用CLI工具(service)管理守护进程: • 功能 • 启动或终止守护进程。 • 执行后立即生效。 • 格式 • # service server-name start/stop/restart • # service server-name status
3、守护进程 • 举例 • 终止vsftpd # service vsftpd stop • 启动httpd # service httpd start • 重新启动xinetd # service xinetd restart • 查看named的运行状态 # service named status
4、安排周期性任务 • cron守护进程功能 • 安排每小时、每天、每月或每周都要定期执行的进程任务。 • cron的运行机制 • cron进程搜索crontab文件并载入内存 (crontab文件即/etc/crontab文件和/var/spool/cron/目录下以用户名命名的文件)。 • cron进程启动以后,它将首先检查是否有用户设置了crontab文件, 如果没有就转入“休眠”状态,释放系统资源。 • cron进程每分钟醒来一次,查看crontab文件决定当前是否有需要执行的命令。 命令执行结束后,任何输出都将作为邮件发送给crontab的所有者。
4、安排周期性任务 使用crontab命令安排自动运行的进程任务: • 功能:使用crontab命令装载cron进程所需要的crontab文件。 • 格式: • 格式1:crontab [-u user] [-l|-r|-e] • 格式2:crontab [-u user] filename • 其中: • -l:在标准输出上显示当前的crontab任务。 • -r:删除当前的crontab任务。 • -e:使用环境变量指定的编辑器编辑crontab文件。当结束编辑离开时,编辑后的文件将自动安装。 • filename:是一个crontab文件的来源文件
4、安排周期性任务 crontab文件的来源文件: • crontab文件的来源文件存在的形式 • 一个符合语法规则的纯文本文件,使用第2种格式的crontab命令装载 • 使用第2种格式的crontab命令时,它是一个文本编辑器(如vi)的临时文件,编辑结束自动装载 • crontab文件的来源文件的格式 每一行格式为: minutehourday-of-month month-of-year day-of-week[username]commands
4、安排周期性任务 • 其中: • minute:一小时中的哪一分钟(0~59) • hour:一天中的哪个小时(0~23) • day-of-month:一月中的哪一天(1~31) • month-of-year:一年中的哪一月(1~12) • day-of-week:一周中的哪一天(0~6) • username:以指定的用户身份执行commands • commands:执行的命令(可以是多行命令或者是脚本调用) • 五个时间字段的语法说明 • 不能为空,可以使用统配符*表示任何时间。 • 可以指定多个值,它们之间用逗号间隔。例如:1,3,7。 • 可以指定时间段,用减号间隔。例如:0-6。 • 可以用/n表示步长。例如:8-18/2表示时间序列8,10,12,14,16,18。
4、安排周期性任务 • 举例 • 在每周一,三,五的下午3:00系统进入维护状态,重新启动系统。 00 15 * * 1,3,5 shutdown -r +5 • 每小时的10分,40分执行用户目录下的innd/bbslin这个指令: 10,40 * * * * innd/bbslink • 每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha" 20 0-23/2 * * * echo "haha“ • 假若你的朋友kiki生日是 5 月 2 日,你想要在 5 月 1 日的 23:59 发封信给他,信的内容写在 /home/dmtsai/lover.txt 內了,该如何操作? 59 23 1 5 * mail kiki < /home/dmtsai/lover.txt
4、安排周期性任务 • Red Hat 还为超级用户提供了一种方便的自动安排进程任务的方法。 • 涉及的文件和目录 • /etc/crontab • /etc/cron.daily/ • /etc/cron.monthly/ • /etc/cron.weekly/ • /etc/cron.hourly/ • 超级用户可以在/etc/cron.*目录下建立脚本文件来安排cron任务, 且在脚本中只需写要安排执行的命令。 • 两个控制文件 • 允许表:/etc/cron.allow • 拒绝表:/etc/cron.deny
作业 1、什么是进程?它与程序有何关系? 2、如何查看进程?如何删除进程? 3、什么是守护进程?简述守护进程的运行方式和分类? 4、什么是cron任务?简述crontab文件各个字段的含义?执行 crontab -e 之后,如果输入以下这行,代表什么意思?* 15 * * 1-5 /usr/local/bin/tea_time.sh