Wordpress做什么网站赚钱,做自媒体网站,建网站用的域名多少钱,广州建论坛网站文章目录 为什么要将程序配置成服务#xff1f;1. 自动启动2. 后台运行3. 定时重启4. 简化管理5. 整合系统 版本支持1. Ubuntu 14.04及更早版本#xff1a;使用upstart作为默认的init系统/etc/rc.local旧版本新版本 2. Ubuntu 15.04到16.04版本#xff1a;默认使用systemd作… 文章目录 为什么要将程序配置成服务1. 自动启动2. 后台运行3. 定时重启4. 简化管理5. 整合系统 版本支持1. Ubuntu 14.04及更早版本使用upstart作为默认的init系统/etc/rc.local旧版本新版本 2. Ubuntu 15.04到16.04版本默认使用systemd作为init系统但仍然兼容upstart3. Ubuntu 16.10及更高版本默认使用systemd作为init系统总结 开机自启服务原理配置步骤1. 创建配置文件2. 编辑配置文件3. 拷贝配置文件4. 启用服务5. 启动服务6. 停止服务7. 禁用服务 配置项解释配置父项配置子项[Unit]配置子项- Description用于设置服务的描述信息。- Requires用于指定服务所依赖的其他服务。- After用于指定服务启动的顺序可以设置在哪些服务之后启动。- Before用于指定服务启动的顺序可以设置在哪些服务之前启动。 [Service]配置子项- ExecStart用于指定服务的启动命令。- WorkingDirectory用于指定服务的工作目录。- Environment用于设置服务的环境变量。- User用于指定服务运行的用户。- Group用于指定服务运行的用户组。 [Install]配置子项- WantedBy用于指定服务在哪些目标target下启动。- RequiredBy用于指定哪些目标target依赖于该服务。 systemd官方文档systemd.service完整配置选项systemd支持在/etc/systemd/system创建子目录便于我们方便管理我们的.service文件vscode相关插件Systemd Helper使用软链接链接systemd配置文件 为什么要将程序配置成服务
我们在linux系统下启动一个程序一般用一条命令或者执行一个脚本就行了那么为什么还要将程序配置成服务这样做有什么好处
1. 自动启动
配置成服务后程序将在系统启动时自动启动无需手动操作。这样可以确保程序在系统重启后能够自动运行避免因为人为疏忽或其他原因导致程序未能启动。
2. 后台运行
配置成服务后程序将以后台进程的方式运行不会占用终端或用户会话。这样可以确保程序在后台持续运行即使用户注销或关闭终端。
3. 定时重启
通过配置服务可以设置服务在异常退出时自动重启。这样可以提高程序的稳定性确保在出现问题时能够及时恢复运行。
4. 简化管理
配置成服务后可以使用系统工具如systemctl来管理服务如启动、停止、重启、查看状态等。这样可以方便地管理和监控程序的运行状态。
5. 整合系统
配置成服务后程序可以与系统的其他服务和组件进行整合。例如可以设置服务的依赖关系确保在其他服务启动之前先启动该服务还可以将服务与日志记录、监控系统等集成方便管理和故障排查。
版本支持
在不同的Ubuntu版本中配置开机自启服务的方式可能会有所不同。以下是几个常见的Ubuntu版本和它们支持的开机自启服务类型。本文主要讲解Ubuntu 16.10及更高版本使用systemd作为init系统的服务开机自启方式。
1. Ubuntu 14.04及更早版本使用upstart作为默认的init系统
可以创建一个.conf文件来配置开机自启服务然后将它放在/etc/init/目录下。
/etc/rc.local
旧版本
rc.local是一种在Ubuntu中配置开机自启服务的方式它属于早期版本的init系统。具体来说rc.local是在Ubuntu 14.04及更早版本中使用的方式使用的是upstart作为默认的init系统。
rc.local是一个脚本文件位于/etc/rc.local。你可以在该文件中添加要在系统启动时执行的命令或脚本。这些命令或脚本将在系统启动时自动执行。
以下是使用rc.local配置开机自启服务的步骤 打开rc.local文件 sudo nano /etc/rc.local在文件中添加你要执行的命令或脚本。例如如果要启动一个名为my_service的服务可以添加以下内容 /path/to/your/service注意命令或脚本必须是可执行的。 保存并关闭文件。 确保rc.local文件具有可执行权限 sudo chmod x /etc/rc.local重启系统服务将在系统启动时自动执行。
需要注意的是rc.local方式在较新的Ubuntu版本中已经不再推荐使用因为它是基于旧的upstart系统。对于使用systemd作为init系统的较新版本的Ubuntu建议使用systemd的方式来配置开机自启服务。
新版本
在一些较新的Ubuntu版本中如Ubuntu 16.04及更高版本rc.local文件默认是被禁用的因为这些版本使用systemd作为默认的init系统。systemd不会自动执行rc.local文件中的内容。
为了在这些版本中使用rc.local文件可以通过配置rc-local.service来实现。rc-local.service是一个systemd服务单元用于在系统启动时执行rc.local文件中的内容。
以下是配置rc-local.service的步骤 创建rc-local.service文件 sudo nano /etc/systemd/system/rc-local.service在文件中添加以下内容 [Unit]
Description/etc/rc.local Compatibility
ConditionPathExists/etc/rc.local[Service]
ExecStart/etc/rc.local start
Typeforking
TimeoutSec0
RemainAfterExityes[Install]
WantedBymulti-user.target创建rc.local文件 sudo nano /etc/rc.local在rc.local文件中添加要执行的命令或脚本。 保存并关闭文件。 设置rc.local文件的权限 sudo chmod x /etc/rc.local启用rc-local.service sudo systemctl enable rc-local.service启动rc-local.service sudo systemctl start rc-local.servicerc.local文件中的内容将在系统启动时自动执行。
对于较新的Ubuntu版本使用rc.local和rc-local.service的方式可能不是最佳实践。推荐使用systemd的方式来配置开机自启服务以便与当前的init系统保持一致。
2. Ubuntu 15.04到16.04版本默认使用systemd作为init系统但仍然兼容upstart
可以使用upstart的方式来配置开机自启服务或者使用systemd的方式。
3. Ubuntu 16.10及更高版本默认使用systemd作为init系统
可以使用systemd的方式来配置开机自启服务。
总结
systemd是目前主流的init系统大多数Ubuntu版本都支持使用systemd来配置开机自启服务。但是对于旧版本的Ubuntu可能需要使用upstart来配置开机自启服务。
开机自启服务原理
以使用systemd作为系统初始化的管理器为例。systemd是一个Linux系统和服务管理器它负责启动、停止和管理系统中的各种服务。
当系统启动时systemd会读取/etc/systemd/system/目录下的服务配置文件并根据配置文件中的指令来启动相应的服务。配置文件中的ExecStart字段指定了要执行的命令或脚本WorkingDirectory字段指定了命令或脚本的工作目录。
通过使用systemctl enable命令我们告诉systemd将该服务配置文件链接到系统的默认目标default target使得该服务在系统启动时自动启动。
当系统启动时systemd会按照配置文件中的指令来启动服务。如果服务成功启动systemd会将服务的状态标记为active。如果服务启动失败systemd会将服务的状态标记为failed。
通过使用systemctl start命令我们可以手动启动服务。而使用systemctl stop命令可以停止服务。
通过使用systemctl disable命令我们可以禁用服务使得该服务在系统启动时不会自动启动。
总结使用systemd来管理服务的启动和停止通过配置服务配置文件并将其链接到系统的默认目标使得服务在系统启动时自动启动。
配置步骤
以systemd作为init系统的服务开机自启方式为例。下面是配置开机自启服务的步骤
1. 创建配置文件
创建一个服务配置文件以.service为后缀比如my_service.service。
2. 编辑配置文件
使用文本编辑器打开该文件并添加以下内容
[Unit]
DescriptionMy Service
Afternetwork.target[Service]
ExecStart/path/to/your/script.sh
WorkingDirectory/path/to/your/working/directory[Install]
WantedBydefault.target在上面的配置中需要替换/path/to/your/script.sh为你要在开机时运行的脚本的路径/path/to/your/working/directory为脚本的工作目录。
3. 拷贝配置文件
将该服务配置文件移动到/etc/systemd/system/目录下
sudo mv my_service.service /etc/systemd/system/4. 启用服务
使用以下命令启用服务
sudo systemctl enable my_service5. 启动服务
使用以下命令启动服务
sudo systemctl start my_service现在该服务将会在每次开机时自动启动。
6. 停止服务
如果需要停止服务可以使用以下命令
sudo systemctl stop my_service7. 禁用服务
如果需要禁用服务可以使用以下命令
sudo systemctl disable my_service配置项解释
配置父项
在systemd中配置文件通常使用.service扩展名并且使用INI格式。一个.service文件可以包含以下三个配置项 [Unit]这个配置项定义了服务的基本属性如服务的描述、依赖关系、启动顺序等。在这个配置项中可以设置服务的名称、描述、依赖关系、启动顺序等。 [Service]这个配置项定义了服务的具体执行方式如服务的启动命令、环境变量、工作目录等。在这个配置项中可以设置服务的启动命令、环境变量、工作目录等。 [Install]这个配置项定义了服务的安装方式如服务的启动级别、启动顺序等。在这个配置项中可以设置服务的启动级别、启动顺序等。
这三个配置项分别定义了服务的基本属性、具体执行方式和安装方式。
除了[Unit]、[Service]和[Install]之外systemd还支持其他一些配置项用于进一步定义和配置服务。以下是一些常用的配置项 [Path]用于监控文件或目录的变化并在变化发生时触发服务的启动、停止或重启。 [Timer]用于定义定时器可以在指定的时间间隔或特定时间点触发服务的启动、停止或重启。 [Socket]用于定义套接字可以监听指定的网络端口或UNIX域套接字并在有连接请求时触发服务的启动。 [Mount]用于定义挂载点可以在指定的文件系统挂载或卸载时触发服务的启动、停止或重启。 [Automount]用于定义自动挂载点可以在访问指定的文件系统路径时自动挂载该文件系统。 [Swap]用于定义交换空间可以在指定的交换文件或分区被启用或禁用时触发服务的启动、停止或重启。
配置子项
[Unit]配置子项
- Description用于设置服务的描述信息。
- Requires用于指定服务所依赖的其他服务。
- After用于指定服务启动的顺序可以设置在哪些服务之后启动。
- Before用于指定服务启动的顺序可以设置在哪些服务之前启动。
[Service]配置子项
- ExecStart用于指定服务的启动命令。
- WorkingDirectory用于指定服务的工作目录。
- Environment用于设置服务的环境变量。
- User用于指定服务运行的用户。
- Group用于指定服务运行的用户组。
[Install]配置子项
- WantedBy用于指定服务在哪些目标target下启动。
WantedBy是systemd服务配置文件中的一个选项用于指定服务所属的启动级别target。启动级别是一组定义了系统启动过程中要启动的服务的目标单元的集合。
在systemd中启动级别由target单元来表示。每个target单元都是一组相关的服务单元的集合用于定义系统在不同阶段启动时应该启动哪些服务。例如multi-user.target是一个常见的启动级别用于表示系统已经启动到多用户模式此时应该启动所有与用户交互相关的服务。
WantedBy选项用于指定服务所属的启动级别。它接受一个目标单元的名称作为参数。当你将服务配置文件放置在/etc/systemd/system/目录下并使用systemctl enable命令启用服务时systemd会根据WantedBy选项中指定的目标单元将服务添加到相应的启动级别中。
在上面的例子中WantedBymulti-user.target表示该服务应该属于multi-user.target启动级别即系统已经启动到多用户模式时应该启动该服务。
在systemd中有以下几个常见的启动级别target
poweroff.target系统关机时的目标单元。rescue.target用于系统救援的目标单元提供了一个最小的功能集合用于修复系统问题。multi-user.target多用户模式的目标单元用于正常的多用户操作。graphical.target图形界面模式的目标单元用于启动图形界面环境。reboot.target系统重启时的目标单元。
除了上述常见的启动级别还有其他一些特定的启动级别如network.target网络启动完成后的目标单元、default.target默认目标单元通常是multi-user.target或graphical.target等。
对于普通程序来说通常会将其配置为属于multi-user.target或graphical.target这样的启动级别以便在系统启动到多用户模式或图形界面模式时自动启动。你可以根据你的需求选择适合的启动级别。
- RequiredBy用于指定哪些目标target依赖于该服务。
systemd官方文档systemd.service完整配置选项
https://www.freedesktop.org/software/systemd/man/systemd.service.html
systemd支持在/etc/systemd/system创建子目录便于我们方便管理我们的.service文件
systemd会递归遍历/etc/systemd/system目录下的所有.service文件以及子目录中的.service文件。这意味着可以在/etc/systemd/system目录下创建子目录并在子目录中放置您的服务配置文件。
例如如果在/etc/systemd/system目录下创建了一个名为my-service的子目录并将服务配置文件my-service.service放置在该子目录中systemd仍然能够找到并管理该服务。
这种递归遍历的机制使得您可以更好地组织和管理多个服务的配置文件而不会造成混乱。
vscode相关插件Systemd Helper
可以方便我们编辑systemd配置文件 使用软链接链接systemd配置文件
可以将.service文件创建为软链接链接到实际文件。这样做可以使服务配置文件保持在原始位置同时在/etc/systemd/system目录下创建一个链接以便systemd能够找到并管理该服务。
以下是创建软链接的步骤 在/etc/systemd/system目录下创建一个软链接链接到实际文件。例如假设实际文件位于/path/to/my-service/my-service.service可以使用以下命令创建软链接 sudo ln -s /path/to/my-service/my-service.service /etc/systemd/system/确保软链接的文件权限正确设置。一般来说软链接的所有者应为root用户权限应为644 sudo chown root:root /etc/systemd/system/my-service.service
sudo chmod 644 /etc/systemd/system/my-service.service通过这种方式服务配置文件将保持在原始位置而软链接将位于/etc/systemd/system目录下使systemd能够找到并管理该服务。这样做的好处是当需要修改或更新服务配置文件时只需在原始位置进行操作而不需要修改软链接。