sleep : 休眠指定的時間
ctrl + z :可以將一個正在前臺執(zhí)行的命令放到后臺,并且暫停
fg :將后臺中的命令調(diào)至前臺繼續(xù)運(yùn)行,(Foreground)
bg :將進(jìn)程搬到后臺運(yùn)行(Background)或?qū)⒑笈_暫停的命令變成繼續(xù)執(zhí)行
jobs :查看當(dāng)前有多少在后臺運(yùn)行的命令
& :這個用在一個命令的最后,可以把這個命令放到后臺執(zhí)行(通常配合nohup使用)
nohup :不掛斷地運(yùn)行命令
top :動態(tài)顯示所有的進(jìn)程
ps :列出當(dāng)前所有正在運(yùn)行的進(jìn)程
kill :終止進(jìn)程
ctrl + c :結(jié)束命令的執(zhí)行
sleep : 暫停指定的時間
我現(xiàn)在是讓休眠30秒念恍,可以看到命令執(zhí)行后并沒有把客戶端的shell提示符返還給我,說明正在休眠
ctrl + z :將一個正在前臺執(zhí)行的命令放到后臺,并且暫停
通過bg %jobnumber 即可將暫停的job的狀態(tài)由stopped改為running翠订,仍在后臺執(zhí)行;當(dāng)需要改為在前臺執(zhí)行時遵倦,執(zhí)行命令fg %jobnumber 即可尽超。
可以看到sleep 30
這個命令暫停執(zhí)行,并且返回一個后臺的進(jìn)程號
fg :將后臺中的命令調(diào)至前臺繼續(xù)運(yùn)行梧躺,(Foreground)
如果后臺中有多個命令似谁,可以用 fg %jobnumber將選中的命令調(diào)出傲绣,%jobnumber是通過jobs命令查到的后臺正在執(zhí)行的命令的序號(不是pid號)
bg :將作業(yè)放到后臺運(yùn)行,使前臺可以執(zhí)行其他任務(wù)巩踏,且可將后臺暫停的命令變成繼續(xù)執(zhí)行 (注意:實(shí)際上秃诵,使用bg命令與在指令后面添加符號"&"的效果是一樣的)
sleep 60
# 按ctrl z 鍵,暫停命令
sleep 60
# 按ctrl z 鍵塞琼,暫停命令
sleep 120
# 按ctrl z 鍵菠净,暫停命令
jobs
# 查看后臺進(jìn)程,可以看到后臺當(dāng)前有三個命令暫停
fg %1
#把后臺暫停的1號工作調(diào)到前臺彪杉,但因?yàn)?0秒時間已經(jīng)到了毅往,所以說這個把這個命令調(diào)到前臺后直接就返回了shell 提示符
fg %2
#把后臺暫停的2號工作調(diào)到前臺,繼續(xù)執(zhí)行休眠命令派近,所以說不返回shell提示符攀唯,只能暫停或結(jié)束sleep命令才能返回shell提示符
fg %3
#同理
jobs
#查看當(dāng)前后臺進(jìn)程构哺,只剩兩個革答,但是進(jìn)程號不會改變(這個號碼不是動態(tài)的,是唯一的對應(yīng)于一個進(jìn)程)
提交后臺進(jìn)程
方法一(最常用)
nohup Command(要執(zhí)行的命令) & :提交后臺進(jìn)程
& :這個用在一個命令的最后曙强,可以把這個命令放到后臺執(zhí)行残拐,但一般的普通程序即使使用 & 結(jié)尾,把任務(wù)放到了后臺碟嘴,shell提示符返還給你溪食,你能繼續(xù)輸入命令來進(jìn)行別的工作,但如果此時你有事需要離開娜扇,要關(guān)閉你的客戶端错沃,那么后臺運(yùn)行的任務(wù)也會被關(guān)閉。為了能夠后臺運(yùn)行雀瓢,我們需要使用nohup
這個命令枢析,在命令前加上nohup
,即便客戶端關(guān)閉刃麸,你提交的任務(wù)也可以繼續(xù)在后臺運(yùn)行醒叁,所以一般這兩個命令連用來提交后臺任務(wù)柏腻。
如果使用nohup
命令提交作業(yè)椅挣,那么命令的執(zhí)行情況的所有輸出都被重定向到一個名為nohup.out的文件中,除非另外指定了輸出文件秩伞,無論是否將 nohup
命令的輸出重定向到終端吁伺,輸出都將附加到當(dāng)前目錄的 nohup.out 文件中饮睬。如果當(dāng)前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out 文件中篮奄。如果沒有文件能創(chuàng)建或打開以用于追加捆愁,那么 Command 參數(shù)指定的命令不可調(diào)用割去。
提交后臺成功,會返回一個PID號牙瓢,
ps
可以查看進(jìn)程劫拗。圖中由于我的文件小,運(yùn)行時間太短矾克,查看進(jìn)程時已經(jīng)結(jié)束页慷。(命令顯示位“Done”)換個大點(diǎn)的文件,運(yùn)行時間長的胁附,我們再來看下:
nohup fastq-dump --gzip --split-3 -O ~/text/tmp ~/text/SRR1039508.sra &
提交成功會出現(xiàn)一個PID號酒繁,可以看到這個PID號跟
top
,ps
查看進(jìn)程時顯示的一致控妻,PID號和進(jìn)程是一一對應(yīng)的州袒,kill
+PID 號就能終止這個后臺進(jìn)程方法二
如果一個要長時間運(yùn)行的命令,我們忘記提交后臺運(yùn)行了弓候,而此時又需要做其他的事(當(dāng)然你可以再開一個窗郎哭,但這里講的是你在同一個窗口下該怎么做)
此時你可以ctrl+z
然后再執(zhí)行bg
命令,把任務(wù)搬到后臺菇存。(注意:因?yàn)闆]有nohup
,此時不能關(guān)閉客戶端)
bin=fastq-dump
dir=/home/yjzhang/scRNA-seq
ls /home/yjzhang/scRNA-seq/sra/SRR6791478 |while read id ;do $bin --gzip --split-3 -O $dir/raw $id ;done
ctrl +z
jobs
ps -ef |grep yjzhang
bg %1
jobs
ps -ef |grep yjzhang
exit
ps -ef |grep yjzhang
exit中斷服務(wù)器連接與直接關(guān)閉客戶端中斷與服務(wù)器的連接不一樣夸研,第二種方法提交到后臺的任務(wù),exit退出與服務(wù)器連接的時候依鸥,提交的任務(wù)仍能在后臺運(yùn)行亥至,而直接關(guān)閉客戶端退出,這時候
bg
提交的任務(wù)很大可能會終止(應(yīng)為這個bg
就相等于在命令后面加了&
)贱迟,但有時候也不終止(同樣的命令用git登陸服務(wù)器執(zhí)行時會終止姐扮,用xshell登陸時執(zhí)行,退出后就不終止)衣吠,為了保險起見茶敏,推薦使用第一種方法kill :發(fā)送信號給一個或多個進(jìn)程(經(jīng)常用來殺死一個進(jìn)程)
kill +PID號 #殺死單個進(jìn)程
ps -ef | grep yjzhang|awk '{print id; done #批量殺死所有用戶名為 yjzhang 提交的進(jìn)程
查看線程
top 統(tǒng)計(jì)信息前五行是系統(tǒng)整體的統(tǒng)計(jì)信息
top
查看線程默認(rèn)顯示是Tasks(任務(wù),進(jìn)程)缚俏,加-H
參數(shù)才顯示的是線程(Threads)
top - 21:25:38 up 2 days, 2 user, load average: 0.08, 0.03, 0.00
1睡榆、第一行是任務(wù)隊(duì)列信息 同uptime質(zhì)性命令結(jié)果一樣。
21:25:38 | up 2 days | 2 user | load average: 0.08, 0.03, 0.00 |
---|---|---|---|
當(dāng)前時間 | up:系統(tǒng)運(yùn)行時間 | 當(dāng)前登陸的用戶數(shù) | 系統(tǒng)負(fù)載袍榆,即任務(wù)隊(duì)列的平均長度,三個數(shù)值分別表示距離現(xiàn)在1分鐘塘揣,5分鐘包雀,15分鐘的負(fù)載情況 |
21時25分28秒 | 2天 | 當(dāng)前2個用戶登陸 | 1分鐘前負(fù)載為0.08;5分鐘前負(fù)載為0.03亲铡;15分鐘前負(fù)載為0.00 |
注:load average數(shù)據(jù)是每隔5秒鐘檢查一次活躍的進(jìn)程數(shù)才写,然后按特定算法計(jì)算出的數(shù)值葡兑。如果這個數(shù)除以邏輯CPU的數(shù)量,結(jié)果高于5的時候就表明系統(tǒng)在超負(fù)荷運(yùn)轉(zhuǎn)了赞草。
Tasks: 178 total, 1 running, 177 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.2 us, 0.1 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
2讹堤、第二行、三行為進(jìn)程和 CPU 的信息厨疙。當(dāng)有多個 CPU 時洲守,內(nèi)容可能超過兩行。
Tasks | 178 total | 1 running | 177 sleeping | 0 stopped | 0 zombie |
---|---|---|---|---|---|
進(jìn)程(任務(wù)) | 進(jìn)程總數(shù) | 正在運(yùn)行的進(jìn)程數(shù) | 休眠(掛起)的進(jìn)程數(shù) | 停止的進(jìn)程數(shù) | 僵尸進(jìn)程數(shù) |
%Cpu(s) | 1.2 us | 0.1 sy | 0.0 ni | 99.7 id | 0.0 wa | 0.0 hi | 0.0 si | 0.0 st |
---|---|---|---|---|---|---|---|---|
CPU 占用率 | (user) 用戶空間占用cpu的百分比 | 內(nèi)核空間占用cpu的百分比 | niced 改變過優(yōu)先級的進(jìn)程占用cpu的百分比 | 空閑 CPU 百分比 | IO wait IO等待占用cpu的百分比 | Hardware IRQ 硬中斷占用cpu的百分比 | software 軟中斷占用cpu的百分比 | Steal Time |
注: CPU%是由每個核的 CPU 占用率之和算出來的沾凄。如果你是 4 核 CPU梗醇,核 1,CPU 使用率為100%撒蟀,核 2叙谨,CPU 使用率為100%,則會CPU 高于100%的現(xiàn)象保屯,最終為200%手负。
加- H
參數(shù)后第二行顯示為Threads
Threads 232 total :目前線程總數(shù)232
KiB Mem : 16300688 total, 422428 free, 291988 used, 15586272 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 15599052 avail Mem
3.第四、五行為內(nèi)存使用信息
Mem | 16300688 total | 422428 free | 291988 used | 15586272 buff/cache |
---|---|---|---|---|
物理內(nèi)存 | 物理內(nèi)存總量 | 空閑物理內(nèi)存 | 使用的物理內(nèi)存總量 | 內(nèi)核緩存內(nèi)存量 |
物理總內(nèi)存16300688k(約16G) | 422428k(約0.4G)空閑 | 291988k(約0.27G)在使用 | 15586272k用于緩存 |
Swap | 0 total | 0 free | 0 used | 15599052 avail Mem |
---|---|---|---|---|
交換分區(qū) | 交換分區(qū)總量 | 可用交換空間 | 使用中的交換空間總量 | 緩沖的交換區(qū)總量 |
注:交換分區(qū)(Swap)被頻繁使用姑尺,可以看作物理內(nèi)存不足而造成的
具體進(jìn)程信息
第六行
PID | USER | PR | NI | VIRT | RES |
---|---|---|---|---|---|
進(jìn)程id | 進(jìn)程所有者 | 進(jìn)程優(yōu)先級 | nice值竟终。負(fù)值表示高優(yōu)先級,正值表示低優(yōu)先級 | 進(jìn)程使用的虛擬內(nèi)存總量股缸,單位kb衡楞。VIRT=SWAP+RES | 進(jìn)程使用的、未被換出的物理內(nèi)存大小敦姻,單位kb瘾境。RES=CODE+DATA |
SHR | S | %CPU | %MEM | TIME+ | COMMAND |
---|---|---|---|---|---|
共享內(nèi)存大小,單位kb | 進(jìn)程狀態(tài)镰惦。D=不可中斷的睡眠狀態(tài) R=運(yùn)行 S=睡眠 T=跟蹤/停止 Z=僵尸進(jìn)程 | 上次更新到現(xiàn)在的CPU時間占用百分比 | 進(jìn)程使用的物理內(nèi)存百分比 | 進(jìn)程使用的CPU時間總計(jì)迷守,單位1/100秒 | 進(jìn)程名稱(命令名/命令行) |
查看一個進(jìn)程所調(diào)用的線程
進(jìn)程概念:
進(jìn)程是表示資源分配的基本單位,又是調(diào)度運(yùn)行的基本單位旺入。例如兑凿,用戶運(yùn)行自己的程序,系統(tǒng)就創(chuàng)建一個進(jìn)程茵瘾,并為它分配資源礼华,包括各種表格、內(nèi)存空間拗秘、磁盤空間圣絮、I/O設(shè)備等。然后雕旨,把該進(jìn)程放人進(jìn)程的就緒隊(duì)列扮匠。進(jìn)程調(diào)度程序選中它捧请,為它分配CPU以及其它有關(guān)資源,該進(jìn)程才真正運(yùn)行棒搜。所以疹蛉,進(jìn)程是系統(tǒng)中的并發(fā)執(zhí)行的單位。
線程概念:
線程是進(jìn)程中執(zhí)行運(yùn)算的最小單位力麸,亦即執(zhí)行處理機(jī)調(diào)度的基本單位可款。如果把進(jìn)程理解為在邏輯上操作系統(tǒng)所完成的任務(wù),那么線程表示完成該任務(wù)的許多可能的子任務(wù)之一末盔。
可以看到我的一個任務(wù)調(diào)用了8個線程
這個調(diào)用了6個線程
服務(wù)器配置的查詢
lscpu≈恕#查詢CPU詳細(xì)信息
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l #查訊物理CPU個數(shù)
cat /proc/cpuinfo| grep "cpu cores"| uniq #查訊每個物理CPU中core的個數(shù)(即核數(shù))
cat /proc/cpuinfo| grep "processor"| wc -l≡刹铡#查訊邏輯CPU的個數(shù)(線程)
CPU(s):邏輯上(模擬出的)CPU個數(shù)
Thread(s) per core :每個核心的線程數(shù) (查詢結(jié)果顯示我的是每個核心一個線程)
Core(s) per socket :每個物理CPU上的核心數(shù)
Model name :CPU型號
說明我用這個服務(wù)器是1個CPU翠拣,8個物理核心8個線程(即8核單線程)
補(bǔ)充:
CPU個數(shù)即CPU芯片個數(shù)。
CPU的核心數(shù)是指物理上游盲,也就是硬件上存在著幾個核心误墓。比如,雙核就是包括2個相對獨(dú)立的CPU核心單元組益缎,四核就包含4個相對獨(dú)立的CPU核心單元組谜慌。
線程數(shù)是一種邏輯的概念,簡單地說莺奔,就是模擬出的CPU核心數(shù)欣范。比如,可以通過一個CPU核心數(shù)模擬出2線程的CPU令哟,也就是說恼琼,這個單核心的CPU被模擬成了一個類似雙核心CPU的功能。(注:CPU的線程和進(jìn)程中的線程概念不一樣屏富,CPU線程是模擬出來的核心數(shù)晴竞,進(jìn)程中的線程是要完成一個任務(wù)所調(diào)用的子任務(wù)數(shù))
綜上來說,在提交一個任務(wù)的時候我們要查看一下CPU的使用情況和設(shè)置適當(dāng)?shù)木€程數(shù)狠半,不要超過限度
學(xué)生信噩死,友情推薦:
- 生信技能樹微信公眾號:biotrainee
- 生信菜鳥團(tuán) http://www.bio-info-trainee.com/
- 生信技能樹 http://www.biotrainee.com/
- 生信技能樹VIP社區(qū):https://vip.biotrainee.com
- 知識星球: https://t.zsxq.com/VjmQZNn
- 騰訊課堂: https://biotree.ke.qq.com/
- 生信技能樹的b站:https://space.bilibili.com/338686099?spm_id_from=333.788.b_765f7570696e666f.1