亚洲精品中文免费|亚洲日韩中文字幕制服|久久精品亚洲免费|一本之道久久免费

      
      

            <dl id="hur0q"><div id="hur0q"></div></dl>

                耗時很長的程序忘加nohup就運行了怎么辦?

                在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個提示:

              1. fastq-dump不只可以轉換下載好的sra文件為fastq文件,還可以順帶下載sra文件。
              2. 只需提供SRR號,就可以獲得FASTQ序列。
              3. 不需要先調用prefetch下載,然后再轉換。
              4. 其它參數(shù)解釋見引用文章。
              5. 每一行命令后面&號表示把命令放入后臺運行,當前終端可以繼續(xù)輸入其它命令;
              6. 此處也相當于實現(xiàn)了一個手動并行下載多樣本,配合for可以自動并行下載。
              7. nohup表示讓程序在終端因人為原因或網(wǎng)絡原因斷開后不掛斷,適用于運行時間比較長的命令,一般與&連用,形式如nohup 你的命令 & (注意空格的存在)。
              8. 如果程序運行輸出錯誤信息,則會寫入當前目錄下nohup.out文件里面,供后續(xù)查看和調試。
              9. 經(jīng)常會有一些培訓班“拿來主義”比較嚴重,以上推文和生信寶典的其它推文都被發(fā)現(xiàn)過直接用于某些培訓班的教材,但從未申請過授權,也未引用過出處。
              10. 更有甚者,盜版易生信早期培訓教案和視頻,用于自己的課程或在全網(wǎng)發(fā)布,希望大家多多舉報。
              11. 言歸正傳,通常我們運行程序前,會有個預判,如前面那個例子,運行時間比較長,會使用nohup 我的命令 &的形式進行運行,從而保證程序不受網(wǎng)絡或終端異常退出的影響。

                但有時也會有誤判,如沒想到某個程序運行了半個小時還沒結束,或數(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)變成了運行中,這一步很關鍵。如果沒有運行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,表示在終端關閉時不對作業(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點提示:

              12. 例子中使用的是rsync同步,從節(jié)省時間來看,不是一個很好的例子。
              13. 因為把命令停掉再運行一次時,已經(jīng)同步完整的數(shù)據(jù)不會再同步,時間損失不會太大。
              14. 這也是使用同步命令rsync相比于scp的一個好處。
              15. 更多同步方式見(Linux服務器數(shù)據(jù)定期同步和備份方式。
              16. 例子中的rsync或其它涉及兩個服務器交互的命令,都需要我們人為輸入登錄密碼,因此直接加nohup &運行是行不通的,無法接受密碼的輸入。
              17. 因此通過上面這個操作先在前臺啟動運行、輸入密碼,再放入后臺不掛斷運行。
              18. 從這個角度看,是一個不錯的例子。
              19. 當然解決這個問題也有其它方式,具體見ssh免密碼登錄遠程服務器。
              20. 如果程序運行時,已加了&號,放入后臺了,則只需運行jobs獲得作業(yè)號,再運行disown不掛斷即可。
              21. 程序作業(yè)號不一定都是1,如果之前就有程序在后臺運行,作業(yè)號相應的會自加。
              22. 后面用到作業(yè)號時也需要相應修改,不要刻板總用1。
              23. nohup和disown都可以使程序不掛斷,可以獲得一樣的效果,但原理不太一致。
              24. nohup可以使程序忽略掛斷信號(SIGHUP)或者使程序脫離終端的控制,從而終端不能再對其發(fā)送掛斷信號(SIGHUP);
              25. disown則是內生于shell,告訴shell在終止時不對對應程序發(fā)送掛斷信號(SIGHUP)。
              26. 鄭重聲明:本文內容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權歸原作者所有,如有侵權請聯(lián)系管理員(admin#wlmqw.com)刪除。
                用戶投稿
                上一篇 2022年6月13日 18:12
                下一篇 2022年6月13日 18:12

                相關推薦

                聯(lián)系我們

                聯(lián)系郵箱:admin#wlmqw.com
                工作時間:周一至周五,10:30-18:30,節(jié)假日休息