2015-05-03 30 views
1

OS-的Ubuntu 14.04來源:找不到錯誤在Ubuntu上運行shell腳本,而14.04

這是我想用cron作業來安排我的shell腳本。

parser.sh

#!/bin/bash 

source .profile 
workon venv 
cd /home/ashish/deployments/myproject 

export DJANGO_SETTINGS_MODULE=myproject.settings_production 
python /home/ashish/deployments/myproject/myproject/manage.py parse_data 

的Cron求職

*/15 * * * * . /home/ashish/parser.sh 

每當這個cron作業運行我收到錯誤郵件:

/bin/sh: 6: /home/ashish/parser.sh: source: not found 
/bin/sh: 7: /home/ashish/parser.sh: workon: not found 
Traceback (most recent call last): 
    File "/home/ashish/deployments/myproject/myproject/manage.py", line 8, in <module> 
    from django.core.management import execute_from_command_line 
ImportError: No module named django.core.management 

當我運行從終端這個腳本 -

. parser.sh #this gives no error 

sh parser.sh #this gives errors 
/bin/sh: 6: /home/ashish/parser.sh: source: not found 
/bin/sh: 7: /home/ashish/parser.sh: workon: not found 

這個腳本中可能的錯誤是什麼?

+0

交叉點:http://askubuntu.com/questions/617665/error-while-cron-scheduling-a-sh-script – Cyrus

+0

對不起,我不知道交叉發佈不允許。我應該刪除一個嗎? –

回答

2

你需要與運行:

bash parser.sh 

sh parser.sh

如果您的腳本是爲bash編寫的,您不應該嘗試使用sh執行它。您的腳本的每種語法都可能不符合sh Bourne shell的標準。

cron作業命令,切換到:

*/15 * * * * bash /home/ashish/parser.sh 

專門指定bash。 或者作爲你的操作系統是Ubuntu的14.04,你一般不需要指定的bash,即

*/15 * * * * /home/ashish/parser.sh 

應該只是罰款。

+0

當我在終端上運行'bash parser.sh'時,它暫停一秒鐘,然後什麼也沒有發生。 –

+0

你的腳本是在屏幕上打印輸出還是默默地做事情? – Jahid

+1

將'source .profile'改爲'source/home/ashish/.profile'和'*/15 * * * *。/home/ashish/parser.sh'到'*/15 * * * */home/ashish/parser.sh'。現在它的工作正常!非常感謝@jahid –