golang 計劃任務和windows下服務安裝,刪除

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

網站開始使用的是win伺服器系統計劃任務,添加 XX.bat,設定執行時間

xx.bat中的內容:

C:\php\php.exe -q C:\WWW\api\script\AutoCancelOrder.php

目前這種方式是可以正常啟動並執行,最近在看了golang以後,打算使用golang來重新計劃任務

cron.go代碼如下,go run 之前需要 go get -u github.com/jakecoffman/cron

package main

import (
"fmt"
"github.com/jakecoffman/cron"
"io/ioutil"
"net/http"
"net/url"
"os"
"time"
)

func main() {
var c = cron.New()
spec := "0 41 "
c.AddFunc(spec, func() {
autoTongji()
}, "autoTongji")

spec = "*/15 * 9-17 * * ?"c.AddFunc(spec, func() {    autoFddsign()}, "autoFddsign")c.Start()select {}

}

//每日資料統計 0:30執行一次
func autoTongji() {
log := fmt.Sprintf("--Tongji 執行時間:%s, \n", time.Now().Format("2006-01-02 15:04:05"))
writelog(log)
}

//法大大簽章
func autoFddsign() {
log1 := fmt.Sprintf("--FddSign 執行時間:%s, \n", time.Now().Format("2006-01-02 15:04:05"))
writelog(log1)
}

func request(request string) (rtn string) {
u, := url.Parse(request)
q := u.Query()
q.Set("token", "site@@crontab")
u.RawQuery = q.Encode()
reponse,
:= http.Get(u.String())
result, _ := ioutil.ReadAll(reponse.Body)
reponse.Body.Close()
result_str := string(result)
return result_str
}

//寫入日誌
func writelog(log string) {
logdir := "log"

var path stringif os.IsPathSeparator('\\') {    path = "\\"} else {    path = "/"}dir, _ := os.Getwd()os.Mkdir(dir+path+logdir, os.ModePerm)file_path := dir + path + logdir + path + time.Now().Format("2006-01") + ".txt"_, err := os.Stat(file_path)if err != nil {    f, _ := os.Create(file_path)    defer f.Close()}f, _ := os.OpenFile(file_path, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644)f.WriteString(log)f.Close()

}

func checkErr(err error) {
if err != nil {
fmt.Println(err.Error())
panic(err)
}
}
運行結果查看:


TIM20170602091555.jpg

第二步使用nssm安裝和刪除服務
install.bat 安裝服務,此處要用絕對路徑

nssm install ddAuto F:\golang\src\cron.exe
nssm start ddAuto

delete.bat:刪除服務
nssm stop ddAuto
nssm remove ddAuto

代碼貼出來有點變形了。。將就這看。。。

至於 spec = "/15 9-17 ?" 時間的設定,可以參考下linux crontab的使用方法,golang cron 比 crontab多了個秒單位設定

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.