Golang Go语言中 如何用 systemd 在图形界面下,开机启动我用户目录内的程序

发布于 1周前 作者 sinazl 来自 Go语言

[Unit] Description=cow proxy After = network.target

[Service] Type=simple User=psuwgipgf ExecStart=/home/psuwgipgf/cow/cow -rc="/home/psuwgipgf/.cow/rc" Restart=always

[Install] WantedBy=graphical.target ########### 用在 vps 上的程序还有配置文件都在 root 目录下,可以启动。为什么在本地启动不了。 vps Ubuntu 16.04 service 本地是 Ubuntu 16.04 desktop


Golang Go语言中 如何用 systemd 在图形界面下,开机启动我用户目录内的程序

更多关于Golang Go语言中 如何用 systemd 在图形界面下,开机启动我用户目录内的程序的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

先检查下有没有输入错误,比如路径不一样,然后运行 systemctl status <你的服务名>查看日志

更多关于Golang Go语言中 如何用 systemd 在图形界面下,开机启动我用户目录内的程序的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Golang开发中,如果你希望在图形界面下使用systemd来开机启动位于用户目录内的程序,可以按照以下步骤进行配置:

  1. 编写systemd服务单元文件: 创建一个新的systemd服务单元文件,例如~/myprogram.service,内容如下:

    [Unit]
    Description=My Go Program
    
    [Service]
    ExecStart=/usr/bin/env bash -c "exec /path/to/your/go/binary"
    WorkingDirectory=/home/yourusername
    User=yourusername
    Environment=DISPLAY=:0 XAUTHORITY=/home/yourusername/.Xauthority
    Restart=always
    
    [Install]
    WantedBy=graphical.target
    

    注意:将/path/to/your/go/binary替换为你的Go程序的实际路径,yourusername替换为你的用户名。

  2. 将服务单元文件复制到systemd目录: 使用cp ~/myprogram.service /etc/systemd/system/命令将其复制到系统级systemd目录。

  3. 重新加载systemd并启用服务

    sudo systemctl daemon-reload
    sudo systemctl enable myprogram.service
    sudo systemctl start myprogram.service
    
  4. 验证服务是否启动: 使用systemctl status myprogram.service检查服务状态,确保它已正确启动。

通过上述步骤,你可以在图形界面下,利用systemd实现Go语言程序的开机自启动。确保你的Go程序具有图形界面显示权限,并且systemd服务配置正确指向了你的用户目录和必要的环境变量。

回到顶部