第6章系统高级管理能力CAPACITY 要求了解什么是Linux进程,学会查看和管理Linux进程。
理解systemd的概念和体系,掌握使用systemd管控系统和服务的用法。
了解进程的调度启动方法,学会使用Ubuntu自动化任务工具。
熟悉Linux系统日志和systemd日志的配置和使用。
内容导航CONTENTSLinux进程管理使用systemd管控系统和服务进程的调度启动——自动化任务配置系统日志管理Linux进程概述•进程概念•进程由程序产生,是动态的,是一个运行着的、要占用系统运行资源的程序。
•系统给每一个进程都分配了一个唯一的进程标识符(进程号,简称PID)。
•进程分类•交互进程:在Shell下通过执行程序所产生的进程,可在前台或后台运行。
•批处理进程:一个进程序列。
•守护进程:又称监控进程,是指那些在后台运行,并且没有控制终端的进程,通常可以随着操作系统的启动而运行,也可将其称为服务。
查看进程•进程概念•PID:进程号(Process ID),用于唯一标识进程。
•PPID:父进程号(Parent PID),创建某进程的上一个进程的进程号。
•USER:启动某个进程的用户ID和该用户所属组的ID。
•STAT:进程状态,颐和进程可能处于多种状态,如运行、等待、停止、睡眠、僵死等。
•PRIORITY:进程的优先级。
•源占用:包括CPU、内存等资源的占用信息。
查看进程•ps命令•ps命令是最基本的进程查看命令,可确定有哪些进程正在运行、进程的状态、进程是否结束、进程是否僵死、哪些进程占用了过多的资源等等。
•ps命令最常用的还是监控后台进程的工作情况。
•最常用的是使用aux选项组合。
•top命令•top命令用于动态显示系统进程信息,可以每隔一短时间刷新当前状态,还提供一组交互式命令用于进程的监控。
Linux进程管理•启动进程•手动启动:在Shell命令行下输入要执行的程序来启动一个进程。
其启动方式又分为前台启动和后台启动,默认为前台启动。
若在要执行的命令后面跟随一个符号“&”,则为后台启动。
•调度启动:事先设置好程序要运行的时间,当到了预设的时间后,系统自动启动程序。
•进程的挂起及恢复•在运行进程过程中使用<Ctrl>+<Z>组合键可挂起当前的前台作业,将进程转到后台。
•恢复进程执行有两种选择,一种是用fg命令将挂起的作业放回到前台执行;另一种是用bg命令将挂起的作业放到后台执行Linux进程管理•结束进程的运行•使用组合键<Ctrl>+<C>中断前台进程。
•使用kill命令结束后台进程:kill [-s,--信号|-p] [-a] 进程号...•管理进程的优先级•进程优先级可以用nice值表示,范围一般为-20~19,-20为最高优先级,19为最低优先级,系统进程默认的优先级值为0。
•命令nice用于设置进程的优先级:nice [-n] [命令 [参数] ... ]•命令renice用于调整进程的优先级:renice [优先级] [PID] [进程组] [用户名称或ID]第6章 系统高级管理9 内容导航CONTENTSLinux进程管理使用systemd管控系统和服务进程的调度启动——自动化任务配置系统日志管理10第6章 系统高级管理6.2 使用systemd 管控系统和服务systemd 与系统初始化•SysVinit初始化方式•基于运行级别(Runlevel)。
•使用/etc/inittab文件配置文件。
•优点p sysVinit初始化方式原理简单,易于理解。
p 可以依靠Shell脚本控制服务启动,服务脚本编写比较容易。
•不足p sysVinit启动是线性、顺序的,启动过程比较慢。
systemd与系统初始化•Upstart初始化方式•并行启动服务的机制。
•systemd系统初始化使用systemd取代init,作为系统第一个进程。
•systemd不通过init脚本来启动服务,而是采用一种并行启动服务的机制。
•特点p所有服务和任务都是由事件驱动的,Upstart是并行的。
p可充分利用计算机多核的特点,大大减少启动所需的时间,提高系统启动速度。
p Ubuntu从6.10版开始支持Upstart方式,同时也使用SysVinit。
p UpStart主要实现了服务的即插即用。
systemd与系统初始化•systemd初始化方式•并行启动服务的机制p systemd系统初始化使用systemd取代init,作为系统第一个进程。
p systemd不通过init脚本来启动服务,而是采用一种并行启动服务的机制。
•特点p systemd使用单元文件替换之前的初始化脚本。
p systemd使用启动目标(Target)替代运行级别。
p systemd使用类似缓冲池的办法解决服务之间的依赖性。
p提高了并行启动能力,极大地缩短了系统启动时间。
p systemd与sysVinit兼容,支持并行化任务,按需启动守护进程。
p Ubuntu从15.04版开始支持systemd。
systemd 的主要概念和术语•核心概念:单元(unit)单元类型配置文件扩展名说明service (服务).service定义系统服务。
这是最常用的一类,与早期Linux 版本/etc/init.d/目录下的服务脚本的作用相同device (设备).device 定义内核识别的设备。
每一个使用udev 规则标记的设备都会在systemd 中作为一个设备单元出现mount (挂载).mount 定义文件系统挂载点automount (自动挂载).automount用于文件系统自动挂载设备systemd的主要概念和术语•核心概念:单元(unit)单元类型配置文件扩展名说明socket(套接字).socket定义系统和互联网中的一个套接字,标识进程间通信用到的socket文件swap(交换空间).swap标识管理用于交换空间的设备path(路径).path定义文件系统中的文件或目录swap(交换空间).swap标识管理用于交换空间的设备timer(定时器).timer用来定时触发用户定义的操作,以取代atd、crond等传统的定时服务target(目标).target用于对其他单元进行逻辑分组,主要用于模拟实现运行级别的概念snapshot(快照).snapshot快照是一组配置单元,保存了系统当前的运行状态systemd的主要概念和术语•依赖关系•在单元文件中使用关键字来描述单元之间的依赖关系。
•systemd事务•systemd能保证事务完整性,旨在保证多个依赖的单元之间没有循环引用。
•systemd将单元之间的依赖关系分为两种:required(强依赖)和wants(弱依赖)。
systemd 的主要概念和术语•启动目标(Target)和运行级别(Runlevel)传统运行级别systemd 目标说明runlevel0.target , poweroff.target 关闭系统。
不要将默认目标设置为此目标1, s, singlerunlevel1.target , rescue.target 单用户(Single )模式。
以root 身份开启一个虚拟控制台,主要用于管理员维护系统2, 3, 4runlevel2.target ,runlevel3.target ,runlevel4.target ,multi-user.target 多用户模式,非图形化。
用户可以通过多个控制台或网络登录5runlevel5.target , graphical.target 多用户模式,图形化界面6runlevel6.target , reboot.target 重启系统。
不要将默认目标设置为此目标Emergencyemergency.target紧急Shellsystemd单元文件•单元文件格式[Unit]Description=CUPS SchedulerDocumentation=man:cupsd(8)[Service]ExecStart=/usr/sbin/cupsd -lType=simpleRestart=always[Install]Also=cups.socket cups.pathWantedBy=printer.targetsystemd单元文件•编辑单元文件(1)在/etc/systemd/system/目录创建单元文件。
(2)修改该文件权限,确保只能被root用户编辑。
(3)在该文件中添加以下配置信息。
[Unit]Description=The Apache HTTP ServerAfter=network.target remote-fs.target nss-lookup.target[Service]Type=forkingEnvironment=APACHE_STARTED_BY_SYSTEMD=trueExecStart=/usr/local/apache2/bin/apachectl startExecStop=/usr/local/apache2/bin/apachectl stopExecReload=/usr/local/apache2/bin/apachectl gracefulPrivateTmp=trueRestart=on-abort[Install]WantedBy=multi-user.target(4)通知systemd该单元已添加,并开启该服务。
systemd单元文件•单元文件与启动目标•传统的方案:服务启动脚本对应运行级别。
•systemd的方案:单元文件对应启动目标。
•将基本的单元文件存放在/usr/lib/systemd/system/目录下,不同的启动目标要装载的服务等单元的配置文件则以软链接方式映射到/etc/systemd/system/目录下对应的启动目标子目录下,如multi-user.target装载的单元的配置文件链接到/etc/systemd/system/multi-user.target.wants/目录下。
•在/etc/systemd/system目录下有多个*.wants子目录,放在该子目录下的单元文件等同于在[Unit]节中的Wants字段,即该单元启动时还需启动这些单元。
systemd单元文件•理解target单元文件•启动目标使用target单元文件描述,target单位文件扩展名是.target,target单元文件的唯一目的是将其他systemd单元文件通过一连串的依赖关系组织在一起。
•以graphical.target单元文件为例进行分析。
graphical.target单元用于启动一个图形会话,systemd会启动像GNOME显示管理(gdm.service)、账户服务(accounts-daemon)这样的服务,并且会激活multi-user.target单元。