教你ubuntu linux 如何创建systemd服务
时间:2024-7-9 12:53 作者:Anglei 分类: Linux
在一些情况下,需要将脚本写入到服务里,并设置开机启动,这里先创建一个systemd服务文件,并在ExecStart中调用你的shell脚本。
vim /etc/systemd/system/myapp.service
在打开的文件中,输入以下内容:
[Unit]
Description=My Python Application
After=network.target
[Service]
User=<your-username>
WorkingDirectory=/path/to/your/app
ExecStart=/path/to/your/script/run_app.sh
Restart=always
StandardOutput=append:/var/log/myapp.log
StandardError=inherit
[Install]
WantedBy=multi-user.target
注意替换
详细介绍:
[Unit] 部分
Description=My Python Application:
这一行提供了服务的简短描述,这里是“My Python Application”。这个描述会在使用systemd命令(如systemctl status)查看服务状态时显示。
After=network.target:
这指定了服务启动的顺序。这里的意思是,在启动这个服务之前,必须先启动network.target。network.target是一个systemd的target,它代表网络配置和服务的就绪状态。这个设置确保了你的Python应用在尝试建立网络连接之前,网络已经配置好。
[Service] 部分
User=
这里指定了运行此服务的用户。你需要将
WorkingDirectory=/path/to/your/app:
这设置了服务的工作目录。你的Python应用和相关文件应该位于这个目录下。同样,你需要将/path/to/your/app替换为实际的路径。
ExecStart=/path/to/your/script/run_app.sh:
这指定了启动服务时要执行的命令。在这个例子中,它是一个shell脚本run_app.sh的路径,该脚本负责启动Python应用。你需要将/path/to/your/script/run_app.sh替换为实际的脚本路径。
Restart=always:
这指定了服务的重启策略。always意味着无论服务因为何种原因退出,systemd都会自动重启它。这对于需要持续运行的服务非常有用。
StandardOutput=append:/var/log/myapp.log:
这设置了标准输出的重定向。在这个例子中,标准输出被追加到/var/log/myapp.log文件中。这有助于捕获应用的输出并进行日志记录。
StandardError=inherit:这指定了标准错误的处理方式。inherit意味着标准错误将继承StandardOutput的设置,即也被追加到/var/log/myapp.log文件中。
[Install] 部分
WantedBy=multi-user.target:
这指定了服务应该被哪个target所包含。multi-user.target是一个系统启动级别,代表多用户文本模式。在这个级别,网络服务已经启动,但没有启动图形界面。将服务设置为WantedBy=multi-user.target意味着在系统启动到多用户文本模式时,该服务会被自动启动。

推荐阅读:
![]() 路过(0) |
![]() 雷人(0) |
![]() 握手(0) |
![]() 鲜花(0) |
![]() 鸡蛋(0) |