欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

linux中進程切換命令,linux系統(tǒng)切換到命令行

Linux 史上最全命令大全

1、ls命令

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、建安ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學管理、有技術(shù)的建安網(wǎng)站制作公司

cd /root

ls #顯示當前目錄下所有的非隱藏文件

ls -a #顯示當前目錄下所有文件,包含隱藏文件

ls -l #顯示當前目錄下所有的非隱藏文件的詳情

ls -al #顯示當前目錄下所有文件,包含隱藏文件 的詳情

ls -lh #以列表形式顯示當前目錄下所有的非隱藏文件的大小(K M T)

ls -alh #以列表形式顯示所有文件,包含隱藏文件的文件大小(K M T)

常用的組合:

ls

ll #等價于 ls -l

ls /etc #顯示/etc目錄下的文件

2:pwd命令

用來顯示當前所在的路徑

絕對路徑: 從/目錄開始的路徑

/root

/etc/sysconf

/opt/server/data-integration/libswt/win64

相對路徑: 相對當前的路徑

3、mkdir命令

cd /root

mkdir mytest #在當前目錄創(chuàng)建文件夾

mkdir -p 111/222/333 #一次創(chuàng)建多級文件夾

mkdir /root/mydemo #使用絕對路徑來創(chuàng)建

mkdir mydemo2 #使用相對對路徑來創(chuàng)建

4、rm命令

這個命令既可以刪除文件,也可以刪除目錄

刪文件:

cd /root

rm a.txt #刪除時,會給出提醒確認,輸入y刪除,n不刪除

rm -f b.txt #強制刪除 等價于 rm -f /root/b.txt

rm ../dir2/b.txt

touch a.java b.java c.java

rm a.java b.java c.java #一次可以刪除多個文件

rm *.java -fr #可以刪除當前目錄下的所有.java文件

cd dir

rm * -fr #刪除當前目錄的所有內(nèi)容

刪目錄:

rm -r 111 #刪除目錄,依次提醒刪除

rm -rf mytest #強制刪除 等價于 rm mytest -fr

常用組合:

rm -fr 文件或目錄

5、cd命令

cd 命令可以進入一個目錄,類似于對windows上的文件夾進行雙擊

cd #直接cd 可以從任何一個目錄回到/root目錄

cd /root #進入root目錄

cd /opt/server/data-integration/system/

cd .. #回到上一級目錄

cd ../.. #回到上上一級目錄

cd - #可以在最近的兩次目錄之間切換

cd /root

mdkir dir1 dir2

cd dir1

cd ../dir2 #使用相對路徑 /中國/廣東省/深圳市/寶安區(qū)/留仙二路/78號

6、歷史命令和table補全

使用上下方向鍵可以找出歷史命令

table鍵:

cd /opt/ #兩次table可以列出/opt目錄下所有的文件和子目錄

cd /opt/s #一次table可以自動補全目錄內(nèi)容,前提是/opt目錄下只有一個s開頭的目錄

7、touch命令

cd /root

touch a.java #在當前目錄創(chuàng)建a.txt文件

touch b.java c.java #創(chuàng)建多個文件

touch /root/d.java #通過絕對路徑創(chuàng)建

8、mv命令

移動:

1、mv 文件 目錄 #將文件移動到目錄中區(qū)

cd /root/dir1

touch a.txt

mv a.txt /root/dir2 #等價于 mv a.txt ../dir2

2、 mv 目錄1 目錄2 #將目錄1移動到目錄2下面(前提是目錄2必須存在)

cd /root

mv dir2 dir1 #將dir2移動到dir1下面

重命名:

1、mv 文件1 文件2 #給文件重命名(文件2不能存在)

cd /root

mv a.txt aaa.txt #將a.txt 重命名為aaa.txt

2、mv 目錄1 目錄2 #給目錄重命名(目錄2不能存在)

cd /root

mv dir1 dirx #將dir1重命名為dirx

9、cat命令

顯示文件內(nèi)容

cd /root

cat user.txt

10、cp命令

復(fù)制文件

cd /root

cp user.txt user2.txt

cp user.txt /opt/ #將當前目錄的user.txt 復(fù)制到/opt目錄,文件名保持不變

cp user.txt /opt.user2.txt #將當前目錄的user.txt 復(fù)制到/opt目錄,文件名改為user2.txt

cp /opt/server/data-integration/pan.sh ./ #將指定目錄里的文件復(fù)制到當前目錄(.后邊的/可以去掉)

cp /opt/server/data-integration/pan.sh ./dirx #將指定目錄里的文件復(fù)制到當前目錄下的dirx目錄(.后邊的/比可以去掉)

cp /opt/server/data-integration/pan.sh /root/dirx #作用同上

11、解壓和壓縮

Linux的壓縮包后綴一般是: .tar.gz

解壓:

.tar.gz

將snappy-1.1.1.tar.gz上傳到/root/dir1目錄

tar -zxvf snappy-1.1.1.tar.gz #默認解壓到當前目錄

tar -xvf snappy-1.1.1.tar.gz #默認解壓到當前目錄

tar -xvf snappy-1.1.1.tar.gz -C /opt #將壓縮包解壓到/opt目錄

.zip格式

unzip mysql-connector-java-8.0.13.zip #默認解壓到當前目錄

unzip -d /opt mysql-connector-java-8.0.13.zip #解壓到指定目錄

壓縮:

.tar.gz

tar -czvf snappy-1.1.1.tar.gz snappy-1.1.1 #將snappy-1.1.1文件夾進行打包壓縮

tar -czvf /root/dir/snappy-1.1.1.tar.gz /opt/server/snappy-1.1.1

.zip格式

zip -r mysql-connector-java-8.0.13.zip mysql-connector-java-8.0.13/

12、find命令

用來實現(xiàn)文件的查找

find / -name 'a.txt' #從/目錄開始查找a.txt文件

find / -name 'ins*' #從/目錄開始查找以ins開頭的文件

find / -type f -size +100M #查找/目錄下文件大小大于100M的文件

13、grep命令

grep lang anaconda-ks.cfg #從anaconda-ks.cfg文件中查找包含lang的內(nèi)容

14、ps命令

ps #查看依賴終端的進程

ps -ef #查看Linux系統(tǒng)中所有的進程

15、kill命令

kill -9 進程的pid #每次啟動進程時,pid會發(fā)生變化,但是進程運行期間pid不會變化

16、管道 |

管道就是把前邊命令的結(jié)果作為后邊命令的輸入

ps -ef | grep mysql #查找和mysql相關(guān)的進程

ll /etc | grep java #在/etc目錄中查找java相關(guān)的文件

17、用戶的操作

用戶創(chuàng)建和密碼設(shè)置

useradd itheima #創(chuàng)建新用戶itheima

passwd itheima #設(shè)置用戶itheima密碼

用戶刪除

userdel -r itheima #刪除用戶itheima

18、文件的權(quán)限

所屬用戶: root 文件的創(chuàng)建者

所屬用戶組: root 和文件創(chuàng)建者在一個組的用戶

其他用戶: itcast 既不是文件創(chuàng)建者,也和文件創(chuàng)建者不在同一組

r: 可讀

w:可寫

x: 可執(zhí)行

chmod命令:

方式1:

chmod u+rw a.txt #在所屬用戶之前的權(quán)限基礎(chǔ)上添加可讀和可寫權(quán)限

chmod u=rw a.txt #將所屬用戶的權(quán)限直接修改為可讀,可寫

chmod +x #給所屬用戶,所屬用戶組和其他用戶全部加上可執(zhí)行權(quán)限

方式2:

chmod 777 a.txt #給所有用戶加上所有權(quán)限

19、clear命令

用來清屏

快捷鍵: ctrl + l

20、history命令

用來查看所有的歷史命令

21:vi編輯器的使用

vi a.txt #打開a.txt文件

vim a.txt #vim是vi的增強

22、網(wǎng)絡(luò)管理命令

hostname :查看主機名

修改主機名: /etc/hostname

ifconfig :查看ip地址

修改ip地址: /etc/sysconfig/network-scripts/ifcfg-ens33

服務(wù)問題:

service network restart

新手必須掌握的linux命令

常見執(zhí)行Linux命令的格式是這樣的:

注意,命令名稱、命令參數(shù)、命令對象之間請用空格鍵分隔。

命令對象一般是指要處理的文件、目錄、用戶等資源,而命令參數(shù)可以用長格式(完整的選項名稱),也可以用短格式(單個字母的縮寫),兩者分別用--與-作為前綴。

命令參數(shù)的長格式與短格式示例

1.echo命令

2.date命令

3.reboot命令

4.poweroff命令

5.wget命令

6.ps命令

7.top命令

8.pidof命令

9.kill命令

10.killall命令

如果我們在系統(tǒng)終端中執(zhí)行一個命令后想立即停止它,可以同時按下Ctrl + C組合鍵(生產(chǎn)環(huán)境中比較常用的一個快捷鍵),這樣將立即終止該命令的進程。

或者,如果有些命令在執(zhí)行時不斷地在屏幕上輸出信息,影響到后續(xù)命令的輸入,則可以在執(zhí)行命令時在末尾添加上一個符號,這樣命令將進入系統(tǒng)后臺來執(zhí)行。

1.ifconfig命令

2.uname命令

3.uptime命令

4.free命令

5.who命令

6.last命令

7.history命令

8.sosreport命令

三、工作目錄切換命令

1.pwd命令

2.cd命令

3.ls命令

四、文本文件編輯命令

