亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Systemctl(?) 殺死分離的屏幕

Systemctl(?) 殺死分離的屏幕

Go
函數式編程 2022-08-01 15:28:04
我有一個用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 serviceAfter=network-online.target[Service]ExecStart=/usr/lib/<servicename>/service[Install]WantedBy=multi-user.target我:rules%:    dh $@ --with systemd --paralleloverride_dh_auto_install:    dh_auto_install    dh_systemd_enable || true    dh_systemd_start || true我:controlPackage: <name>Version: 0.2Architecture: amd64Priority: optionalMaintainer: <me>Description: <description>Depends: screen, iptablesBuild-Depends: dh-systemd (>=1.5)我無法想象什么會導致這些屏幕死亡。我很確定它們沒有被附加到程序中,因為它作為可執行文件運行良好。系統日志中除了“服務已停止”和“服務已啟動”之外,未提及任何內容。我嘗試過在root下制作屏幕,不同的用戶,運行空屏幕與運行程序等。沒什么值得注意的。有什么想法嗎?
查看完整描述

1 回答

?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

systemd默認情況下,如果創建進程(Go 程序)的主服務(Go 程序)退出,則終止所有進程(屏幕)。請注意,這不僅是子進程,而且是同一 cgroup 中的任何進程。這是為了確保如果服務崩潰,它沒有剩余的進程。

可以使用單元文件中的鍵來控制此行為,此處對此進行了介紹。盡管不建議將其設置為 或 (以使屏幕不受管理并逃避服務生命周期管理)。KillMode=.serviceprocessnonesystemd


查看完整回答
反對 回復 2022-08-01
  • 1 回答
  • 0 關注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號