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)
        }
    }
  • 相关阅读:
    js中删除数组元素的几种方法
    js中的prototype
    分布式服务框架 Zookeeper -- 管理分布式环境中的数据
    angularjs事件传递$on、$emit和$broadcast
    cron表达式
    angularjs中的时间格式化过滤
    angularjs中的$q
    IOS 错误
    Swift 错误
    IOS 控件
  • 原文地址:https://www.cnblogs.com/taoshihan/p/11901451.html
Copyright © 2011-2022 走看看