如何在Linux中创建系统服务
您的机器上有这个很棒的应用程序,并希望将其作为服务运行。您希望使整个过程自动化,这样您就不必每次都使用语言框架启动命令。假设您想在您的机器后台启动应用程序,您可以在其中启动、重新启动、检查状态和随意停止。拿着你的啤酒! Systemd 和 Systemctl systemd是 Linux 操作系统的系统和服务管理器。该管理器允许您以极其强大和灵活的方式创建和管理服务。 由systemd管理的所有服
您的机器上有这个很棒的应用程序,并希望将其作为服务运行。您希望使整个过程自动化,这样您就不必每次都使用语言框架启动命令。假设您想在您的机器后台启动应用程序,您可以在其中启动、重新启动、检查状态和随意停止。拿着你的啤酒!
Systemd 和 Systemctl
systemd
是 Linux 操作系统的系统和服务管理器。该管理器允许您以极其强大和灵活的方式创建和管理服务。
由systemd
管理的所有服务都可以位于:
sudo cd /etc/systemd/system/
systemctl
可用于自省和控制systemd
系统和服务管理器的状态。 systemctl 必须使用 sudo 运行
sudo systemctl start service.service
sudo systemctl stop service.service
sudo systemctl restart service.service
sudo systemctl status service.service
创建服务
我们创建我们的服务:
sudo nano /etc/systemd/system/myapp.service
我们的服务配置
[Unit]
Description=My custom service
Requires=network.target
[Service]
WorkingDirectory=/home/user/workspace
ExecStart=/home/user/workspace/app
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
[Unit]
部分提供有关服务的基本信息。Description
描述了该服务。 Systemd 在用户界面中的单元名称旁边显示此描述。Requires
定义用作服务依赖项的单元。这里我们说我们的应用程序依赖于网络服务。
[Service]
部分提供了有关如何控制服务的说明。WorkingDirectory
指定服务将在其中工作的目录。ExecStart
定义运行服务的命令。这包括修改服务的命令和参数的完整路径。SuccessExitStatus
定义了当主服务进程返回时将被视为成功终止的状态。TimeoutStopSec
配置等待每个ExecStop
命令的时间。Restart
配置在服务进程退出、被杀死或超时时是否重新启动服务。RestartSec
配置重新启动服务之前的睡眠时间。
[Install]
部分提供了有关 systemd 如何安装服务的说明。WantedBy
定义如果使用 systemctl enable 启用,哪个服务会触发自定义服务。这主要用于在启动时启动自定义服务。在此示例中,myapp.service
使用 multi-user.target,当 systemd 在启动时加载multi-user.target
时,它会启动myapp.service
。
创建我们的应用程序
我们创建我们的 bash 脚本
sudo nano /home/user/workspace/app
此 bash 脚本使用 java 可执行文件执行应用程序(.jar)。
#!/bin/sh
sudo /usr/bin/java -jar payroll-0.01-SNAPSHOT.jar
我们需要给我们的app
文件可执行权限。
sudo chmod u+x app
启动服务
sudo systemctl daemon-reload
sudo systemctl enable myapp.service
sudo systemctl start myapp
sudo systemctl status myapp
日志记录
现在您的服务正在后台运行。您可能想知道如何检查您的应用程序日志,Linux 为您提供了帮助。
查看服务的最后 100 条日志
sudo journalctl -f -n 100 -u myapp
跟踪您的服务
sudo journalctl -f -u myapp
停止服务
sudo systemctl stop myapp
我希望你喜欢这篇文章,如果你喜欢,请多多支持。谢谢!
更多推荐
所有评论(0)