在NGS基礎:測序原始數(shù)據(jù)下載一文中提到可以使用SRA-toolkit中的命令fastq-dump從NCBI下載原始測序數(shù)據(jù),命令如下。
nohup fastq-dump -v –split-3 –gzip SRR5908360 &nohup fastq-dump -v –split-3 –gzip SRR5908361 &
這個代碼,給我們4個提示:
言歸正傳,通常我們運行程序前,會有個預判,如前面那個例子,運行時間比較長,會使用nohup 我的命令 &的形式進行運行,從而保證程序不受網(wǎng)絡或終端異常退出的影響。
但有時也會有誤判,如沒想到某個程序運行了半個小時還沒結(jié)束,或數(shù)據(jù)傳輸時網(wǎng)太慢,需要傳輸很久,這時怎么辦?中止程序,然后加上nohup再從頭運行?還是有更好的辦法?
下面看這個例子:馬上要去吃午飯了,把文件同步到另一個服務器,飯后回來繼續(xù)操作:
ysx@ehbio:~/test/Bigwig$ rsync -av * ysx@46.93.19.14:/tmpysx@46.93.19.14’s password:sending incremental file listtest1Y_DK10.bw
輸入密碼后,發(fā)現(xiàn)同步速度太慢了,1分鐘只同步了1個文件,后面還有99個文件,待會離開后,如果網(wǎng)斷了,終端退出,程序終止怎么辦?同步不能完成,飯后怎么愉快的工作?
還好我們有下面的方案,一步步跟著操作,補救一下。
第一步,按ctrl+z把程序掛起,操作后屏幕會出現(xiàn)如下提示([1]中的1表示命令的作業(yè)號,后面會用到):
^Z[1]+ 已停止 rsync -av * ysx@46.93.19.14:/tmp
第二步(可選),用jobs命令查看下任務狀態(tài),跟剛才的屏幕提示一致,程序被暫時終止,作業(yè)號還是1:
ysx@ehbio:~/test/Bigwig$ jobs[1]+ 已停止 rsync -av * ysx@46.93.19.14:/tmp
第三步,使用bg %1命令把作業(yè)號為1的任務放入后臺,并從停止狀態(tài)變?yōu)檫\行狀態(tài),相當于加了&后接著運行。再用jobs查看,任務狀態(tài)變成了運行中,這一步很關(guān)鍵。如果沒有運行bg %1則程序處于停止狀態(tài),一直不會運行,吃幾頓飯都不會運行。
ysx@ehbio:~/test/Bigwig$ bg %1[1]+ rsync -av * ysx@46.93.19.14:/tmp &ysx@ehbio:~/test/Bigwig$ jobs[1]+ 運行中 rsync -av * ysx@46.93.19.14:/tmp &
第四步,運行disown -h %1,表示在終端關(guān)閉時不對作業(yè)號為1的程序發(fā)送終止信號,外部因素將不影響程序的運行。通過ps命令查看下任務進程 (可選)。
ysx@ehbio:~/test/Bigwig$ disown -h %1ysx@ehbio:~/test/Bigwig$ ps -auwx | grep ‘rsync’ysx 18214 0.0 0.0 117844 1720 ? S 09:43 0:01 rsync -av *.bw ysx@46.93.19.14:/tmpysx 18215 0.1 0.0 182376 8360 ? S 09:43 0:04 ssh -l ysx 46.93.19.14 rsync –server -vlogDtpre.iLsfxC . /tmpysx 18340 0.0 0.0 112724 984 pts/1 S+ 10:17 0:00 grep –color=auto rsync
通過以上4步就完成了對這次操作的事后補救。以后遇到同類問題,試一試這個新方案吧!
同時還有5點提示: