2017-07-04 32 views
0

所以,我有這個shell腳本,動態地建立另一個腳本並調用它(即嵌套的腳本)。嵌套的腳本的輸出重定向不工作與cron

這樣的事情,比方說,它被稱爲the_script.sh

#!/bin/sh 

# do some stuff here, and create another script 
./nested_script.sh 

# do some other stuff, end 

如果我只是叫./the_script.sh它的一切輸出到標準輸出,包括嵌套腳本的輸出。

但如果它運行從一個cronjob,像這樣:

0 8,12 * * 1-5 /home/myuser/the_script.sh >> /home/myuser/thescript.log 

然後,它不輸出嵌套的腳本的結果,這對我來說是非常重要的。這兩個腳本的結果是正確的,但它運行(從提示符或cron),並按預期運行。

爲什麼會發生這種情況以及如何預防它的任何線索?

回答

1

要在日誌中顯示錯誤添加2>&1

0 8,12 * * 1-5 /home/myuser/the_script.sh >> /home/myuser/thescript.log 2>&1 

然後,它會顯示類似: No such file or directory,這是因爲當前的工作目錄是不是shell的目錄。最乾淨的是使用絕對路徑,否則cd -- "$(dirname "${0:-.}")"

+0

工作,謝謝。沒有錯誤顯示任何地方。它只是輸出我想要的一切。 –

0

cron不會從特定用戶的主目錄運行 - 因此運行./nested_script.sh可能不起作用。你應該指定這個絕對路徑,以便cron確切地知道它在哪裏。

+0

它確實有效。它按預期運行。它只是不輸出任何東西。 –

+0

這對我來說非常有用,它使用兩個腳本都帶有一個單一的回聲。你能發佈最少的代碼嗎? –

+0

嘗試使用源代碼運行nested_script.sh等「source nested_script.sh」 –