超有用的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
當談到命令時,我們實際上指的是shell
。shell是一個接收由鍵盤輸入的命令,並將其傳遞給作業系統來執行的程式
。幾乎所有的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)
在一般模式當中,輸入【