Linux下使用systemd部署c++服务

发布于:2025-05-14 ⋅ 阅读:(64) ⋅ 点赞:(0)

步骤一

编译好c++程序,记录好可执行程序所在文件夹。

步骤二

创建systemd服务文件。这个文件一般是存在/etc/systemd/system目录下的。这里是我下的myCloudClient.service服务。

sudo nano /etc/systemd/system/myCloudClient.service

这里使用的nano编辑器,使用ctrl+o,然后enter就是保存退出。

具体的myCloudClient.service格式和内容如下:

[Unit]
Description=My CloudClient Application
After=network.target             # 如果依赖网络,确保网络就绪后启动

[Service]
Type=simple
User=hzp                             # 建议以非 root 用户运行(如专用服务用户)
WorkingDirectory=/home/hzp/Cloud/RealCloud/src     #工作目录
ExecStart=/home/hzp/Cloud/RealCloud/src/cloud       #可执行文件所在位置
Restart=always                    # 程序崩溃后自动重启
RestartSec=5                       # 重启间隔 5 秒
StandardOutput=syslog       # 输出到系统日志(可选)
StandardError=syslog          # 错误输出到系统日志(可选)

[Install]
WantedBy=multi-user.target# 关联到多用户模式(默认启动级别)

接下来,在执行以下命令

# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 启用服务(开机自启)
sudo systemctl enable 服务名称

# 启动服务
sudo systemctl start 服务名称

步骤三

查看服务状态

sudo systemctl status myCloudClient.service

这样就表示,服务启动成功。

停止/重启服务

sudo systemctl stop 服务名
sudo systemctl restart 服务名

查看日志

通过journalctl实时查看日志

sudo journalctl -u 服务名 -f

将日志文件输出到文件

只需将修改服务文件中的 StandardOutput 和 StandardError

StandardOutput=file:/var/log/myapp.log
StandardError=file:/var/log/myapp.error.log

然后重启服务

sudo systemctl restart 服务名