在Ubuntu中如何使用crontab执行Golang的.go文件

在Ubuntu中如何使用crontab执行Golang的.go文件 你好,我是Go语言的新手。我刚刚使用以下代码创建了一个程序文件。

package main
import (
	"database/sql"
	_ "mysql-master"
	"fmt"
)
func main() {
	db, err := sql.Open("mysql", "user:pass@/database?charset=utf8")
	checkErr(err)
	// insert
	stmt, err := db.Prepare("INSERT userinfo SET username=?,departname=?,created=?")
  checkErr(err)
  res, err := stmt.Exec("astaxie", "astaxie", "2012-12-09")
  checkErr(err)
  id, err := res.LastInsertId()
  checkErr(err)
  fmt.Println(id)
}

func checkErr(err error) {
    if err != nil {
        panic(err)
    }
}

当我使用命令 go run insert-data.go 时,它会向数据库中插入新行。

我如何在Ubuntu的crontab中使用相同的命令?这可能吗? 我知道有更适合cron的方法,但我希望这样使用。

请帮助我


更多关于在Ubuntu中如何使用crontab执行Golang的.go文件的实战教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

它正常工作了,谢谢

更多关于在Ubuntu中如何使用crontab执行Golang的.go文件的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


您应该构建程序生成可执行文件。具体操作如下:

$ go build insert-data.go

这将生成一个名为 insert-data 的可执行文件。请将此可执行文件的完整路径添加到您的定时任务中。

同时建议查阅基础文档《如何编写Go代码》

在Ubuntu中使用crontab执行Go程序时,你需要先编译Go文件生成可执行文件,然后在crontab中调用该可执行文件。以下是具体步骤:

  1. 编译Go文件: 在终端中运行以下命令编译你的Go程序:

    go build -o insert-data insert-data.go
    

    这将生成名为insert-data的可执行文件。

  2. 设置crontab任务: 打开crontab编辑器:

    crontab -e
    

    添加一行来调度执行。例如,每天凌晨2点运行:

    0 2 * * * /path/to/your/insert-data
    

    确保替换/path/to/your/为可执行文件的实际路径。

完整示例: 假设你的Go文件位于/home/user/projects/目录,编译后生成insert-data。在crontab中添加:

0 2 * * * /home/user/projects/insert-data

注意事项

  • 确保可执行文件具有执行权限:chmod +x /home/user/projects/insert-data
  • 如果程序依赖环境变量(如GOPATH),在crontab中设置它们,例如:
    0 2 * * * export GOPATH=/your/gopath && /home/user/projects/insert-data
    
  • 使用go run在crontab中不可靠,因为它依赖临时文件构建,可能引发权限或路径问题。编译为二进制文件是标准做法。

通过这种方式,cron将按计划执行你的Go程序。

回到顶部