systemd是最初由Red Hat Linux团队开发的Linux系统工具。它包括许多功能,包括用于启动和管理系统进程的引导系统。它目前是大多数Linux发行版的默认初始化系统。许多常用的软件工具(如SSH和Apache)都附带了systemd服务。
创建一个自定义systemd服务很简单,该服务将运行您选择的任何脚本或进程。虽然在服务器上引导时有多种方法可以运行脚本或启动进程,但自定义systemd服务可以轻松启动,停止或重新启动脚本,并将其配置为在引导时自动启动。systemd提供了使用标准化接口的优势,该接口在支持它的所有Linux发行版中都是一致的。
创建服务将管理的脚本或可执行文件。本教程使用简单的Bash脚本作为示例:
test_service.sh
1 DATE=`date '+%Y-%m-%d %H:%M:%S'`
2 echo "Example service started at ${DATE}" | systemd-cat -p info
3
4 while :
5 do
6 echo "Looping...";
7 sleep 30;
8 done
此脚本将记录初始化的时间,然后无限循环以保持服务运行。
将脚本复制到/usr/bin
并使其可执行:
sudo cp test_service.sh /usr/bin/test_service.sh
sudo chmod +x /usr/bin/test_service.sh
创建一个Unit文件来定义systemd服务:
1 [Unit]
2 Description=Example systemd service.
3
4 [Service]
5 Type=simple
6 ExecStart=/bin/bash /usr/bin/test_service.sh
7
8 [Install]
9 WantedBy=multi-user.target
这定义了一个简单的服务。关键部分是ExecStart
指令,它指定将运行以启动服务的命令。
有关单元文件及其可用配置选项的更多信息,请参阅systemd文档。
获得单元文件后,即可测试该服务:
sudo systemctl start myservice
检查服务的状态:
sudo systemctl status myservice
如果服务正确运行,则输出应类似于以下内容:
● myservice.service - Example systemd service.
Loaded: loaded (/lib/systemd/system/myservice.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2018-05-01 18:17:14 UTC; 4s ago
Main PID: 16266 (bash)
Tasks: 2
Memory: 748.0K
CPU: 4ms
CGroup: /system.slice/myservice.service
├─16266 /bin/bash /usr/bin/test_service.sh
└─16270 sleep 30
May 01 18:17:14 localhost systemd[1]: Started Example systemd service..
May 01 18:17:14 localhost cat[16269]: Example service started at 2018-05-01 18:17:14
May 01 18:17:14 localhost bash[16266]: Looping...
可以使用标准systemd命令停止或重新启动该服务:
sudo systemctl stop myservice
sudo systemctl restart myservice
最后,使用enable
命令确保在系统引导时服务启动:
sudo systemctl enable myservice
Created symlink from /etc/systemd/system/multi-user.target.wants/myservice.service to /lib/systemd/system/myservice.service.
检查服务的状态:
sudo systemctl status myservice
您应该看到服务在启动后立即记录其启动时间:
● myservice.service - Example systemd service.
Loaded: loaded (/usr/lib/systemd/system/myservice.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2018-05-02 15:03:07 UTC; 48s ago
Main PID: 2973 (bash)
CGroup: /system.slice/myservice.service
├─2973 /bin/bash /usr/bin/test_service.sh
└─3371 sleep 30
May 02 15:03:07 localhost systemd[1]: Started Example systemd service..
May 02 15:03:07 localhost systemd[1]: Starting Example systemd service....
May 02 15:03:07 localhost bash[2973]: Looping...
May 02 15:03:37 localhost bash[2973]: Looping...
有关此主题的其他信息,您可能需要参考以下资源。
更多Linux教程请前往腾讯云+社区学习更多知识。
参考文献:《Use systemd to Start a Linux Service at Boot》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。