zoukankan      html  css  js  c++  java
  • [Go] gocron源码阅读-判断是否使用root用户执行

    判断是linux系统,并且uid为0,allowRoot是通过命令行传参传进来的,通过flag包解析出来的,可以使用go run node.go -h看到这些参数

        if runtime.GOOS != "windows" && os.Getuid() == 0 && !allowRoot {
            log.Fatal("Do not run gocron-node as root user")
            return
        }

    log.Fatal传入的是一个可变参数v ...interface{},并且可以传入任意类型,可变参数的使用和切片很像

    如果要真的传入一个切片,那么切片类型要和参数类型一致

        nums := []int{1, 2, 3, 4, 5}
        Fatal2(nums...)
    func Fatal2(args ...int) {
        for _, arg := range args {
            fmt.Println(arg)
        }
    }

    完整代码:

    package main
    
    import (
        "fmt"
        "log"
        "os"
        "runtime"
    )
    
    func main() {
        //可变参数
        Fatal("hello", 1)
        //如果要传切片,切片类型要和参数类型一致
        nums := []int{1, 2, 3, 4, 5}
        Fatal2(nums...)
        host, _ := os.Hostname()
        //获取当前目录
        wd, _ := os.Getwd()
        fmt.Println(
            host,
            wd,
            //获取用户ID
            os.Getuid(),
            //获取有效用户ID
            os.Geteuid(),
            //获取组ID
            os.Getgid(),
            //获取有效组ID
            os.Getegid(),
            //获取进程ID
            os.Getpid(),
            //获取父进程ID
            os.Getppid(),
            //获取环境变量的值
            os.Getenv("GOPATH"),
            //设置环境变量的值
            os.Setenv("MY_NAME", "taoshihan"),
            //改变当前工作目录
            os.Chdir("/home/"))
        if runtime.GOOS != "windows" && os.Getuid() == 0 {
            log.Fatal("Do not run gocron-node as root user")
            return
        }
    }
    func Fatal(args ...interface{}) {
        for _, arg := range args {
            fmt.Println(arg)
        }
    }
    func Fatal2(args ...int) {
        for _, arg := range args {
            fmt.Println(arg)
        }
    }
  • 相关阅读:
    A1052. Linked List Sorting (25)
    A1032. Sharing (25)
    A1022. Digital Library (30)
    A1071. Speech Patterns (25)
    A1054. The Dominant Color (20)
    A1060. Are They Equal (25)
    A1063. Set Similarity (25)
    电子码表
    矩阵键盘
    对象追踪、临时对象追踪、绝对坐标与相对坐标
  • 原文地址:https://www.cnblogs.com/taoshihan/p/11901451.html
Copyright © 2011-2022 走看看