91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux中的&是什么

發布時間:2021-09-01 12:52:02 來源:億速云 閱讀:300 作者:chen 欄目:系統運維

本篇內容主要講解“Linux中的&是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Linux中的&是什么”吧!

實際上,命令的用法并不難,例如  mkdir、touch 和 find 也分別可以簡單概括為“建立新目錄”、“更新文件”和“在目錄樹中查找文件”而已。

但如果要理解

mkdir test_dir 2>/dev/null || touch images.txt && find . -iname "*jpg" > backup/dir/images.txt &

這一串命令的目的,以及為什么要這樣寫,就沒有這么簡單了。

關鍵之處就在于命令之間的連接符號。掌握了這些符號的用法,不僅可以讓你更好理解整體的工作原理,還可以讓你知道如何將不同的命令有效地結合起來,提高工作效率。

在這一篇文章和接下來的文章中,我會介紹如何使用 & 號和管道符號(|)在不同場景下的使用方法。

幕后工作

我來舉一個簡單的例子,看看如何使用 & 號將下面這個命令放到后臺運行:

cp -R original/dir/ backup/dir/

這個命令的目的是將 original/dir/ 的內容遞歸地復制到 backup/dir/  中。雖然看起來很簡單,但是如果原目錄里面的文件太大,在執行過程中終端就會一直被卡住。

所以,可以在命令的末尾加上一個 & 號,將這個任務放到后臺去執行:

cp -R original/dir/ backup/dir/ &

任務被放到后臺執行之后,就可以立即繼續在同一個終端上工作了,甚至關閉終端也不影響這個任務的正常執行。需要注意的是,如果要求這個任務輸出內容到標準輸出中(例如  echo 或 ls),即使使用了 &,也會等待這些輸出任務在前臺運行完畢。

當使用 & 將一個進程放置到后臺運行的時候,Bash 會提示這個進程的進程 ID。在 Linux 系統中運行的每一個進程都有一個唯一的進程  ID,你可以使用進程 ID 來暫停、恢復或者終止對應的進程,因此進程 ID 是非常重要的。

這個時候,只要你還停留在啟動進程的終端當中,就可以使用以下幾個命令來對管理后臺進程:

  •  jobs 命令可以顯示當前終端正在運行的進程,包括前臺運行和后臺運行的進程。它對每個正在執行中的進程任務分配了一個序號(這個序號不是進程  ID),可以使用這些序號來引用各個進程任務。

$ jobs [1]- Running cp -i -R original/dir/* backup/dir/ & [2]+ Running find . -iname "*jpg" > backup/dir/images.txt &
  •  fg 命令可以將后臺運行的進程任務放到前臺運行,這樣可以比較方便地進行交互。根據 jobs命令提供的進程任務序號,再在前面加上 %  符號,就可以把相應的進程任務放到前臺運行。

$ fg %1 # 將上面序號為 1 的 cp 任務放到前臺運行cp -i -R original/dir/* backup/dir/

如果這個進程任務是暫停狀態,fg 命令會將它啟動起來。

  • 使用 ctrl+z 組合鍵可以將前臺運行的任務暫停,僅僅是暫停,而不是將任務終止。當使用 fg 或者 bg  命令將任務重新啟動起來的時候,任務會從被暫停的位置開始執行。但 sleep[4] 命令是一個特例,sleep 任務被暫停的時間會計算在 sleep  時間之內。因為 sleep 命令依據的是系統時鐘的時間,而不是實際運行的時間。也就是說,如果運行了 sleep 30,然后將任務暫停 30  秒以上,那么任務恢復執行的時候會立即終止并退出。? bg 命令會將任務放置到后臺執行,如果任務是暫停狀態,也會被啟動起來。

$ bg %1 [1]+ cp -i -R original/dir/* backup/dir/ &

如上所述,以上幾個命令只能在同一個終端里才能使用。如果啟動進程任務的終端被關閉了,或者切換到了另一個終端,以上幾個命令就無法使用了。

如果要在另一個終端管理后臺進程,就需要其它工具了。例如可以使用 kill[5] 命令從另一個終端終止某個進程:

kill -s STOP <PID>

這里的 PID 就是使用 & 將進程放到后臺時 Bash 顯示的那個進程 ID。如果你當時沒有把進程 ID 記錄下來,也可以使用 ps 命令(代表  process)來獲取所有正在運行的進程的進程 ID,就像這樣:

ps | grep cp

執行以后會顯示出包含 cp 字符串的所有進程,例如上面例子中的 cp 進程。同時還會顯示出對應的進程 ID:

$ ps | grep cp 14444 pts/3 00:00:13 cp

在這個例子中,進程 ID 是 14444,因此可以使用以下命令來暫停這個后臺進程:

kill -s STOP 14444

注意,這里的 STOP 等同于前面提到的 ctrl+z 組合鍵的效果,也就是僅僅把進程暫停掉。

如果想要把暫停了的進程啟動起來,可以對進程發出 CONT 信號:

kill -s CONT 14444

這個給出一個可以向進程發出的常用信號[6]列表。如果想要終止一個進程,可以發送 TERM 信號:

kill -s TERM 14444

如果進程不響應 TERM 信號并拒絕退出,還可以發送 KILL 信號強制終止進程:

kill -s KILL 14444

強制終止進程可能會有一定的風險,但如果遇到進程無節制消耗資源的情況,這樣的信號還是能夠派上用場的。

另外,如果你不確定進程 ID 是否正確,可以在 ps 命令中加上 x 參數:

$ ps x| grep cp 14444 pts/3 D 0:14 cp -i -R original/dir/Hols_2014.mp4   original/dir/Hols_2015.mp4 original/dir/Hols_2016.mp4   original/dir/Hols_2017.mp4 original/dir/Hols_2018.mp4 backup/dir/

這樣就可以看到是不是你需要的進程 ID 了。

***介紹一個將 ps 和 grep 結合到一起的命令:

$ pgrep cp 8 18 19 26 33 40 47 54 61 72 88 96 136 339 6680 13735 14444

pgrep 可以直接將帶有字符串 cp 的進程的進程 ID 顯示出來。

可以加上一些參數讓它的輸出更清晰:

$ pgrep -lx cp 14444 cp

在這里,-l 參數會讓 pgrep 將進程的名稱顯示出來,-x 參數則是讓 pgrep 完全匹配 cp  這個命令。如果還想了解這個命令的更多細節,可以嘗試運行 pgrep -ax。

總結

在命令的末尾加上 & 可以讓我們理解前臺進程和后臺進程的概念,以及如何管理這些進程。

在 UNIX/Linux 術語中,在后臺運行的進程被稱為守護進程daemon。如果你曾經聽說過這個詞,那你現在應該知道它的意義了。

和其它符號一樣,& 在命令行中還有很多別的用法。

到此,相信大家對“Linux中的&是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南阳市| 东莞市| 宁夏| 恩施市| 兴文县| 郑州市| 通州区| 宜君县| 潜山县| 聂荣县| 万全县| 阳江市| 大竹县| 高邑县| 嵊州市| 许昌市| 遵义市| 曲水县| 阿勒泰市| 四子王旗| 霍山县| 温州市| 丰县| 司法| 军事| 谢通门县| 盐津县| 达州市| 庐江县| 鹿泉市| 成都市| 台安县| 江口县| 乌兰浩特市| 西贡区| 龙州县| 和林格尔县| 新源县| 景德镇市| 游戏| 仙居县|