前言
在Linux系统中,配置应用或脚本开机自启是一项常见的需求,无论是对于服务器环境中的关键服务,还是个人电脑上的一些常用工具,都能通过合理的配置实现自动化启动,提高系统的可用性和便捷性。本文将详细介绍在Linux中使用Systemd来配置应用或脚本开机自启的方法。
使用 Systemd 服务方式
Systemd作为当下大多数Linux发行版(例如Ubuntu、CentOS等)默认的初始化系统和系统与服务管理器,通过创建Systemd服务单元文件,可轻松达成应用或脚本的开机自启目标。
服务单元文件分为系统级别和用户级别两种存放位置:
系统级别:
位于/etc/systemd/system/
目录,此类服务单元面向整个系统,依据运行级别在系统启动时自动启动,为所有用户提供基础服务。
用户级别:
存放于~/.config/systemd/user/
目录,仅针对特定用户会话,在用户登录时启动,用于管理用户的个人任务和应用程序。
以系统级别服务为例,我们将在/etc/systemd/system/
目录创建新的服务单元文件。借助文本编辑器(如nano或vim)创建以 .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
这会移除之前创建的符号链接,服务将不再在开机时自动启动。
欢迎大家关注我的公众号,将会为大家推荐更优质的内容!