有没有什么方法能让 go 写的命令行程序在 windows 上以服务的方式运行 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
darknoll

有没有什么方法能让 go 写的命令行程序在 windows 上以服务的方式运行

  •  
  •   darknoll 2021 年 6 月 11 日 5885 次点击
    这是一个创建于 1780 天前的主题,其中的信息可能已经有所发展或是发生改变。
    26 条回复    2022-08-09 12:07:38 +08:00
    userff
        1
    userff  
       2021 年 6 月 11 日
    在 win 上用 nssm 跑过 nginx 、php-cgi 、python 打包的可执行程序
    a342191555
        2
    a342191555  
       2021 年 6 月 11 日 via iPhone
    github.com/chai2010/winsvc 这个包可以

    如果用网络访问的话,记得还要在防火墙添加例外
    iminto
        3
    iminto  
       2021 年 6 月 11 日   1
    用自带的 sc create 命令就行,也可以用一些第三方的 wrapper,比如 winsw
    catcn
        4
    catcn  
       2021 年 6 月 11 日
    2 楼的这个是正解,用过。
    chenyi
        5
    chenyi  
       2021 年 6 月 11 日
    nssm 用过,可以实现
    Rwing
        6
    Rwing  
       2021 年 6 月 11 日   2
    不考虑一下 C#吗,也可以跨平台,独立文件分发,不用运行时。最主要的,可以很爽的用泛型
    zengming00
        7
    zengming00  
       2021 年 6 月 11 日
    如果你还玩 nodejs 的话,pm2 是个不错的选择,因为在所有平台都通用
    直接一条命令搞定(注意你的程序与参数之间有个减号)
    pm2 start 你的程序 -- 传递给你程序的参数
    tsungkang
        8
    tsungkang  
       2021 年 6 月 11 日
    纯粹只考虑 windows 服务的话,可以直接 golang.org/x/sys/windows/svc 一把梭
    araraloren
        9
    araraloren  
       2021 年 6 月 11 日
    @Rwing 很爽的泛型 哈哈。。
    anubu
        10
    anubu  
       2021 年 6 月 11 日   1
    对比过 nssm 和 winsw,nssm 虽然较久没更新,但更好用。最简单的方法是使用 powershell 命令,两三句命令就能搞定,如果不考虑大量程序管理维护的话,是不错的方法。
    dream4ever
        12
    dream4ever  
       2021 年 6 月 11 日
    @zengming00 PM2 +1,公司买的阿里云服务器装的是 Windows Server 2012,之前解决了 PM2 在注销远程桌面连接后会自动退出的问题后,就彻底省心了,PM2 从几年前用到现在,很方便。
    iseki
        13
    iseki  
       2021 年 6 月 11 日
    @anubu ,一直想不起来这个好用的叫什么名字,这下好了
    mmtromsb456
        14
    mmtromsb456  
       2021 年 6 月 11 日
    PhaSelEza
        15
    PhaSelEza  
       2021 年 6 月 11 日   1
    如果只是要后台运行,而且程序不需要接受命令行输入的话,可以用:
    if len(os.Args) == 1 {
    exec.Command("cmd.exe", "/C", "start", "/B", os.Args[0], "flag").Run()
    os.Exit(0)
    }
    syscall.NewLazyDLL("kernel32.dll").NewProc("FreeConsole").Call()
    0o0O0o0O0o
        16
    0o0O0o0O0o  
       2021 年 6 月 11 日 via iPhone
    建议用 winsw 专门来做这个事
    johnsona
        17
    johnsona  
       2021 年 6 月 11 日 via iPhone
    nssm
    anubu
        18
    anubu  
       2021 年 6 月 11 日
    @mmtromsb456 是的,简单够用,无额外依赖。
    g00001
        19
    g00001  
       2021 年 6 月 11 日
    emric
        20
    emric  
       2021 年 6 月 11 日
    我写过 bat 就那么几句命令,简单的很。
    https://gist.github.com/17/8853168
    bigtan
        21
    bigtan  
       2021 年 6 月 11 日 via iPhone
    @mmtromsb456 一直用 nssm,这个 cmdlet 感觉更优雅
    noroot
        22
    noroot  
       2021 年 6 月 11 日
    codehz
        23
    codehz  
       2021 年 6 月 11 日 via Android
    @PhaSelEza 这样会话退出以后还是会被干掉的(
    ch2
        24
    ch2  
       2021 年 6 月 11 日
    nssm 是最好的,各种都试过
    lqzhgood
        25
    lqzhgood  
       2021 年 6 月 12 日 via Android
    Pm2 windows 上服务有坑~
    只能说可用
    loveqianool
        26
    loveqianool  
       2022 年 8 月 9 日
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1704 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 74ms UTC 16:16 PVG 00:16 LAX 09:16 JFK 12:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86