«

教你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

注意替换、/path/to/your/app 和 /path/to/your/script/run_app.sh 为你的实际用户名、应用目录和脚本路径。

详细介绍:

[Unit] 部分

Description=My Python Application:
这一行提供了服务的简短描述,这里是“My Python Application”。这个描述会在使用systemd命令(如systemctl status)查看服务状态时显示。

After=network.target:
这指定了服务启动的顺序。这里的意思是,在启动这个服务之前,必须先启动network.target。network.target是一个systemd的target,它代表网络配置和服务的就绪状态。这个设置确保了你的Python应用在尝试建立网络连接之前,网络已经配置好。

[Service] 部分

User=
这里指定了运行此服务的用户。你需要将替换为实际的用户名。这有助于提高安全性,因为服务不会以root用户身份运行。

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意味着在系统启动到多用户文本模式时,该服务会被自动启动。

本文完结,相关标签: systemd 服务

 版权所有:Anglei
 文章标题:教你ubuntu linux 如何创建systemd服务
 除非注明,本站文章如未特殊说明均为 MAXADA社区知识库 原创,且版权所有,请勿用于任何商业用途。

推荐阅读:

看完后感想如何?

路过(0)

雷人(0)

握手(0)

鲜花(0)

鸡蛋(0)
分享到: