搜尋

首頁  >  問答  >  主體

bash - Crontab 中自動執行後沒有生效

使用crontab 新增一個定時任務

* * * * /bin/bash -l -c ' ~/.script.sh'

這個腳本的作用是統計一些資料並產生報表檔.

這個腳本每分鐘執行一次,但是實際操作中crontab並沒有像預期的那樣產生報表檔.

然而當我手動執行這個命令時 "~/.script.sh" 生成檔並退出.

有兩個疑問:

1: 為什麼crontab 沒有執行我的腳本. 查看了crontab 日誌(/var/log/crond)輸出: 美 5 20:36:01 localhost CROND[27260]: (ernest) CMD (/bin/bash -l -c '~/script.sh') 沒有發現任何異常.

2: 會不會是我執行腳本的環境 不一樣呢? 測試了一下 "* * * * * /bin/bash -l -c 'source ~/.bash_profile && ~/.script.sh'" 也不行.

各位大牛們有沒有遇到跟我一樣的問題呢?

过去多啦不再A梦过去多啦不再A梦2805 天前861

全部回覆(5)我來回復

  • 过去多啦不再A梦

    过去多啦不再A梦2017-04-24 16:01:00

    手動運行腳本生效,crontab不生效最最最最最最最最最最常見的原因是: 你在腳本裡面的指令沒有使用絕對路徑。

    回覆
    0
  • 習慣沉默

    習慣沉默2017-04-24 16:01:00

    用絕對路徑試試.因為~对不同的用户会解释成不同的$HOME.
    一般是在script.sh裡面最開始的地方加上

    cd /home/username
    . .profile
    

    回覆
    0
  • PHPz

    PHPz2017-04-24 16:01:00

    如果你是 sudo crontab -e 建立的crontab指令,那麼執行的使用者是root, 這裡的~也會被解析為/root 如果你沒有用sudo,那應該沒問題。

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-24 16:01:00

    雷雷

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-24 16:01:00

    有可能是檔案權限問題?

    回覆
    0
  • 取消回覆