我想创建一个周期性任务:
我是这样做的:
root 运行 crontab -e 去创建作业
[root@servera ~]# crontab -e
crontab: installing new crontab
[root@servera ~]# crontab -l
*/2 * * * * echo $(date) >> ~/scriptlog/$(date +%Y%m%d%H%M%S).txt
直接在 shell 中运行 “echo $(date) >> ~/scriptlog/$(date +%Y%m%d%H%M%S).txt”可以正常运行。
但任务作业就是一直没法运行,这个是怎么回事?
1、把你的 “echo $(date) >> ~/scriptlog/$(date +%Y%m%d%H%M%S).txt” 做成sh檔
內容如下例,比如存成 /home/abcde/echotime.sh (類似DOS批次檔)
#!/bin/bash
echo $(date) >> /home/abcde/scriptlog/$(date +%Y%m%d%H%M%S).txt
2、幫這個 sh 檔加上執行權限
chmod +x /home/abcde/echotime.sh
3、把 sh 檔加進CRONTAB */5 * * * * 指每5分鐘跑一次
*/5 * * * * bash /home/abcde/echotime.sh
bash是我慣用的shell,你可以改成你要的,包括PYTHON
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
crontab 裡也是一樣加入,下例是半夜11點整執行
0 23 * * * python3 /var/www/html/myjob.py
不要在sh跟crontab裡使用相對路徑,如
./myjob.sh
~/myjob.sh
系統可能不知道現在的使用者是誰,現在工作路徑又在哪裡
將你的指令放進去sh後,再去改cron運行該sh試試吧。
另外 */2 是指每2分運行一次喔。
另外,不要用魔術路徑「~」會比較沒事。