hostSync/cmd/service_unix.go

48 lines
1.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//go:build !windows
// +build !windows
package cmd
import (
"os"
"os/user"
)
// tryRunAsSystemService 尝试作为系统服务运行 (非 Windows)
func tryRunAsSystemService() (bool, error) {
// 检查是否由系统服务管理器启动
// 如果是,返回 false 让主服务逻辑继续运行
// 这里只是用来检测运行环境,不影响服务的实际启动
// 在 Linux 下,无论是否由 systemd 启动,都让主服务逻辑运行
return false, nil
}
// isRunningAsSystemService 检查是否作为系统服务运行
func isRunningAsSystemService() bool {
// 检查常见的系统服务环境变量
serviceIndicators := []string{
"INVOCATION_ID", // systemd
"JOURNAL_STREAM", // systemd journal
"NOTIFY_SOCKET", // systemd notify
"MANAGERPID", // systemd
"LISTEN_PID", // systemd socket activation
}
for _, indicator := range serviceIndicators {
if os.Getenv(indicator) != "" {
return true
}
}
// 检查当前用户和进程特征
if currentUser, err := user.Current(); err == nil {
// 如果运行用户是 root 且没有 TTY可能是系统服务
if currentUser.Uid == "0" && os.Getenv("SSH_TTY") == "" && os.Getenv("TERM") == "" {
return true
}
}
return false
}