当前位置: 首页 > news >正文

go 每天定时任务 --chatGPT

问:clearLog(hour,cmds),定时执行shell 命令,hour 为每天的几点,cmds 为linux命令数组字符串(如 1,{"ls","cd"})

gpt:

要编写一个 Go 函数 `clearLog`,该函数可以定时执行 shell 命令,并且接受每天的几点和命令数组字符串作为参数,你可以使用 Go 的 `time` 包来实现定时执行以及 `exec` 包来执行 shell 命令。下面是一个示例:

```go
package main

import (
    "fmt"
    "os"
    "os/exec"
    "strings"
    "time"
)

func clearLog(hour int, cmdsStr string) {
    cmds := strings.Split(cmdsStr, ",")
    if len(cmds) == 0 {
        fmt.Println("命令数组不能为空")
        return
    }

    // 计算下一次执行的时间
    now := time.Now()
    nextRun := time.Date(now.Year(), now.Month(), now.Day(), hour, 0, 0, 0, now.Location())
    if now.After(nextRun) {
        nextRun = nextRun.Add(24 * time.Hour)
    }

    ticker := time.NewTicker(nextRun.Sub(now))

    for {
        select {
        case <-ticker.C:
            for _, cmd := range cmds {
                cmd = strings.TrimSpace(cmd)
                if cmd != "" {
                    fmt.Printf("执行命令: %s\n", cmd)
                    err := executeShellCommand(cmd)
                    if err != nil {
                        fmt.Printf("执行命令出错: %v\n", err)
                    }
                }
            }
            // 重新计算下一次执行的时间
            nextRun = nextRun.Add(24 * time.Hour)
            ticker.Reset(nextRun.Sub(time.Now()))
        }
    }
}

func executeShellCommand(command string) error {
    cmd := exec.Command("bash", "-c", command)
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    return cmd.Run()
}

func main() {
    hour := 1 // 每天的几点执行,范围 0 到 23
    cmds := "ls, cd /path/to/directory" // 命令数组字符串,用逗号分隔

    clearLog(hour, cmds)
}
```

在这个示例中,我们首先计算了下一次执行的时间,确保它是将来的时间。然后使用 `time.NewTicker` 创建一个定时器,以在下一次执行的时间触发。在每次触发时,我们执行提供的命令数组中的每个命令。执行命令的函数 `executeShellCommand` 使用 Go 的 `os/exec` 包来运行 shell 命令。

请替换 `hour` 和 `cmds` 变量的值为你的实际需求,以及命令数组字符串中的命令列表。然后,在 `main` 函数中调用 `clearLog` 函数,它将在每天的指定时间执行命令。

相关文章:

go 每天定时任务 --chatGPT

问&#xff1a;clearLog(hour&#xff0c;cmds),定时执行shell 命令&#xff0c;hour 为每天的几点&#xff0c;cmds 为linux命令数组字符串&#xff08;如 1&#xff0c;{"ls","cd"}&#xff09; gpt: 要编写一个 Go 函数 clearLog&#xff0c;该函数可…...

Lightdb 23.3 plorasql函数支持DML

开篇立意 oracle在函数中使用dml语句时&#xff0c;有两者情况。即&#xff1a;&#xff08;1&#xff09;直接使用select调用该函数&#xff1b;&#xff08;2&#xff09;在匿名块中调用该函数。 针对第一种情况我们测试一下 简单的函数&#xff1a; create table nested_t…...

电容笔值不值得买?开学季比较好用的电容笔

眼看着新学期即将到来&#xff0c;到底应该选择什么样的电容笔&#xff1f;一款原装的苹果Pencil&#xff0c;就卖到了将近一千块&#xff0c;这对于很多人来说&#xff0c;都是一个十分昂贵的价格。事实上&#xff0c;由于平替电容笔的价格非常便宜&#xff0c;只要一二百元就…...

Mybatis 框架 ( 五 ) 分页

4.6.分页 Mybatis-plus 内置分页插件, 并支持多种数据库 官网 : 分页插件 | MyBatis-Plus (baomidou.com) 4.6.1.增加拦截器 通过 MapperScan 指定 mapper接口的路径 import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plug…...

Python模板注入

概念 发生在使用模板引擎解析用户提供的输入时。模板注入漏洞可能导致攻击者能够执行恶意代码或访问未授权的数据。 模板引擎可以让&#xff08;网站&#xff09;程序实现界面与数据分离&#xff0c;业务代码与逻辑代码分离。即也拓宽了攻击面&#xff0c;注入到模板中的代码可…...

Java常用的设计模式

单例模式&#xff08;Singleton Pattern&#xff09;: 确保一个类只有一个实例&#xff0c;并提供一个全局访问点。示例&#xff1a;应用程序中的配置管理器。 工厂模式&#xff08;Factory Pattern&#xff09;: 用于创建对象的模式&#xff0c;封装对象的创建过程。示例&…...

攻防世界-WEB-Web_php_include

打开靶机 通过代码审计可以知道&#xff0c;存在文件包含漏洞&#xff0c;并且对伪协议php://进行了过滤。 发现根目录下存在phpinfo 观察phpinfo发现如下&#xff1a; 这两个都为on 所以我们就可以使用data://伪协议 payload如下&#xff1a; - ?pagedata://text/plain,…...

angular中多层嵌套结构的表单如何处理回显问题

