日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux知识点记录

發布時間:2025/5/22 linux 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux知识点记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

----------------------------------------------一切關于Linux的知識點都記錄在這里-------------------------------------------------------

在命令行中輸入$man 2 syscalls可以查看所有的系統調用。可以通過$man 2 read來查看系統調用read()的說明。在這兩個命令中的2都表示我們要在2類(系統調用類)中查詢(具體各個類是什么可以通過$man man看到)。

>表示重新定向,|表示管道

Linux老鳥鼓勵新手多用shell,少用圖形化界面。一個shell對應一個終端(terminal)。

Linux利用內核實現軟硬件的對話。通過系統調用這個接口,Linux將上層的應用與下層的內核分離,隱藏了底層的復雜性,也提高了上層應用的可移植性。

如何了解一個陌生的命令?

$which ls 在默認路徑中搜索命令,返回該命令的絕對路徑。

$whereis ls 在相對比較大的范圍搜索命令,返回該命令的絕對路徑。

$whatis ls 用很簡短的一句話來介紹命令。

$man ls 查詢簡明的幫助手冊。

$info ls 查詢更詳細的幫助信息。

文件操作相關:

$touch a.txt

$cp a.txt a.txt 在工作目錄下,將a.txt復制到文件b.txt

$mv a.txt c.txt 將a.txt移動成為c.txt(相當于重命名rename)

$rm a.txt 刪除a.txt

$rm -r /home/vamei 刪除從/home/vamei向下的整個子文件系統。-r表示recursive,是指重復刪除的操作,/home/vamei文件夾為空,然后刪除/home/vamei文件夾本身。

$rm -rf /home/kevin/temp/ ?f的目的是告訴rm放心干,不用再確認了。

$mkdir /home/vamei/good 創建一個新的目錄

$rmdir /home/vamei/good 刪除一個空的目錄

$chmod 755 a.txt

(你必須是文件a.txt的擁有者才能運行此命令。或者以$sudo chmod 755 a.txt的方式,以超級用戶的身份運行該命令。)

change mode 改變a.txt的讀、寫以及執行權限。還記得每個文件都有九位的讀寫執行權限(參看?Linux文件管理背景知識),分為三組,分別對應擁有者(owner),擁有組(owner group)中的用戶和所有其他用戶(other)。在這里,我們也有三個數字,755,對應三個組。7被分配給擁有者,5被分配給擁有組,最后一個5分配給其它用戶。Linux規定: 4為有讀取的權利,2為有寫入的權利,1為有執行的權利。我們看到的7實際上是4 + 2 + 1,表示擁有者有讀、寫、執行三項權利。(想想5 意味著什么)

這時,運行$ls -l a.txt, 你應該看到九位的權限變成了rwxr-xr-x。根據自己的需要,你可以用比如444, 744代替755,來讓文件有不同的權限。

當Linux執行一個程序的時候,會自動打開三個流,標準輸入,標準輸出,標準錯誤。比如說你打開命令行的時候,默認情況下,命令行的標準輸入連接到鍵盤,標準輸出和標準錯誤都連接到屏幕。對于一個程序來說,盡管它總會打開者三個流,但它會根據需要使用,并不是一定要使用。

$ls > a.txt 重新定向

$ls >> a.txt 這里>>的作用也是重新定向標準輸出。如果a.txt已經存在的話,ls產生的文本流會附加在a.txt的結尾,而不會像>那樣每次都新建a.txt。

echo的作用是將文本流導向標準輸出。

$echo hello > a.txt

我們將cat標準輸入指向a.txt,文本會從文件流到cat,然后再輸出到屏幕上。當然,我們還可以同時重新定向標準輸出:$cat < a.txt > b.txt 這樣,a.txt的內容就復制到了b.txt中。

我們還可以使用>&來同時重新定向標準輸出和標準錯誤。假設我們并沒有一個目錄void。那么$cd void > a.txt會在屏幕上返回錯誤信息。因為此時標準錯誤依然指向屏幕。當我們使用:$cd void >& a.txt 錯誤信息被導向a.txt。

$cat eee &>> a.txt 附加到最后

如果只是想重新定向標準錯誤,可以使用2>:$cd void 2> a.txt > b.txt 標準錯誤對應的總是2號,所以有以上寫法。標準錯誤輸出到a.txt,標準輸出輸出到b.txt。

-------------------------------------------------------------------------------------

管道(pipe):理解了以上內容之后,管道的概念就易如反掌。管道可以將一個命令的輸出導向另一個命令的輸入,從而讓兩個(或者更多命令)像流水線一樣連續工作,不斷地處理文本流。在命令行中,我們用|表示管道:

$cat < a.txt | wc

wc命令代表word count,用于統計文本中的行,詞以及字符總數。a.txt中的文本先流到cat,然后從cat的標準輸出流到wc的標準輸入,從而讓wc知道自己要處理的是a.txt這個字符串。

$echo abcd | wc

Linux的各個命令實際上高度商業化,并盡量相互獨立。對每一個都只專注于一個小的功能。但通過pipe,我們可以將這些功能合在一起,實現一些復雜的目的。

-------------------------------------------------------------------------------

如何創建一個新進程?

實際上,當計算機開機的時候,內核(kernel)只建立了一個init進程。Linux?kernel并不提供直接建立新進程的系統調用。剩下的所有進程都是init進程通過fork機制建立的。新的進程要通過老的進程復制自身得到,這就是fork。fork是一個系統調用。進程存活于內存中。每個進程都在內存中分配有屬于自己的一片空間 (address space)。當進程fork的時候,Linux在內存中開辟出一片新的內存空間給新的進程,并將老的進程空間中的內容復制到新的空間中,此后兩個進程同時運行。

老進程成為新進程的父進程(parent process),而相應的,新進程就是老的進程的子進程(child process)。一個進程除了有一個PID之外,還會有一個PPID(parent PID)來存儲的父進程PID。如果我們循著PPID不斷向上追溯的話,總會發現其源頭是init進程。所以說,所有的進程也構成一個以init為根的樹狀結構。

還可以用$pstree命令來顯示整個進程樹。

進程與線程(Thread)

盡管在UNIX中,進程與線程是有聯系但不同的兩個東西,但在Linux中,線程只是一種特殊的進程。多線程之間可以共享內存空間和IO接口。所以,進程是Linux程序的唯一的實現方式。

Linux進程間通信

信號可以看作一種粗糙的進程間通信(IPC,interprocess communication)的方式,用以向進程封閉的內存空間傳遞信息。為了讓進程間傳遞更多的信息量,我們需要其他的進程間通信方式。這些進程間通信方式可以分為兩種:

管道機制。我們可以使用管道將一個進程的輸出和另一個進程的輸入連接起來,從而使用文件操作API來管理進程間通信。在shell中,我們經常利用管道將多個進程連接在一起,從而讓各個進程協作,實現復雜的功能。

傳統IPC。我們主要是指消息隊列,信號量,共享內存。這些IPC的特點是允許多進程之間共享資源,這與多線程共享heap和global data相類似。由于多進程任務具有并發性,所以在共享資源的時候也必須解決同步的問題。




轉載于:https://my.oschina.net/u/923087/blog/338953

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Linux知识点记录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。