8
8
log "github.com/sirupsen/logrus"
9
9
"github.com/spf13/viper"
10
10
"os/exec"
11
+ "sync"
11
12
"time"
12
13
)
13
14
@@ -16,7 +17,12 @@ type CrontabCmdList struct {
16
17
Crontab string
17
18
}
18
19
19
- var ccl []CrontabCmdList
20
+
21
+ var (
22
+ chanPool = make (chan int , 3 )
23
+ wg sync.WaitGroup
24
+ ccl []CrontabCmdList
25
+ )
20
26
21
27
func init () {
22
28
initLog ()
@@ -46,35 +52,49 @@ func main() {
46
52
47
53
// 遍历任务
48
54
for _ , v := range ccl {
49
-
55
+ wg . Add ( 1 )
50
56
Crontab := v .Crontab
51
57
Cmd := v .Cmd
52
-
53
58
// 添加所有配置的 Crontab
54
- id , err := c .AddFunc (Crontab , func () {
59
+ go addCrontabTask (c , Crontab , Cmd )
60
+ }
55
61
56
- f , err := exec .Command ("bash" , "-c" , Cmd ).Output ()
62
+ // 等待所有任务添加完毕
63
+ wg .Wait ()
57
64
58
- if err != nil {
59
- log .Error (err .Error ())
60
- }
61
- log .Println ("执行命令:" , Cmd , "输出:" , string (f ))
65
+ close (chanPool )
66
+ defer c .Stop ()
67
+ c .Start ()
68
+
69
+ fmt .Println ("程序已启动,请不要关闭终端" )
70
+
71
+ select {}
72
+ }
62
73
63
- })
74
+ func addCrontabTask (c * cron.Cron , Crontab , Cmd string ) {
75
+
76
+ chanPool <- 1
77
+
78
+ id , err := c .AddFunc (Crontab , func () {
79
+
80
+ f , err := exec .Command ("bash" , "-c" , Cmd ).Output ()
64
81
65
82
if err != nil {
66
- fmt .Println ("定时任务启动错误:" , err , id , Crontab , Cmd )
67
- } else {
68
- fmt .Println ("已启动监听的定时任务: " , id , "表达式:" , Crontab , "命令:" , Cmd )
83
+ log .Error (err .Error ())
69
84
}
85
+ log .Println ("执行命令:" , Cmd , "输出:" , string (f ))
70
86
71
- }
87
+ })
72
88
73
- c .Start ()
74
-
75
- fmt .Println ("Start ing " )
89
+ if err != nil {
90
+ fmt .Println ("定时任务启动错误:" , err , id , Crontab , Cmd )
91
+ } else {
92
+ fmt .Println ("已启动监听的定时任务: " , id , "表达式:" , Crontab , "命令:" , Cmd )
93
+ }
76
94
77
- select {}
95
+ //time.Sleep(time.Second)
96
+ <- chanPool
97
+ wg .Done ()
78
98
}
79
99
80
100
func initLog () {
0 commit comments