iT邦幫忙

0

Linux 系统中周期性作业

我想创建一个周期性任务:

  • 每过五分钟运行一次;
  • 运行 date 命令;
  • 将 命令的结果写入一个以当前日期命名的文件中

我是这样做的:
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”可以正常运行。

但任务作业就是一直没法运行,这个是怎么回事?

Abel iT邦新手 5 級 ‧ 2020-08-21 09:42:56 檢舉
指令的路徑最好是絕對路徑,可以依照下面大大描述
先寫成批次檔在執行。
3
japhenchen
iT邦大師 1 級 ‧ 2020-08-21 10:03:14
最佳解答

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

系統可能不知道現在的使用者是誰,現在工作路徑又在哪裡

as900 iT邦新手 1 級 ‧ 2020-08-21 10:27:44 檢舉

我试过绝对路径,还是一样的结果,我试试脚本,谢谢大家!

這個是shell變數 $(date),在crontab裡可能不認得$()是誰...

as900 iT邦新手 1 級 ‧ 2020-08-25 16:22:36 檢舉

谢谢大家,最后使用了脚本。

0

將你的指令放進去sh後,再去改cron運行該sh試試吧。

另外 */2 是指每2分運行一次喔。

另外,不要用魔術路徑「~」會比較沒事。

as900 iT邦新手 1 級 ‧ 2020-08-21 10:26:53 檢舉

我用过绝对路径,效果还是一样的,我试试脚本去,谢谢你!

0
海綿寶寶
iT邦大神 1 級 ‧ 2020-08-21 12:24:14

crontab 有兩種

不妨加個 root 加減試試看

*/2 * * * * root echo $(date) >> ~/scriptlog/$(date +%Y%m%d%H%M%S).txt

我要發表回答

立即登入回答