Linux下的服务与进程管理
1.Linux 系统的启动过程
2、Linux 系统的运行级别
(1)Linux 为了适应不同用户对服务的启动配置要求,设置了七种不同的运行级别:
运行级别 0:关机模式。poweroff.target
运行级别 1:单用户模式,仅用于 root 用户对系统进行维护时。rescue.target
运行级别 2:多用户模式(没有 NFS)。multi-user.target
运行级别 3:完全多用户模式,即多用户文本界面模式,是标准的运行级别。
运行级别 4:特定运行级别,基本不用的用户模式。multi-user.target
运行级别 5:X11,Linux 系统的图形界面运行级别。graphical.target
运行级别 6:重新启动。reboot.target target 文件保存在:/lib/system/system 目录中。
运行级别的设置由/etc/systemd/system/default.target 文件来控制。
运行级别服务程序存放位置:/etc/rc.d/ 服务进程存放在运行级别对应的目录中:Snnxxxx 或 Knnxxxxx 服务程序的脚本文件存放位置:/etc/rc.d/init.d/
(2)系统运行级别之间的切换
查看系统的当前运行级别:runlevel
查看系统启动时的运行级别:ll /etc/systemd/system/default.target
(3)切换方式
使用 init 命令进行切换 将系统启动的运行级别从 5 修改为 3
方法一:重新设置链接文件
#rm -rf /etc/systemd/system/default.target
#ln -s /lib/systemd/system/runlevel3.target /etc/systemd/system/default.tart
方法二:使用 systemctl 命令
#systemctl set-default runlevel3.target
(4)关闭 Ctrl+Alt+Del 键的功能
在字符界面按 Ctrl+Alt+Del 键系统会自动重启,为避免误操作带来的损失,需要禁用此功能。 注释/usr/lib/systemd/system/ctrl-alt-del.target 文件中的全部内容,保存退出。 执行 init q 重新 reload 配置文件。
3、使用 systemctl 管理服务
服务指执行指定系统功能的程序、或进程,以便支持其他程序,尤其是底层(接近硬件)程 序。例如:打印服务,ftp 服务,http 服务等。
对于服务的管理可使用 systemctl 命令。
(1)服务的启动与停止 命令格式:systemctl 选项 服务名
选项说明:
start:启动;
stop:停止;
restart:重启;
status:服务状态
服务名:一般以“.service”结尾,输入服务名时了可省略。
(2)设置服务的自启动状态
①使用 ntsysv 命令设置服务的自启动
命令格式:ntsysv [–back][–level]
选项说明:back,在互动界面不显示 cancel;level,在指定的运行级别中设置服务的自启动。
②使用 systemctl 命令设置服务的自启动
查看服务的自启动状态:systemctl is-enabled [服务名称]
开启服务的自启动:systemctl enable 服务名称
关闭服务的自启动:systemctl disable 服务名称
(3)查看所有的服务
命令格式:systemctl [选项] [–type=TYPE] [–all]
选项说明:
(1) list-units:依据 unit 列出所有启动的 unit。加上–all 会列出没启动的 unit;
(2) list-unit-files:依据/usr/lib/systemd/system/ 内的启动文件,列出启动文件列–type=TYPE: 为 unit type, 主要有 service, socket, target
#systemctl //列出所有的系统服务
#systemctl list-units //列出所有启动 unit
#systemctl list-unit-files //列出所有启动文件
#systemctl list-units -type=service -all //列出所有 service 类型的 unit
#systemctl list-units -type=service -all grep cpu //列出 cpu 电源管理机制的服务
#systemctl list-units -type=target -all //列出所有目标单元 target
(3)systemctl 命令特殊功能 命令
systemctl poweroff 系统关机
systemctl reboot 重新启动
systemctl suspend 进入睡眠模式
systemctl hibernate 进入休眠模式
systemctl rescue 强制进入救援模式
systemctl emergency 强制进入紧急救援模式
4、进程的延迟与周期调度
(1)进程的概念
进程:开始执行但是还没有结束的程序的实例
程序:包含可执行代码的文件
进程由程序产生,是一个运行着的、要占系统资源的程序,进程不等于程序。
进程分为:交互进程、批处理进程、守护进程。
(2)进程的查看:
ps 命令 命令语法:
ps [选项] 选项说明:
-A:显示系统中所有进程的信息,与-e 具有相同的功能。
-a:显示所有用户进程的信息。
-f:完整的显示进程的所有信息。
-l:以长格式显示进程信息。
-r:只显示正在运行的进程。
-u:显示面向用户的格式(包括用户名、CPU 及内存使用情况等信息)。
-x:显示所有非控制终端上的进程信息。
-p:显示由进程 ID 指定的进程的信息。
-t:显示指定终端上的进程的信息。
(3)查看各进程继承关系的命令:pstree pstree 命令以树状结构显示系统进程的继承关系。
树状图将会以 pid (如果有指定) 或是以 init 为根,如果指定 user,则树状结构只显示该用户所拥有的进程。
命令格式:pstree [选项] [pid|user]
选项说明:
-a:显示该进程的完整继承关系,如果是被内存置换出去的进程则会加上括号。
-c 如果有重复的进程名, 则分开列出 (默认值是会在前面加上 * )。
pid|user:查看指定根进程(pid)或用户(user)所拥有的进程。
(4)进程的终止
kill [信号代码] pid
Killall [信号代码] 进程名
(5)进程的调度
①延迟性调试命令:at 功能:指定时间运行指定的程序
格式:
at [-f 文件] [-m ] 时间
-f : 指定存放计划执行命令的文件
-m: 作业结束后发送邮件给执行 at 命令的用户
时间:任务执行的时间,可采用相对和绝对两种方法
绝对表示法: MMDDYY 或 MM/DD/YYYY, today 或 tomorrow 来表示今天或明天
相对表示法:now+num+时间单位,其中的时间间隔可以是 minutes, hours, days, weeks
②周期性调度命令
crontab 功能:计划调度服务
crontab –u user {-e | -l | -r}
-u:为指定的用户设置计划任务
-e:编辑计划任务列表
-l:查看指定用户的计划任务列表,默认为当前用户
-r:删除用户的计划任务列表
crontab –u user file (其中 file 代表任务列表文件)