所有你需要的是這樣的:
cd /home/program/K_10 && nohup Rscript program_1.R> program_1_out.txt;
echo "The job /home/program/K_10/program_1.R is finished" |mutt "[email protected]" -s "Your job"
是,在腳本首先執行的作業,然後(按順序)發送郵件到自己。 echo
命令將其用作郵件內容的mutt
。該-s
選項設置郵件的主題。
一個更好的方式來做到這將是把這些命令的要點爲腳本,這樣的事情:
#!/bin/sh
cd $(dirname $1) && nohup Rscript $(basename $1) > $(basename $1 .R)_out.txt;
echo "The job $1 is finished" |mutt "[email protected]" -s "Your job"
和(調用該文件run-job
),由
調用它
run-job /home/program/K_10/program_1.R
其分解一點:
run-job
被命名爲腳本的功能暗示。腳本名稱沒有設置約定(由開發者決定)。有些人在名稱上使用".sh"
後綴以使其類型更加明顯,但這不是必需的。
- 的
".R"
後綴是另一個命名約定,也可以通過Rscript
需要。無論如何,它是現有文件名的一部分。
$1
是給予腳本的參數(或自變量)。更完整的腳本可能會檢查(a)參數是否存在,以及(b)參數是否與現有文件相對應,但這些步驟被省略以保持簡單。
- 的
$(dirname $1)
回報/home/program/K_10
,並
- 的
$(basename $1 .R)
採用的是/home/program/K_10/program_1.R
返回program_1
。
- 對於這個簡單的腳本,有可能採取的路徑名部分,並用它們來做出更一般的腳本比使用文本命令。
nohup
這裏很尷尬;我會將其移出腳本。然後,您可以直接控制腳本的運行方式,例如,
nohup run-job /home/program/K_10/program_1.R &
創建腳本如run-job
,你應該記住這樣做:
- 使其可執行文件,例如,
chmod u+x run-job
要麼把腳本到一個目錄上您$PATH
(如許多系統上的$HOME/bin
),或者小心使用其路徑調用它。舉例來說,如果它是在當前目錄下,你可以簡單地做
nohup ./run-job /home/program/K_10/program_1.R &
爲分離的問題(無論是我的錯字,或其他原因),外殼提供了跟蹤功能(實際命令將在運行時打印)。要打開跟蹤,腳本的第一行更改爲
#!/bin/sh -x
通常使用'mail'命令發送郵件的方式。你是說你不允許使用'mail'命令,但是你仍然想發送郵件嗎? (Mutt是一個MUA,並不提供郵件。) –
@GregHewgill你說得對。 IT人員告訴我,我只能使用'mutt'。 –
@GregHewgill我認爲'mutt'可以發送郵件。 –