1. 程式人生 > 實用技巧 >超有用的linux筆記

超有用的linux筆記

目錄

名詞解釋

根目錄說明

tree -L 1

.
├── bin -> usr/bin # 英語binary的縮寫,表示”二進位制檔案“,bin目錄包含了會被所有使用者使用的可執行程式
├── boot # 英語boot表示”啟動“,boot目錄包含與Linux啟動密切相關的檔案
├── dev # 英語device的縮寫, 表示”裝置“,包含外設,它裡面的子目錄,每一個對應一個外設
├── etc # etc目錄包含系統的配置檔案,按照原始Unix的說法,這下面都是一堆零零碎碎的東西,就叫etc好了,是歷史遺留問題
├── home # 英語home表示”家“,使用者的私人目錄,在home目錄中,我們放置私人的檔案
├── lib -> usr/lib # 英語library的縮寫,表示”庫“,目錄包含被程式所呼叫的庫檔案,以.so結尾的檔案
├── lib64 -> usr/lib64
├── media # 英語media表示”媒體“,可移動的外設(USB盤,SD卡,DVD,光碟等)插入電腦時可以讓我們通過media的子目錄來訪問這些外設的內容
├── mnt # mnt是英語mount的縮寫,表示”掛載“,有點類似media目錄,但一般用於臨時掛載一些裝置
├── opt # 英語 optional application software package的縮寫,表示”可選的軟體包“,用於安裝多數第三方軟體和外掛
├── proc
├── root
├── run
├── sbin -> usr/sbin # 英語system binary的縮寫, 表示”系統二進位制檔案“ ,包含系統級的重要可執行程式
├── srv # 英語service的縮寫,表示”服務“,包含一些網路服務啟動之後所需要取用的資料
├── sys
├── tmp # 英語temporary的縮寫,表示”臨時的“,普通使用者和程式存放臨時檔案的地方
├── usr # 是英語Unix Software Resource的縮寫,表示”Unix作業系統軟體資源“,目錄裡安裝了大部分使用者需要呼叫的程式
└── var # 英語variable的縮寫,表示”動態的,可變的“,var通常包含程式的資料,比如log(日誌)檔案,記錄電腦了發生了什麼事

掛載

所謂的掛載就是利用一個目錄當成進入點,將磁碟分割槽的資料放置在該目錄下;也就是說進入該目錄就可以讀取該分割槽的意思。這個操作我們稱為掛載,那個進入點的目錄我們稱為掛載點

shell

當談到命令時,我們實際上指的是shellshell是一個接收由鍵盤輸入的命令,並將其傳遞給作業系統來執行的程式。幾乎所有的Linux發行版都提供shell程式,該程式來自於稱之為bash的GNU專案。bash是Bourne Again Shell的首字母縮寫,Bourne Again Shell基於這樣一個事實,即bash是sh的增強版本,而sh是最初的UNIX shell程式,由Steve Bourne編寫。

終端

當使用圖形使用者介面時,需要另一種叫做終端模擬器(terminal emulator)的程式與shell進行互動。如果我們仔細檢視桌面選單,那麼很可能會找到一個款終端模擬器。在KDE環境下使用的是konsole,而在GNOME環境下使用的是gonme-terminal,但在桌面選單上很可能將它們簡單地統稱為終端。在Linux系統中,還有許多其他的終端模擬器可以使用,但是它們基本上都做同樣的事情:讓使用者訪問shell

硬體相關

修改主機名

檢視當前主機名

hostname

臨時修改主機名:

hostname new_name(新主機名)

上面的修改方式屬於臨時修改,系統重啟後失效,如果想要永久性修改主機名,那麼就需要修改配置檔案

  • 在CentOS6中,需要修改 /etc/sysconfig/network檔案
  • 在CentOS7中,需要修改 /etc/hostname檔案

檢視CentOS版本

cat /etc/redhat-release

檢視CPU總核數

# 表示一顆CPU四核
grep processor /proc/cpuinfo |wc -l
grep -c processor /proc/cpuinfo

