Linux系统中配置应用或脚本开机自启

文摘   2025-01-14 09:49   安徽  

前言

在Linux系统中,配置应用或脚本开机自启是一项常见的需求,无论是对于服务器环境中的关键服务,还是个人电脑上的一些常用工具,都能通过合理的配置实现自动化启动,提高系统的可用性和便捷性。本文将详细介绍在Linux中使用Systemd来配置应用或脚本开机自启的方法。

使用 Systemd 服务方式

Systemd作为当下大多数Linux发行版(例如Ubuntu、CentOS等)默认的初始化系统和系统与服务管理器,通过创建Systemd服务单元文件,可轻松达成应用或脚本的开机自启目标。

服务单元文件分为系统级别和用户级别两种存放位置:

系统级别

位于/etc/systemd/system/目录,此类服务单元面向整个系统,依据运行级别在系统启动时自动启动,为所有用户提供基础服务。

用户级别

存放于~/.config/systemd/user/目录,仅针对特定用户会话,在用户登录时启动,用于管理用户的个人任务和应用程序。

以系统级别服务为例,我们将在/etc/systemd/system/目录创建新的服务单元文件。借助文本编辑器(如nanovim)创建以 .service 结尾的文件,如nginx.service。以下是一个用于启动名为nginx应用程序的简单服务单元文件示例:

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target

[Service]
ExecStart=/usr/sbin/nginx
ExecStop=/usr/sbin/nginx -s stop
Restart=on-failure

[Install]
WantedBy=multi-user.target
  • [Unit] 部分:

    • Description:简要描述服务单元,如:NGINX HTTP和反向代理服务器。

    • After:指定服务单元在特定目标(target)之后启动,本例中表示待网络(network)启动后再启动nginx。

  • [Service] 部分:

    • ExecStart:定义启动服务时执行的命令,此处为/usr/sbin/nginx

    • ExecStop:定义停止服务时执行的命令,此处为/usr/sbin/nginx -s stop

    • Restart:控制服务在特定情况下自动重启,Restart=on-failure意味着当nginx服务因意外错误(如程序崩溃、返回非零退出状态等)退出时,Systemd将自动尝试重启该服务。

  • [Install] 部分:

    • WantedBy:明确服务单元在哪些目标(target)被启用时自动启动。WantedBy=multi-user.target表明当multi-user.target目标启用时,nginx服务会自动启动。multi-user.target是Systemd的常见目标之一,通常对应多用户图形界面环境或命令行多用户环境,因此在大多数常见的多用户运行级别下,nginx服务都会随系统启动而自动启动。

创建或修改服务单元文件后,需重新加载Systemd配置,使Systemd读取新文件,执行命令:

sudo systemctl daemon-reload

接着,启用服务以实现开机自启:

sudo systemctl enable nginx.service

此操作会创建符号链接,将服务单元文件链接至相应Systemd目标目录,从而达成开机自启目的。

如果需要停止服务,可以使用以下命令:

sudo systemctl stop nginx.service

当应用或脚本更新后,需要重启服务以应用更改,执行:

sudo systemctl restart nginx.service

如果不再需要服务开机自启,可以使用以下命令禁用服务:

sudo systemctl disable nginx.service

这会移除之前创建的符号链接,服务将不再在开机时自动启动。

欢迎大家关注我的公众号,将会为大家推荐更优质的内容!

青檬小栈
科长技术小栈,分享各种技术文章和教程集合。欢迎大家的关注!
 最新文章