批量下載SRR資料

qq_39306047發表於2020-06-17

https://www.jianshu.com/p/f16ed4c79739

 nohup ./lnd cp -d oss://CP2018091204136/H101SC20070420/KY_kehu_JK/X101SC20070420-ZSC20070420-Z01-J001/2.cleandata  ../ &

md5sum -c 校檢碼檔案

nohup  prefetch --option-file SRR_Acc_List.txt  &

#關閉終端後再進入,怎麼後臺找不到?

(rna) [zhaong@cluster ~]$ ps ux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
1029       791  1.4  0.0  21852  3648 ?        S    Jun17  10:02 prefetch --option-file SRR_Acc_List.txt
1029      1463  0.0  0.0  99976  1800 ?        S    09:26   0:00 sshd: zhangyong@pts/2
1029      1464  0.0  0.0 110664  2140 pts/2    Ss   09:26   0:00 -bash
1029      2727  0.0  0.0  99980  1900 ?        S    09:28   0:00 sshd: zhangyong@notty
1029      2728  0.0  0.0  57300  2396 ?        Ss   09:28   0:00 /usr/libexec/openssh/sftp-server
1029      3476  0.0  0.0 110220  1116 pts/2    R+   09:32   0:00 ps ux
1029     19766  1.4  0.0  21880  3348 ?        S    09:07   0:21 prefetch --option-file List.txt

 

$ wget -i filename.txt
此命令常用於批量下載的情形,把所有需要下載檔案的地址放到 filename.txt 中,然後 wget 就會自動為你下載所有檔案了。

$ wget -c http://example.com/really-big-file.iso
這裡所指定的 -c 選項的作用為斷點續傳。


實踐證明,wget下載sra資料是有風險的!!!中間有斷點的話會造成資料不完整,以防萬一,一定要加上自動斷點續傳引數-c!
ftp='ftp://ftp.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR'

mkdir sra  # make a output directory
cat SRR_Acc_List.txt |  while read i
do
       SRR=$(echo ${i:0:6}) 
       wget -c -t 0 -P ./sra ${ftp}/${SRR}/${i}/*
done
引數說明:
-c 自動斷點續傳,一定要加!否則資料會有不完整的情況
-t 配合-c引數,設定為0表示連線失敗後無限次重新嘗試,直到成功為止
-P 表示把資料下載到指定資料夾下

 

 

 

有兩種方式:

1. command & : 後臺執行,你關掉終端會停止執行
2. nohup command & :後臺執行,你關掉終端也會繼續執行

一、 簡介 
Linux/Unix 區別於微軟平臺最大的優點就是真正的多使用者,多工。因此在任務管理上也有別具特色的管理思想。
我們知道,在 Windows 上面,我們要麼讓一個程式作為服務在後臺一直執行,要麼停止這個服務。而不能讓程式在前臺後臺之間切換。而 Linux提供了fg和bg命令,讓你輕鬆排程正在執行的任務。假設你發現前臺執行的一個程式需要很長的時間,但是需要幹其他的事情,你就可以用Ctrl-Z ,掛起這個程式,然後可以看到系統提示:
[1]+ Stopped /root/bin/rsync.sh
然後我們可以把程式排程到後臺執行:(bg 後面的數字為作業號)
#bg 1
[1]+ /root/bin/rsync.sh &
用 jobs 命令檢視正在執行的任務:
#jobs
[1]+ Running /root/bin/rsync.sh &
如果想把它調回到前臺執行,可以用
#fg 1
/root/bin/rsync.sh
這樣,你在控制檯上就只能等待這個任務完成了。

& 將指令丟到後臺中去執行
[ctrl]+z 將前臺任務丟到後臺中暫停
jobs 檢視後臺的工作狀態
fg %jobnumber 將後臺的任務拿到前臺來處理
bg %jobnumber 將任務放到後臺中去處理
kill 管理後臺的任務

 

# tar -zxf httpd-2.2.17.tar.gz                             ## 解壓 httpd 壓縮包
^Z                                                         ## 按下 Ctrl+Z 組合鍵暫停
[1]+  Stopped                 tar -zxf httpd-2.2.17.tar.gz

# bg                                                       ## 輸入 bg 命令,繼續在後臺執行
[1]+ tar -zxf httpd-2.2.17.tar.gz &

# jobs                                                     ## 檢視所有的後臺任務
[1]+  Done                    tar -zxf httpd-2.2.17.tar.gz

 

(rna) [zhangyong@cluster sratools]$ top -u zhangyong
top - 09:15:04 up 57 days, 5 min,  6 users,  load average: 0.36, 0.24, 0.17
Tasks: 349 total,   1 running, 347 sleeping,   1 stopped,   0 zombie
Cpu(s):  2.9%us,  5.1%sy,  0.0%ni, 91.8%id,  0.1%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:  66061060k total, 60165576k used,  5895484k free,   248920k buffers
Swap:  1023992k total,  1023676k used,      316k free, 57631516k cached
                                                                                                                          PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
19766 zhangyon  20   0 21880 3348 1844 S  2.0  0.0   0:06.73 prefetch
  791 zhayon  20   0 21852 3648 2052 S  1.3  0.0   9:48.25 prefetch
25723 zhgyon  20   0 15176 1468  952 R  0.3  0.0   0:00.06 top
10072 zhyon  20   0 99976 1828  832 S  0.0  0.0   0:00.05 sshd
10073 zhayon  20   0  108m 2148 1456 S  0.0  0.0   0:00.18 bash
20657 zhayon  20   0 99980 1876  892 S  0.0  0.0   0:00.00 sshd
20696 zhyon  20   0 57296 2312 1680 S  0.0  0.0   0:00.06 sftp-server

成功提交該命令之後,系統給出了它的程式號7832。 對於已經在前臺執行的命令,也可以重新放到後臺執行,首先按ctrl+z暫停已經執行的程式,然後使用bg命令將停止的作業放到後臺執行,例如對正在前臺執行的tesh.sh使用ctrl+z掛起它:
$ ./test.sh
[1]+ Stopped ./test.sh

$ bg %1
[1]+ ./test.sh &

$ jobs -l
[1]+ 22794 Running ./test.sh &

 

任務狀態

top命令與ps命令可以用於檢視Linux系統執行狀態,類似於windows系統的工作管理員,其中top用於動態顯示,ps用於靜態顯示,htop是高階版的top,顯示結果更加人性化。

top  #press "q" to exit 檢視系統執行狀態   
top -b  # press "Ctrl +C" to exit   
top -c   
top -u "yourname"   
htop htop檢視系統執行狀態  
ps  靜態檢視系統執行   
ps -fx   
ps -aux  

 

任務控制

ctrl+C :終止任務
ctrl+D :退出任務,相當於exit
ctrl+Z :暫停任務
pidof :獲取程式ID
kill -9 "process number"  殺死程式   
killall :殺死全部程式  

後臺執行

& :在語句結尾新增,表示後臺執行
jobs :檢視後臺程式 
fg :將任務放後臺程式   
bg :將後天任務放到前臺   
#fg,bg可以接數字,表示操作第幾個任務
time:對任務進行計時統計
nohup:不掛起執行程式,關閉登入視窗後程式繼續執行  
disown:忘記使用nohup之後,將後臺任務轉換為nohup

定時任務

at :一次性定時任務
crontab:週期性定時任務

使用案例

#利用flye拼接nanopore測序資料
#使用time命令進行計時
echo "time flye --nano-raw SRX5299446.sra.fastq -o flye -t 24 -g 5m >flye.log 2>flye.err" >flye.sh
#執行指令碼,前面加nohup,後面接&
nohup sh flye.sh &
#利用jobs檢視任務
jobs
#利用top監控程式是否執行
top -u $USER

相關文章