Files
basics/system/utils/utils_linux.go
spiritlhl feaada0a57 update
2024-05-05 02:02:51 +00:00

99 lines
2.2 KiB
Go

package utils
import (
"bytes"
"os"
"os/exec"
"strings"
)
// GetCpuCache 查询CPU三缓
func GetCpuCache() string {
return ""
}
func CheckCPUFeatureWindows(subkey string, value string) (string, bool) {
return "", false
}
func CheckVMTypeWithWIMC() string {
return ""
}
func GetLoad1() float64 {
return 0
}
// GetTCPAccelerateStatus 查询TCP控制算法
func GetTCPAccelerateStatus() string {
cmd := exec.Command("sysctl", "-n", "net.ipv4.tcp_congestion_control")
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
if err != nil {
return ""
} else {
return out.String()
}
}
// 解析时区信息
func parseTimeZone(output string) string {
// 在输出中查找 Time zone 字符串
index := strings.Index(output, "Time zone")
if index != -1 {
// 如果找到,则截取 Time zone 字符串后的部分
output = output[index+len("Time zone")+1:]
// 找到冒号后的第一个空格,分割字符串获取时区信息
parts := strings.SplitN(output, " ", 2)
if len(parts) > 1 {
return strings.TrimSpace(parts[1])
}
}
return ""
}
// GetTimeZone 获取当前时区
func GetTimeZone() string {
var CurrentTimeZone string
output, err := exec.Command("timedatectl", "|", "grep", "Time zone").Output()
if err == nil && strings.Contains(string(output), "Time zone") {
timeZone := parseTimeZone(string(output))
CurrentTimeZone = timeZone
} else {
output, err = exec.Command("date", "+%Z").Output()
if err == nil {
timeZone := strings.TrimSpace(string(output))
CurrentTimeZone = timeZone
}
}
return CurrentTimeZone
}
// GetPATH 检测本机的PATH环境是否含有对应的命令
func GetPATH(key string) (string,bool) {
// 指定要搜索的目录列表
dirs := []string{"/usr/local/bin", "/usr/local/sbin", "/usr/bin", "/usr/sbin", "/sbin", "/bin", "/snap/bin"}
// 循环遍历每个目录
for _, dir := range dirs {
// 检查目录是否存在
_, err := os.Stat(dir)
if os.IsNotExist(err) {
continue
}
cmd := exec.Command("ls", dir)
output, err := cmd.Output()
if err != nil {
continue
}
files := strings.Split(string(output), "\n")
for _, file := range files {
if file == key {
return dir, true
}
}
}
return "", false
}