linux總結

自在现实發表於2024-04-19

1.Linux 系統種類
紅帽企業版 Linux :RHEL 是全世界內使用最廣泛的 Linux 系統。它具有極強的效能與穩定性,是眾多生成環境中使用的(收費的)系統。
Fedora :由紅帽公司釋出的桌面版系統套件,使用者可以免費體驗到最新的技術或工具,這些技術或工具在成熟後會被加入到 RHEL 系統中,因此 Fedora 也成為 RHEL 系統的試驗版本。
CentOS :透過把 RHEL 系統重新編譯併發布給使用者免費使用的 Linux 系統,具有廣泛的使用人群。
Deepin :中國發行,對優秀的開源成品進行整合和配置。
Debian :穩定性、安全性強,提供了免費的基礎支援,在國外擁有很高的認可度和使用率。
Ubuntu :是一款派生自 Debian 的作業系統,對新款硬體具有極強的相容能力。Ubuntu 與 Fedora 都是極其出色的 Linux 桌面系統,而且 Ubuntu 也可用於伺服器領域。

2.快捷方式
透過上下方向鍵 ↑ ↓ 來調取過往執行過的 Linux 命令;
命令或引數僅需輸入前幾位就可以用 Tab 鍵補全;
Ctrl + R :用於查詢使用過的命令(history 命令用於列出之前使用過的所有命令,然後輸入 ! 命令加上編號( !2 )就可以直接執行該歷史命令);
Ctrl + L:清除螢幕並將當前行移到頁面頂部;
Ctrl + C:中止當前正在執行的命令;
Ctrl + U:從游標位置剪下到行首;
Ctrl + K:從游標位置剪下到行尾;
Ctrl + W:剪下游標左側的一個單詞;
Ctrl + Y:貼上 Ctrl + U | K | Y 剪下的命令;
Ctrl + A:游標跳到命令列的開頭;
Ctrl + E:游標跳到命令列的結尾;
Ctrl + D:關閉 Shell 會話;

3.重定向
把本來要顯示在終端的命令結果,輸送到別的地方(到檔案中或者作為其他命令的輸入)。
輸出重定向 >

表示重定向到新的檔案, cut -d , -f 1 notes.csv > name.csv ,它表示透過逗號剪下notes.csv 檔案(剪下完有3個部分)獲取第一個部分,重定向到 name.csv 檔案。

輸出重定向 >>
表示重定向到檔案末尾,因此它不會像 > 命令這麼危險,它是追加到檔案的末尾(當然如果檔案不存在,也會被建立)。

再次執行 cut -d , -f 1 notes.csv >> name.csv ,則會把名字追加到 name.csv 裡面。
輸出重定向 2>
標準錯誤輸出

cat not_exist_file.csv > res.txt 2> errors.log
當我們 cat 一個檔案時,會把檔案內容列印到螢幕上,這個是標準輸出;
當使用了 > res.txt 時,則不會列印到螢幕,會把標準輸出寫入檔案 res.txt 檔案中;
2> errors.log 當發生錯誤時會寫入 errors.log 檔案中。
輸出重定向 2>>
標準錯誤輸出(追加到檔案末尾)同 >> 相似。

輸出重定向 2>&1
標準輸出和標準錯誤輸出都重定向都一個地方

cat not_exist_file.csv > res.txt 2>&1 # 覆蓋輸出
cat not_exist_file.csv >> res.txt 2>&1 # 追加輸出
目前為止,我們接觸的命令的輸入都來自命令的引數,其實命令的輸入還可以來自檔案或者鍵盤的輸入。

圖片

輸入重定向 <
< 符號用於指定命令的輸入。

cat < name.csv # 指定命令的輸入為 name.csv復
雖然它的執行結果與 cat name.csv 一樣,但是它們的原理卻完全不同。

cat name.csv 表示 cat 命令接收的輸入是 notes.csv 檔名,那麼要先開啟這個檔案,然後列印出檔案內容。
cat < name.csv 表示 cat 命令接收的輸入直接是 notes.csv 這個檔案的內容, cat命令只負責將其內容列印,開啟檔案並將檔案內容傳遞給 cat 命令的工作則交給終端完成。
輸入重定向 <<
將鍵盤的輸入重定向為某個命令的輸入。

sort -n << END # 輸入這個命令之後,按下回車,終端就進入鍵盤輸入模式,其中END為結束命令(這個可以自定義)
wc -m << END # 統計輸入的單詞複製程式碼

前臺程序 & 後臺程序
預設情況下,使用者建立的程序都是前臺程序,前臺程序從鍵盤讀取資料,並把處理結果輸出到顯示器。例如執行 top 命令,這就是一個一直執行的前臺程序。

後臺程序的優點是不必等待程式執行結束,就可以輸入其它命令。在需要執行的命令後面新增& 符號,就表示啟動一個後臺程序。

&
啟動後臺程序,它的缺點是後臺程序與終端相關聯,一旦關閉終端,程序就自動結束了。

cp name.csv name-copy.csv &
nohup
使程序不受結束通話(關閉終端等動作)的影響。

nohup cp name.csv name-copy.csv
nohup 命令也可以和 & 結合使用。

nohup cp name.csv name-copy.csv &
bg
使一個“後臺暫停執行”的程序,狀態改為“後臺執行”。

bg %1 # 不加任何引數的情況下,bg命令會預設作用於最近的一個後臺程序,如果新增引數則會作用於指定標號的程序
實際案例1:

  1. 執行 grep -r "log" / > grep_log 2>&1 命令啟動一個前臺程序,並且忘記新增 & 符號
  2. ctrl + z 使程序狀態轉為後臺暫停
  3. 執行 bg 將命令轉為後臺執行
    實際案例2:

前端開發時我們經常會執行 yarn start 啟動專案
此時我們執行 ctrl + z 先使其暫停
然後執行 bg 使其轉為後臺執行
這樣當前終端就空閒出來可以幹其它事情了,如果想要喚醒它就使用 fg 命令即可(後面會講)
jobs
顯示當前終端後臺程序狀態。

[root@lion ~]# jobs
[1]+ Stopped top
[2]- Running grep --color=auto -r "log" / > grep_log 2>&1 &
fg
fg 使程序轉為前臺執行,用法和 bg 命令類似。

我們用一張圖來表示前後臺程序切換:

圖片

我們可以使程式在後臺執行,成為後臺程序,這樣在當前終端中我們就可以做其他事情了,而不必等待此程序執行結束。

守護程序
一個執行起來的程式被稱為程序。在 Linux 中有些程序是特殊的,它不與任何程序關聯,不論使用者的身份如何,都在後臺執行,這些程序的父程序是 PID 為1的程序, PID 為1的程序只在系統關閉時才會被銷燬。它們會在後臺一直執行等待分配工作。我們將這類程序稱之為守護程序 daemon 。

守護程序的名字通常會在最後有一個 d ,表示 daemon 守護的意思,例如 systemd、httpd 。

相關文章