go 中定期运行一个函数

2023-12-24

我有一个这样的函数:

func run (cmd string) [] byte {
    out,err = exec.Command(cmd).Output()
    if error!=nil { 
        log.Fatal (err) 
    }
    return out
}

我想以这种方式运行这个命令

run ("uptime") // run every 5 secs
run ("date") // run every 10 secs

我想运行这些命令并收集其输出并用它做一些事情。我将如何在 go 中做到这一点?


Use a time.Ticker https://golang.org/pkg/time/#Ticker。构建程序的方法有很多,但您可以从简单的 for 循环开始:

uptimeTicker := time.NewTicker(5 * time.Second)
dateTicker := time.NewTicker(10 * time.Second)

for {
    select {
    case <-uptimeTicker.C:
        run("uptime")
    case <-dateTicker.C:
        run("date")
    }
}

然后,如果命令可能需要比最短间隔更长的时间,您可能希望在 Goroutine 中运行这些命令,以避免 for 循环中的积压。或者,每个 goroutine 可以有自己的 for 循环和一个 Ticker。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

go 中定期运行一个函数 的相关文章

随机推荐

  • 为生产调整 Rails 性能?

    我即将部署一个基于 Rails 3 1 x 构建的应用程序 并开始运行一些性能测试 摆弄之后ab有一段时间 我在 Heroku 上看到了一些非常令人沮丧的结果 每秒产生大约 15 个请求 在本地测试时 我看到类似的结果 这确实表明这是一个应
  • org.hibernate.ObjectNotFoundException:不存在具有给定标识符的行:单表查询

    我正在使用 hibernate 进行一个简单的查询 没有连接 我想做的就是从表中检索最大 id 这项服务几个月来一直运行良好 但突然在过去两周内 我收到了可怕的 No row with the给定标识符存在错误 即使这个表包含数百万行 怎么
  • 如何使用 defaultdict 行为扩展 OrderedDict

    我有一个清单OrderedDict对象 我想将它们全部组合在一起 然后按每个中的水果属性对它们进行排序 我一直在尝试使用组合和排序它们defaultdict使用下面的代码 super dict apple defaultdict list
  • 如何在django中操作用户上传的文件而不保存它?

    我正在制作一个应用程序 它从 csv 文件获取数据并使用它生成图表 所有文件都包含相同的结构 由于服务器价格的原因 我决定不存储这些文件 我现在将使用 heroku 来托管这个应用程序 这是一个 Django 应用程序 我想知道如何才能使用
  • 如何切换到新的远程git存储库

    我最近将一个存储库克隆到本地驱动器 但现在我尝试将所有更改推送到一个完整的新存储库 然而 git 不断告诉我权限被拒绝 这是因为它正在尝试推送到最初克隆的存储库 DETAILS 我最初克隆自https github com taylonr
  • XSLT:如何查找节点的唯一子节点的数量?

    我的 XML 看起来像这样
  • 从 P7M 获取签名内容

    我正在使用 java jdk 1 7 和 bouncycastle 库来获取 p7m 签名文件的内容 在构建路径中 我添加了以下文件 bcpkix jdk15on 160 jar commons io 2 1 jar log4j 1 2 1
  • 服务器端控件的输入类型

    我正在使用 asp net 构建 ipad web 应用程序 我知道使用input type email 将导致 iPad 上的键盘布局发生更改 以便比默认设置更轻松地处理电子邮件输入 问题是我正在使用服务器端文本框控件 有谁知道如何让服务
  • 如何锁定滑块并防止用鼠标将值更新到 dat.GUI 菜单中

    我尝试实现一种方法来防止用鼠标更新值 实际上当three js动画已开始 通过单击按钮启动 目前 我有以下内容dat GUI menu 单击 开始 按钮后 我想阻止用户用鼠标修改参数 Rotation x and Rotation y 这是
  • 列表作为字典中不可 JSON 序列化的条目

    我需要将列表 或 numpy 数组 保存为 JSON 文件中的条目之一 我收到 不可 JSON 序列化 错误 并且我不知道如何修复它 以及为什么当我手动将列表传递到字典时我没有收到它 My code def get col stats co
  • 使用 AlaSQL 和 JQuery 加载 CSV 文件

    我正在构建一个基于 HTML 的应用程序 用于使用 AlaSQL 查询导入的 CSV 文件 我开始于这个演示 http alasql org demo 008file 并尝试通过设置来实现相同的行为onChange事件通过 JQuery 而
  • 给定多个节点,求 AVL 树的最小和最大高度?

    给定一定数量的节点 是否有公式可以计算 AVL 树的最大和最小高度 例如 课本问题 3 个节点 5 个节点和 7 个节点的 AVL 树的最大 最小高度是多少 课本答案 3 个节点的 AVL 树的最大 最小高度为 2 2 5 个节点的 AVL
  • 如何在 IntelliJ 中配置 dagger

    我下载了 dagger 因为它似乎是 Android 中依赖注入的一个不错的选择 但我在集成编译器时遇到了一些麻烦 有关于正确设置的任何提示吗 我遵循了有关 android 注释的说明 因为这个项目似乎很相似 但这对匕首不起作用 我做了什么
  • 在 p:dataTable 上执行搜索后,p:dataTable 中的 p:fileDownload 不起作用(仅刷新页面)

    我有一个 JSF PrimeFaces Web 应用程序 在一页中
  • Eclipse 中的“与编辑器链接”功能有什么作用?

    我是 Eclipse 新手 也不了解 NetBeans 我正在阅读 eclipse 教程 但我很困惑 无法理解 与编辑器链接 到底是做什么的 Eclipse gt 帮助中说 选择本地工具栏或其中之一的视图菜单中的 与编辑器链接 按钮 导航视
  • 套接字传递十六进制值

    我正在尝试将套接字中的字符串值传递到另一台服务器 另一个服务器应该接收十六进制格式的值 即 如果我的字符串在服务器上是 s 600185838e 它应该收到 60 01 85 83 8e 但是我发送的这些值已转换为 ASCII 并且不是所需
  • 将文本输入放在单选按钮的标签内?

    我正在尝试创建一个指定一堆选项的单选组 以及一个带有要指定的文本输入的额外选项 其他 我正在使用的这个特定单选按钮的代码是
  • 静态成员中的通用参数声明

    为什么不允许定义这样的静态成员 private static final
  • 再次针对特定异常启用中断

    我是 Visual Studio 的新手 我现在正在编程 当我在 Visual Studio 的调试器中启动程序时 一切正常 当我按下一个按钮时 它集中了我的代码并弹出一个框 带有指向有错误的行的箭头 说明错误是什么 但我取消选中了上面的检
  • go 中定期运行一个函数

    我有一个这样的函数 func run cmd string byte out err exec Command cmd Output if error nil log Fatal err return out 我想以这种方式运行这个命令 r