Linux配置go程序为service后台开机自启动

avatar
作者
筋斗云
阅读量:0

1.编写需要启动的项目路径以及简单配置

sudo nano /etc/systemd/system/go.service 
#定义服务的元数据和依赖关系。 [Unit] #这是对服务的简短描述。 Description=My Go Service #network.target 是一个虚拟目标,它表示网络服务已经初始化完成。该指令告诉 systemd 在网络服务启动后再启动这个服务 After=network.target  # 定义服务的具体行为和启动参数。 [Service] # 指定启动服务的可执行文件的路径。这里是 Go 程序的路径,该命令将被 systemd 执行以启动服务。 ExecStart=/opt/go/main # 指定服务运行时的工作目录。这是服务进程的当前工作目录,通常是可执行文件所在的目录或存放配置文件、数据文件的目录。 WorkingDirectory=/opt/go # 定义服务的重启策略。当服务进程退出时,无论是正常退出还是异常退出,自动重启服务 Restart=always # 定运行服务的用户 User=user # 定运行服务的用户组 Group=user # 务的标准输出(stdout)重定向到 systemd 日志管理系统 journald,可以通过 journalctl 查看。这有助于集中管理日志信息。 StandardOutput=journal # 将服务的标准错误输出(stderr)重定向到 journald,这也是为了方便查看错误日志和进行调试。 StandardError=journal # 定义服务在重启之前等待的秒数。如果服务因某种原因退出,systemd 在重新启动服务之前会等待 10 秒。这可以防止服务在遇到问题时频繁重启。 RestartSec=10  # 义了服务安装时的行为和目标。 [Install] # 定服务在 multi-user.target 目标下激活。multi-user.target 是一个标准的 systemd 目标,表示系统处于多用户模式(类似于传统的运行级别 3)。当系统进入# 目标时,服务将自动启动。这个设置确保服务在系统启动时自动运行。 WantedBy=multi-user.target 

简单版本

[Unit] Description=My Go Service After=network.target  [Service] # 自己写 启动的方式 ExecStart=/opt/go/main # 需要自己写 工作的路径 WorkingDirectory=/opt/go Restart=always  [Install] WantedBy=multi-user.target 

Ctrl + O 回车保存 Ctrl + X 退出

2.刷新配置文件

sudo systemctl daemon-reload 

3.启动服务

 sudo systemctl restart go.service 

4.查看运行状态

 sudo systemctl status go.service 
user@LAPTOP-3MT4IFSU:/mnt/c/Users/123456$ sudo systemctl status go.service ● go.service - My Go Service      Loaded: loaded (/etc/systemd/system/go.service; enabled; vendor preset: enabled)      Active: active (running) since Fri 2024-08-02 11:27:48 CST; 4h 20min ago    Main PID: 211 (go) 

5.设置开机自启动

sudo systemctl enable go.service 

6.确认开机自启动

user@LAPTOP-3MT4IFSU:/mnt/c/Users/123456$ systemctl is-enabled wlk-analysis.service enabled 

7.查看运行日志最后几行

sudo journalctl -u go.service -e 

The end ~~~~

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!