最近在处理angular表单时&#xff0c;有一个4层结构的表单。而且很多元素时动态生成&#xff0c;如下&#xff1a; this.validateFormthis.fb.group({storeId: ["test12"],storeNameKey:[],config:this.fb.group({ tableSize:this.fb.group({toggle:[false],groupSiz…...

Leetcode646. 最长数对链

Every day a Leetcode 题目来源&#xff1a;646. 最长数对链 解法1&#xff1a;动态规划 定义 dp[i] 为以 pairs[i] 为结尾的最长数对链的长度。 初始化时&#xff0c;dp 数组需要全部赋值为 1。 计算 dp[i] 时&#xff0c;可以先找出所有的满足 pairs[i][0]>pairs[j]…...

Windows 下安装NPM

第一步: 下载node.js的windows版 当前最新版本是https://nodejs.org/dist/ 第二步:设置环境变量 把node.exe所在目录加入到PATH环境变量中。 配置成功后可以在CMD中通过node --version 看到node.js对应的版本号 C:\Users\fn>node --version v6.10.2 第三步: 安装git 直接…...

【ARM CoreLink 系列 2 -- CCI-400 控制器简介】

文章目录 CCI-400 介绍DVM 机制介绍DVM 消息传输过程TOKEN 机制介绍 下篇文章&#xff1a;ARM CoreLink 系列 3 – CCI-550 控制器介绍 CCI-400 介绍 CCI&#xff08;Cache Coherent Interconnect&#xff09;是ARM 中 的Cache一致性控制器。 CCI-400 将 Interconnect 和coh…...

LeetCode(力扣)77. 组合Python

LeetCode77. 组合 题目链接代码 题目链接 https://leetcode.cn/problems/combinations/description/ 代码 class Solution:def combine(self, n: int, k: int) -> List[List[int]]:result []return self.backtracking(n, k, 1, [], result)def backtracking(self, n, k…...

uniapp h5 微信缓存,解决版本更新还是旧版本

文章目录 一、微信缓存是什么&#xff1f;二、如何解决1.打包入口文件解决2.给请求url加时间戳3.给打包的js文件添加时间戳并修改打包后的css文件夹 总结 一、微信缓存是什么&#xff1f; 微信缓存是指微信客户端为了提高用户的使用体验&#xff0c;会在用户使用微信过程中将一…...

Nacos——Distro一致性协议

Nacos——Distro一致性协议 1. 理论 一致性一直都是分布式系统中绕不开的话题。根据CAP中&#xff0c;要么CP(保证强一致性牺牲可用性)&#xff0c;要么AP(最终一致性来保证可用性)&#xff0c;在市面上也有几种一致性算法&#xff0c;像Paxos&#xff0c;Raft&#xff0c;Zoo…...

大模型参数高效微调PEFT的理解和应用

简介 近年的大型语言模型&#xff08;也被称作基础模型&#xff09;&#xff0c;大多是采用大量资料数据和庞大模型参数训练的结果&#xff0c;比如常见的ChatGPT3有175B的模型参数量。随着Large Language Model(LLM)的横空出世&#xff0c;网络模型对常见问题的解答有了很强的…...

工作游戏时mfc140u.dll丢失的解决方法,哪个方法可快速修复mfc140u.dll问题

在 Windows 操作系统中&#xff0c;mfc140u.dll 文件是非常重要的一个组件&#xff0c;许多基于 MFC&#xff08;Microsoft Foundation Classes&#xff09;的程序都需要依赖这个文件。然而&#xff0c;有些用户在运行这些程序时可能会遇到mfc140u.dll丢失的问题&#xff0c;导…...

选择排序——直接选择排序

直接选择排序&#xff1a;&#xff08;以重复选择的思想为基础进行排序&#xff09; 1、简述 顾名思义就是选出一个数&#xff0c;再去抉择放哪里去。 设记录R1&#xff0c;R2…&#xff0c;Rn&#xff0c;对i1&#xff0c;2&#xff0c;…&#xff0c;n-1&#xff0c;重复下…...

【C++基础】观察者模式(“发布-订阅”模式)

本文参考&#xff1a;观察者模式 - 摩根斯 | 爱编程的大丙 观察者模式允许我们定义一种订阅机制&#xff0c;可在对象事件发生时通知所有的观察者对象&#xff0c;使它们能够自动更新。观察者模式还有另外一个名字叫做“发布-订阅”模式。 发布者&#xff1a; 添加订阅者&…...

从业多年,我总结出软件测试工程师必须掌握的技能,你不可错过!

经常会有小伙伴询问&#xff1a;“测试工程师有哪些必须要掌握的技能&#xff1f;”这是一个非常大的课题&#xff0c;因为每个人从事的行业不同、岗位不同&#xff0c;需要掌握的技能自然也不一样。 今天小编就从不同岗位、不同行业两个大方面&#xff0c;来讲讲软件测试工程师…...

【nerfStudio】5-nerfStudio导出3D Mesh模型

几何图形的导出 在这里我们将介绍如何从nerfstudio中导出点云和网格。您将使用的主要命令是ns-export。我们将点云导出为.ply文件,纹理网格导出为.obj文件。 导出网格 1. TSDF融合 TSDF(截断有符号距离函数)融合是一种使用深度图像提取表面网格的算法。此方法适用于所有…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API&#xff0c;让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API&#xff0c;你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...