1.cat命令

2.more命令

3.head命令

4.tail命令

5.tr命令

6.wc命令

7.stat命令

8.cut命令

9.diff命令

五、文件目錄管理命令

1.touch命令

2.mkdir命令

3.cp命令

4.mv命令

5.rm命令

6.dd命令

7.file命令

六、打包壓縮與搜索命令

1.tar命令

2.grep命令

3.find命令

Linux 進程管理之進程調(diào)度與切換

我們知道,進程運行需要各種各樣的系統(tǒng)資源,如內(nèi)存、文件、打印機和最

寶貴的 CPU 等,所以說,調(diào)度的實質(zhì)就是資源的分配。系統(tǒng)通過不同的調(diào)度算法(Scheduling Algorithm)來實現(xiàn)這種資源的分配。通常來說,選擇什么樣的調(diào)度算法取決于資源分配的策略(Scheduling Policy)。

有關(guān)調(diào)度相關(guān)的結(jié)構(gòu)保存在 task_struct 中,如下:

active_mm 是為內(nèi)核線程而引入的,因為內(nèi)核線程沒有自己的地址空間,為了讓內(nèi)核線程與普通進程具有統(tǒng)一的上下文切換方式,當內(nèi)核線程進行上下文切換時,讓切換進來的線程的 active_mm 指向剛被調(diào)度出去的進程的 active_mm(如果進程的mm 域不為空,則其 active_mm 域與 mm 域相同)。

在 linux 2.6 中 sched_class 表示該進程所屬的調(diào)度器類有3種:

進程的調(diào)度策略有5種,用戶可以調(diào)用調(diào)度器里不同的調(diào)度策略:

在每個 CPU 中都有一個自身的運行隊列 rq,每個活動進程只出現(xiàn)在一個運行隊列中,在多個 CPU 上同時運行一個進程是不可能的。

運行隊列是使用如下結(jié)構(gòu)實現(xiàn)的:

tast 作為調(diào)度實體加入到 CPU 中的調(diào)度隊列中。

系統(tǒng)中所有的運行隊列都在 runqueues 數(shù)組中,該數(shù)組的每個元素分別對應(yīng)于系統(tǒng)中的一個 CPU。在單處理器系統(tǒng)中,由于只需要一個就緒隊列,因此數(shù)組只有一個元素。

內(nèi)核也定義了一下便利的宏,其含義很明顯。

Linux、c/c++服務(wù)器開發(fā)篇-------我們來聊聊進程的那些事

Linux內(nèi)核 進程間通信組件的實現(xiàn)

學習地址:C/C++Linux服務(wù)器開發(fā)/后臺架構(gòu)師【零聲教育】-學習視頻教程-騰訊課堂

需要C/C++ Linux服務(wù)器架構(gòu)師學習資料加qun812855908獲取(資料包括 C/C++,Linux,golang技術(shù),Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協(xié)程,DPDK,ffmpeg 等),免費分享

在分析調(diào)度流程之前,我們先來看在什么情況下要執(zhí)行調(diào)度程序,我們把這種情況叫做調(diào)度時機。

Linux 調(diào)度時機主要有。

時機1,進程要調(diào)用 sleep() 或 exit() 等函數(shù)進行狀態(tài)轉(zhuǎn)換,這些函數(shù)會主動調(diào)用調(diào)度程序進行進程調(diào)度。

時機2,由于進程的時間片是由時鐘中斷來更新的,因此,這種情況和時機4 是一樣的。

時機3,當設(shè)備驅(qū)動程序執(zhí)行長而重復(fù)的任務(wù)時,直接調(diào)用調(diào)度程序。在每次反復(fù)循環(huán)中,驅(qū)動程序都檢查 need_resched 的值,如果必要,則調(diào)用調(diào)度程序 schedule() 主動放棄 CPU。

時機4 , 如前所述, 不管是從中斷、異常還是系統(tǒng)調(diào)用返回, 最終都調(diào)用 ret_from_sys_call(),由這個函數(shù)進行調(diào)度標志的檢測,如果必要,則調(diào)用調(diào)用調(diào)度程序。那么,為什么從系統(tǒng)調(diào)用返回時要調(diào)用調(diào)度程序呢?這當然是從效率考慮。從系統(tǒng)調(diào)用返回意味著要離開內(nèi)核態(tài)而返回到用戶態(tài),而狀態(tài)的轉(zhuǎn)換要花費一定的時間,因此,在返回到用戶態(tài)前,系統(tǒng)把在內(nèi)核態(tài)該處理的事全部做完。

Linux 的調(diào)度程序是一個叫 Schedule() 的函數(shù),這個函數(shù)來決定是否要進行進程的切換,如果要切換的話,切換到哪個進程等。

從代碼分析來看,Schedule 主要完成了2個功能:

