2015年9月28日 星期一

Windows 跑 例行性工作排程

在windows7工作環境中,我還是習慣使用cygwin這種unix like的命令行來工作
如何在cygwin使用工作排程呢?

方法一 、使用cron-config安裝(失敗)
1. 透過cygwin 的GUI安裝cron (Vixie Cron) => cygrunsrv已安裝
2. cygwin:設定cron-config
$ cron-config
running as yourself? => 選no
3. 編輯cron file
$ crontab -e
4. 使用 $cygrunsrv -S-E 來手動開關 cron 服務
$ cygrunsrv -S cron # 開啟
$ cygrunsrv -E cron # 關閉

方法二、使用cygrunsrv將cron安裝成一個windows的服務(失敗)
$ cygrunsrv -I cron -p /usr/sbin/cron -a -D
$ net start cron
與方法一會衝突、用其中一個啟動另外一個方法會開/關不了

使用方法一和方法二cronjob雖然每分鐘會嘗試執行,但是不會正確執行
$ cronevents # 檢查cronjob執行狀態
2015/09/25 11:48:01 [SYSTEM] /usr/sbin/cron: PID 87772: (user) CMD (/usr/bin/bash /home/user/test.sh > /dev/null 2>&1)
2015/09/25 11:48:01 [SYSTEM] /usr/sbin/cron: PID 87772: (CRON) error (can't switch user context)
在crontab -e 中把執行使用者改成cygrunsrv依然不行
* * * * * cygrunsrv /usr/bin/bash /home/user/test.sh
(放棄)

方法三、使用windows 7 原生的"工作排程器"
使用[工作排程器],請依序按一下 [開始] 按鈕、[控制台]、[系統及安全性] 及 [系統管理工具],然後按兩下 [工作排程器]
點右邊"動作"=> "建立工作" 加入
填寫
一般 => 名稱
觸發程序 => 新增 => 勾選"重複工作每隔" => 選"5 分鐘"後手動改 "1分鐘" (和Linux crontab一樣最少是一分鐘) => 持續時間:不限制
動作 => 新增 => 程式或指令碼 =>
C:\cygwin64\bin\bash.exe -l -c "/home/user/test.sh"

建立後點左邊 =>工作排程器程式庫 => 可以找到你剛剛新增的工作,然後啟用/停用

參考資料:
http://stackoverflow.com/questions/707184/how-do-you-run-a-crontab-in-cygwin-on-windows How do you run a crontab in Cygwin on Windows?
http://yuanann.pixnet.net/blog/post/13512677-cygwin-%E5%AE%89%E8%A3%9Dcrontab-%E6%AD%A5%E9%A9%9F  cygwin 安裝crontab 步驟 (失敗)
http://www.7tutorials.com/advanced-users-task-creation-task-scheduler How to Create Advanced Tasks with the Task Scheduler




沒有留言:

張貼留言