服 务(systemd、init)

本文详细解释了服务在Linux中的概念,特别关注systemd服务程序和systemd单元类型,介绍了init和systemd的区别,以及如何通过systemctl管理和控制服务,包括启动状态、启动次序和运行级别等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务是一种程序软件

服务:特殊的应用程序

linux系统中常见的服务名称的最后一般都带有字母d,

如httpd sshd network vsftp(ftp)

服务的特点

1.一般在后台

2.一直执行

系统服务:给系统提供服务功能

应用服务:给人提供服务

程序作用
systemd服务程序,给其他应用程序使用
nginx服务程序,给人使用
rpcbind远程过度调用

init和systenmd的区别

init :单独启动,一个一个启动(因为依赖关系)

systenmd:并行一起启动程序

systemd服务

centos7里使用 的程序,6无法使用

systemd单元类型

单元类型扩展名说明
service.service描述一个系统服务软件
socket.socket描述一个进程间通信的套接字
device.device描述一个内核识别的设备文件
Mount.mount描述一个文件系统的挂载点
Automount.automount描述一个文件系统的自动挂载点
Swap.swap描述一个内存交换设备或交换文件
Path.path描述一个文件系统中文件或目录
Timer.timer描述一个定时器
Snapshot.snapshot用于保存一个systemd的状态
Scope.scope使用systemd的总线接口以编程的方式创建外部进程
Slice.slice描述居于Cgroup的一组通过层次组织的管理系统进程
Target.target描述一组systemd的单元

进入systemctl管理的服务的配置文件

命令:vim /usr/lib/systemd/system/服务名称.service

[unit]:描述这个软件是用来干什么的

  • Description:描述这个软件的服务

  • After:定义unit的启动次序,表示当前unit应该晚于哪些unit启动(不写也没关系)

  • Requires: 依赖关系(强依赖)

  • wants:弱依赖

  • conflicts:定义冲突关系

[service]:怎么启动、关闭、重启、打开service程序

  • start:开始

  • reload:重新加载

  • stop:关闭(kill)

[install]:代表你装在哪个运行级别下面

  • wantedby:由哪个运行级别来运行

运行级别所对应的systemd目标

运行级别systemd的target说明
0target关机
1rescue.target单用户模式,一般在维护时使用,不用密码验证即可登录系统
2multi-user.target字符界面,不支持 nfs 功能
3multi-user.target最完整的字符界面字符界面
4multi-user.target保留下来的字符界面
5graphical.target图像化界面
6reboot.target重启

编译安装,然后手动加入systemctl 管理

systemctl : 专门管理服务进程

管理选项作用
systemctl start 程序名(服务名)启动某个服务
systemctl stop 程序名关闭某个服务
systemctl restart 程序名重启某个服务 stop start
systemctl reload 程序名重新加载某个沉痼的配置文件 在不停止服务的情况下重新加载服务
systemctl status 程序名查看目前服务的的状态
systemctl enable 程序名开机自启动
systemctl disable 程序名开机不自启动(优化启动过程)
systemctl enable ---now程序名开机启动并且立即开启服务
systemctl disable ---now程序名开机不自启动并且立即关闭服务

系统服务器的启动和控制

查看系统服务的启动状态

systemctl status 服务名称

设置系统服务的启动状态

systemctl enable/disable 服务名称

init进程:init进程的pid号永远为1

在centos6里使用的程序

运行级别说明
0关机
1单用户模式,一般在维护时使用,不用密码验证即可登录系统
2字符界面,不支持 nfs 功能
3最完整的字符界面字符界面
4保留下来的字符界面
5图像化界面
6重启

切换级别命令:init

查看当前系统运行的等级

runlevel

n 5

前面的n表示上一个等级,n就是表示没有,后面的5表示当前的等级

### Systemd 初始化系统概述 Systemd 是现代 Linux 系统中的初始化系统(init),旨在解决传统 SysV init 的局限性并提升系统启动效率[^1]。此系统不仅兼容旧版的 Sysvinit 及 LSB initscripts,还引入了一系列新功能来增强性能管理便利性。 #### 主要设计目标 - **提高启动速度**:通过支持高度并发的任执行机制,大幅缩短了操作系统加载所需时间[^4]。 - **CGroup 支持**:利用控制组(CGroups)技术有效地管理监控进程及其子进程资源消耗情况,提供更精细的过程控制手段。 #### 关键组件介绍 为了实现上述目标,systemd 设计了几项核心模块: - `systemctl`:用于管理系统状态的主要命令行工具; - 单元文件(`*.service`, `*.socket`, etc.):定义行为、依赖关系等信息的小型配置文档; - 日志记录设施 journald :替代 syslog 成为新的日志收集器; - tmpfiles.d/ : 处理临时文件创建与清理策略; - udev: 负责设备事件处理程序注册表更新工作。 这些组成部分共同协作以确保整个系统的稳定运行,并简化管理员日常维护任。 #### 配置实例展示 下面给出一段简单的 Nginx Web 器单元文件示例,展示了如何自定义的行为模式: ```ini [Unit] Description=A high performance web server and a reverse proxy server After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s stop PrivateTmp=true [Install] WantedBy=multi-user.target ``` 这段代码片段说明了一个典型的描述方式,在 `[Unit]`部分指定了该与其他单位之间的依赖顺序;而在 `[Service]` 中则具体设定了启动、重启及停止操作对应的指令集;最后 `[Install]` 定义了当安装本时应将其加入哪个目标集合下自动激活。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值