進程上下文切換包括進程的地址空間的切換和執(zhí)行環(huán)境的切換。

對于 switch_mm 處理,關(guān)鍵的一步就是它將新進程頁面目錄的起始物理地址裝入到寄存器 CR3 中。CR3 寄存器總是指向當前進程的頁面目錄。

switch_to 把寄存器中的值比如esp等存放到進程thread結(jié)構(gòu)中,保存現(xiàn)場一邊后續(xù)恢復(fù),同時調(diào)用 __switch_to 完成了堆棧的切換。

在進程的 task_struct 結(jié)構(gòu)中有個重要的成分 thread,它本身是一個數(shù)據(jù)結(jié)構(gòu) thread_struct, 里面記錄著進程在切換時的(系統(tǒng)空間)堆棧指針,取指令地址(也就是“返回地址”)等關(guān)鍵性的信息。

關(guān)于__switch_to 的工作就是處理 TSS (任務(wù)狀態(tài)段)。

TSS 全稱task state segment,是指在操作系統(tǒng)進程管理的過程中,任務(wù)(進程)切換時的任務(wù)現(xiàn)場信息。

linux 為每一個 CPU 提供一個 TSS 段,并且在 TR 寄存器中保存該段。

linux 中之所以為每一個 CPU 提供一個 TSS 段,而不是為每個進程提供一個TSS 段,主要原因是 TR 寄存器永遠指向它,在任務(wù)切換的適合不必切換 TR 寄存器,從而減小開銷。

在從用戶態(tài)切換到內(nèi)核態(tài)時,可以通過獲取 TSS 段中的 esp0 來獲取當前進程的內(nèi)核棧 棧頂指針,從而可以保存用戶態(tài)的 cs,esp,eip 等上下文。

TSS 在任務(wù)切換過程中起著重要作用,通過它實現(xiàn)任務(wù)的掛起和恢復(fù)。所謂任務(wù)切換是指,掛起當前正在執(zhí)行的任務(wù),恢復(fù)或啟動另一任務(wù)的執(zhí)行。

在任務(wù)切換過程中,首先,處理器中各寄存器的當前值被自動保存到 TR(任務(wù)寄存器)所指定的任務(wù)的 TSS 中;然后,下一任務(wù)的 TSS 被裝入 TR;最后,從 TR 所指定的 TSS 中取出各寄存器的值送到處理器的各寄存器中。由此可見,通過在 TSS 中保存任務(wù)現(xiàn)場各寄存器狀態(tài)的完整映象,實現(xiàn)任務(wù)的切換。

因此,__switch_to 核心內(nèi)容就是將 TSS 中的內(nèi)核空間(0級)堆棧指針換成 next-esp0。這是因為 CPU 在穿越中斷門或者陷阱門時要根據(jù)新的運行級別從TSS中取得進程在系統(tǒng)空間的堆棧指針。

thread_struct.esp0 指向進程的系統(tǒng)空間堆棧的頂端。當一個進程被調(diào)度運行時,內(nèi)核會將這個變量寫入 TSS 的 esp0 字段,表示這個進程進入0級運行時其堆棧的位置。換句話說,進程的 thread_struct 結(jié)構(gòu)中的 esp0 保存著其系統(tǒng)空間堆棧指針。當進程穿過中斷門、陷阱門或者調(diào)用門進入系統(tǒng)空間時,處理器會從這里恢復(fù)期系統(tǒng)空間棧。

由于棧中變量的訪問依賴的是段、頁、和 esp、ebp 等這些寄存器,所以當段、頁、寄存器切換完以后,棧中的變量就可以被訪問了。

因此 switch_to 完成了進程堆棧的切換,由于被切進的進程各個寄存器的信息已完成切換,因此 next 進程得以執(zhí)行指令運行。

由于 A 進程在調(diào)用 switch_to 完成了與 B 進程堆棧的切換,也即是寄存器中的值都是 B 的,所以 A 進程在 switch_to 執(zhí)行完后,A停止運行,B開始運行,當過一段時間又把 A 進程切進去后,A 開始從switch_to 后面的代碼開始執(zhí)行。

schedule 的調(diào)用流程如下:

linux 進程中切換用戶

可以使用su命令來切換用戶,su是switch user切換用戶的縮寫。可以是從普通用戶切換到root用戶,也可以是從root用戶切換到普通用戶。從普通用戶切換到root用戶需要輸入密碼,從root用戶切換到普通用戶不需要輸入密碼。

命令格式:su [參數(shù)] [-] [用戶名]

用戶名的默認值為root。

用法示例:

su zhidao #切換到zhidao用戶

su #切換到root用戶

當前文章:linux中進程切換命令,linux系統(tǒng)切換到命令行
地址分享:http://chinadenli.net/article38/heogsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)建站公司電子商務(wù)微信小程序網(wǎng)站營銷網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化