我有一个用Go编写的程序,它以编程方式创建和管理屏幕。下面是一个示例:
_, err := exec.Command("screen", "-S", "screen-"+strings.ToLower(name), "-X", "stuff", command+"\n").Output()
这工作正常。当我控制+C程序时,创建的屏幕保持打开状态(我想要的!但是,我已将其转换为 Ubuntu 上的后台服务。当我运行时,它会在没有警告的情况下杀死那些屏幕。附加到屏幕也不会阻止此操作(立即转到 )。但是,它不会杀死外部创建的屏幕。systemctl stop <service>[screen terminated]
这是我的:.service
[Unit]
Description=>servicename> background service
After=network-online.target
[Service]
ExecStart=/usr/lib/<servicename>/service
[Install]
WantedBy=multi-user.target
我:rules
%:
dh $@ --with systemd --parallel
override_dh_auto_install:
dh_auto_install
dh_systemd_enable || true
dh_systemd_start || true
我:control
Package: <name>
Version: 0.2
Architecture: amd64
Priority: optional
Maintainer: <me>
Description: <description>
Depends: screen, iptables
Build-Depends: dh-systemd (>=1.5)
我无法想象什么会导致这些屏幕死亡。我很确定它们没有被附加到程序中,因为它作为可执行文件运行良好。系统日志中除了“服务已停止”和“服务已启动”之外,未提及任何内容。我尝试过在root下制作屏幕,不同的用户,运行空屏幕与运行程序等。没什么值得注意的。
有什么想法吗?
一只斗牛犬
相关分类