校正CentOS7時間

GPS系統中有兩種時間區分,UTC就0時區的時間,CST為本地時間,如北京為早上八點(東八區),UTC時間比北京時晚八小時;
CST:Central Standard Time,UTC+8:00 中央標準時間
UTC:Universal Time Coordinated 世界協調時間

# 安裝ntp軟體包
sudo yum -y install ntp

# 設定ntp開機自啟
systemctl enable ntpd.service

# 啟動ntp服務
sudo service ntpd.service restart

如果需要配置CTS時間,需要建立如下軟連結

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

如果需要配置UTC時間,需要建立如下軟連結

ln -sf /usr/share/zoneinfo/Universal /etc/localtime

修改檔案最大開啟數

linux修改檔案最大開啟數量的方法,預設情況下是1024的。

我們可以使用 ulimit -n命令檢視

如果我們想臨時修改,可以使用 ulimit -n 數量來修改,不過系統重啟後修改會丟失

如果想永久修改,需要修改/etc/security/limits.conf檔案

修改系統埠最大監聽佇列的長度

在linux中,/proc/sys/net/core/somaxconn這個引數,定義了系統中每一個埠最大的監聽佇列的長度,這是個全域性的引數,預設值為128。

somaxconn限制了接收新 TCP 連線偵聽佇列的大小。對於一個經常處理新連線的高負載 web服務環境來說,預設的 128 太小了。大多數環境這個值建議增加到 1024 或者更多。 服務程序會自己限制偵聽佇列的大小(例如 sendmail(8) 或者 Apache),常常在它們的配置檔案中有設定佇列大小的選項。大的偵聽佇列對防止拒絕服務 DoS 攻擊也會有所幫助。

vim /etc/sysctl.conf
# 新增
net.core.somaxconn = 1024

然後執行sysctl -p使配置生效。

修改核心記憶體分配策略

overcommit_memory是一個核心對記憶體分配的一種策略。 具體可見/proc/sys/vm/overcommit_memory下的值

overcommit_memory取值又三種分別為0,1,2

  • overcommit_memory=0,表示核心將檢查是否有足夠的可用記憶體供應用程序使用;如果有足夠的可用記憶體,記憶體申請允許;否則,記憶體申請失敗,並把錯誤返回給應用程序。
  • overcommit_memory=1,表示核心允許分配所有的實體記憶體,而不管當前的記憶體狀態如何。
  • overcommit_memory=2, 表示核心允許分配超過所有實體記憶體和交換空間總和的記憶體。

當我們啟動redis服務時,會報警告,翻譯為【“警告超限”記憶體設定為0!在記憶體不足的情況下,後臺儲存可能會失敗。若要解決此問題,請將“vm.overcommit_memory=1”新增到/etc/sysctl.conf,然後重新啟動或執行命令“sysctl vm.overcommit_memory=1”以使其生效。】

vim /etc/sysctl.conf
# 新增
vm.overcommit_memory = 1

然後執行sysctl -p使配置生效。

vim編輯器

基本上vi共分為3種模式,分別是一般命令模式、編輯模式與命令列模式

一般命令模式(command mode)

以vi開啟一個檔案就直接進入一般命令模式了(這是預設的模式,也成為一般模式)。在這個模式中,你可以使用【上下左右】按鍵來移動游標,你可以使用【刪除字元】或【刪除整行】來處理檔案內容,也可以使用【複製、貼上】來處理你的檔案內容。

編輯模式(insert mode)

在一般命令模式中可以進行刪除、複製、貼上等的操作,但是卻無法編輯檔案的內容。要等到你按下【i、I、o、O、a、A、r、R】等任何一個字母之後才會進入編輯模式。注意了,通常在Linux中,按下這些按鍵時,在介面的左下方會出現【INSERT】或【REPLACE】的字樣,此時才可以進行編輯,而如果要回到一般命令模式時,則必須要按下【Esc】這個按鍵即可退出編輯模式。

命令列模式(command-line mode)

在一般模式當中,輸入【