Linux基本命令學習
對作業系統進行資訊查詢
硬碟大小
檢視磁碟資訊: fdisk -l
/dev/sda 作業系統中第一塊硬碟的名稱以及所在路徑
linux作業系統中一切皆檔案(檔名) sd(硬碟型別) a(第一塊)
為什麼很多時候實際容量比廠家標註的要小?
因為廠家按照1000作為進位制,而作業系統按照1024作為進位制
記憶體大小
cat /proc/meminfo 只需要關注第一行,Memtotal
CPU型號
cat /proc/cpuinfo
關機的命令
reboot 重啟
poweroff 關機
作業系統的目錄結構及檔案屬性
linux作業系統樹狀結構
目錄==資料夾
起始 / 是一切的起源
cd change directory
pwd 顯示當前路徑
ls list,列出當前目錄中的內容
/bin 普通使用者和管理員都可以執行的命令
/sbin 只有管理員才能執行的命令 關機重啟
/boot 引導 主引導目錄 獨立的分割槽 啟動選單 核心
/dev device-裝置 裝置檔案存放目錄
/etc 配置檔案存放目錄
/home 普通使用者的家目錄
/root 管理員的家
/lib /lib64 一些庫檔案
/media 光碟機的掛載目錄
/mnt 臨時裝置掛載目錄
/proc 裡面的資料都在記憶體裡,程序的所在目錄
/tmp 臨時檔案存放目錄
/usr 軟體安裝目錄
/var 嘗變檔案存放目錄 日誌檔案 郵件檔案
快捷鍵使用及檔案系統分類
安裝vmware-tools 實現虛擬機器和真實機之間的檔案複製
進入資料夾,可以通過絕對路徑/相對路徑進入
Tab 可以補全命令字/路徑/檔案
Ctrl+L 清屏
Ctrl+C 終止當前程序
linux通過檔案顏色分辨檔案型別
藍色 目錄
黑色 普通檔案
淺藍色 符號連結(快捷方式)
黑底黃字 裝置檔案 硬碟 sda
綠色 可執行檔案
紅色 壓縮包
紫色 圖片&模組檔案
增刪改查基礎命令
檢視目錄下有哪些內容 ls
檢視檔案內容 cat
建立檔案 touch echo "hello" > 檔案
建立目錄 mkdir 目錄名
改:剪下和複製 mv(也可以重新命名) cp
建立符號連結
刪除 rm 可選項 -f (強制刪除,但是目錄下面有東西時不行) -fr/-rf (r遞迴刪除,可以刪除目錄)
命令字幫助資訊查詢
linux命令字格式 : 命令字 [選項] [檔案或者目錄]
那麼如何檢視一個命令字的幫助手冊
man menu-選單
eg. man ls
退出這個詳細的檢視模式按q
查詢就輸入 /-l 就能查到很多包含 -l 的東西, 用 n 鍵跳下一個
ls -a 檢視隱藏檔案
ls -l 檢視檔案的詳細資訊
ls -lh 顯示檔案的大小
ls -R 遞迴顯示目錄中子目錄的內容
當前作業系統有內部命令和外部命令(安裝的第三方軟體帶來的,通常都帶有幫助手冊)
而內部命令 命令直譯器自帶的命令 help cd (檢視cd的使用)
壓縮與解壓
/tmp 目錄中建立一個大小為100m的檔案bigfile
dd if=/dev/zero of=/tmp/bigfile bs=1M count=100
if = inputfile of = outputfile bs 單位 count 計數器
gzip bigfile (用來壓縮該檔案)
紅色代表是壓縮檔案.
用 file bigfile.gz 命令 分析該壓縮檔案
可以看出該檔案是gzip壓縮的
那麼怎麼解壓縮呢?
gunzip bigfile.gz
得到解壓檔案
還有個bzip2,壓縮與解壓縮命令分別如下:
root@ryan-virtual-machine:/tmp# bzip2 bigfile
root@ryan-virtual-machine:/tmp# bunzip2 bigfile.bz2
還有檢視目錄大小,一般不用ls
用 du -sh /tmp
root@ryan-virtual-machine:/tmp# ls -lhd /tmp
drwxrwxrwt 18 root root 4.0K 8月 31 19:48 /tmp
root@ryan-virtual-machine:/tmp# du -sh /tmp
101M /tmp
怎麼壓縮個目錄呢>>>這倆工具都不能壓縮目錄呀?
如何壓縮目錄
先進行打包(tar),再壓縮.
tar -cf /tmp/allfile.tar /tmp/allfile (c是create)
對allfile資料夾打包成allfile.tar
不開啟包的情況下看看包裡有啥: tar -tvf allfile.tar
怎麼解包呢?
tar -xf allfile.tar -C [目標目錄]
有沒有直接打包壓縮?
tar -zcf /tmp/allfile.tar.gz allfile
可以直接解壓解包?
tar -zxf allfile.tar.gz -C [目標路徑]
-z使用的gzip壓縮, -j 使用的是bzip2
vim編輯器使用
vi編輯器, vim的升級版
在/tmp目錄中建立一個名為test.txt的檔案並寫入hello
三種工作模式: 命令模式 輸入模式 末行模式
命令模式->輸入模式 : i
輸入模式->末行模式 : Esc到命令模式 ,然後輸入 : 再加命令 q (推出) / wq (儲存退出) / !q (不儲存退出)
:set nu 顯示行號
:% s/l/x/g %代表每一行, s代表替換, g是代表無論出現多少的 l 都會被替換成 x :% s/old/new/g , 每一行中的old替換成new
命令模式有非常多的快捷編輯快捷鍵
2yy複製當前行及下一行
p為貼上到當前行下
dd 刪除當前行
gg回到第一行
G回到最後一行
50G去五十行
我想刪除50-60的所有行, 游標放在50行, 輸入50dd
想要刪除50-55行的資料 用 :50,55d
linux軟體安裝
軟體的分類:
原始碼包 :
程式碼公開,需要自己編譯安裝,一般以壓縮包形式提供,開源,可以進行二次編輯, 並且會有很多人維護
可以指定安裝的路徑和編輯所需要的功能
現在有一個 httpd-2.2.15.tar.gz
先解包 tar -zxfhttpd-2.2.15.tar.gz -C /usr/src (/usr/src是原始碼存放路徑)
README可以看到軟體功能, 安裝是哪個檔案指導我們呢? INSTALL
通過配置指令碼指定安裝路徑和功能, 並且聲稱makefile編譯指令碼檔案
/configure --prefix=/usr/local/webserver
通過make命令控制makefile檔案進行順序編譯
最後將編譯好的檔案拷貝到安裝路徑下 make install
封裝後的軟體包 :
原始碼包安裝步驟略顯繁雜,不同linux廠家對軟體進行了封裝.
特點字尾
rpm red hat package manager
deb debian
原始碼包可以不考慮系統的版本, 封裝後就不能無視啦 封裝好的軟體包都是壓縮檔案
ls | grep "tree" 解釋: | 是管道符, 作用是將前一個命令的輸出作為後一個命令的輸入, grep是過濾, .
安裝rpm包軟體步驟
針對軟體安裝,首先要確認有沒有安裝過該軟體. (CentOS) rpm -qa 列出所有已經安裝過的rpm軟體包 (Ubuntu)dpkg -l
確認該軟體的作用 . (CentOS)rpm -qpi [軟體名] 檢視軟體詳細資訊
確認該軟體安裝的路徑 封裝後的軟體包安裝路徑固定
安裝軟體 (CentOS) rpm -ivh [軟體名] (Ubuntu) apt-get installl
怎麼解除安裝 (CentOS) rpm -e [軟體名] (Ubuntu) apt-get uninstall
通過yum安裝軟體
解除安裝軟體需要先解除安裝依賴它的軟體
安裝軟體需要先安裝依賴
不想這樣安裝解除安裝了, 想根據依賴關係表安裝、解除安裝軟體
linux作業系統中的使用者分類
ryan 普通使用者 比管理員低, 也可以呃登陸系統
root 超級管理員
使用者的分類和組
/etc/passwd 儲存了作業系統中所有使用者的資訊
使用者名稱
密碼佔位符
使用者的uid 0表示超級使用者 500-60000表示普通使用者 1-499表示程式使用者, 不允許登陸系統
基本組的gid 先有組, 才有使用者
使用者資訊記錄欄位
使用者的家目錄
使用者登陸系統後使用的命令直譯器
/etc/shadow 儲存了使用者密碼資訊
使用者名稱
使用者的密碼加密後的字串
距離1970/1/1 密碼最近一次的修改時間
密碼的最短有效期
密碼的最長有效期
密碼過期前7天警告
密碼的不活躍期
使用者的失效時間
調整及建立使用者屬性
建立一個class1的組,組id為1005,class2的組id 2000
建立tom使用者要求其基本組是class1組, 附加組為class2組, tom使用者的uid為600
建立一個程式使用者uid為250 使用者名稱為testuser 沒有家目錄
將tom使用者設定密碼為123 並設定密碼最長有效期為90天 將使用者密碼進行鎖定使其無法登陸系統
刪除tom使用者和testuser使用者 刪除class1組和2組
groupadd class1
cat /etc/group 發現建立的組id不符合要求
groupmod -g 1005 class1 我改!
groupadd -g 2000 class2 這次直接幹!
useradd -g class1 tom 還要uid?還要附加組
usermod -G 2000 -u 600 tom
useradd -u 250 -M -s /sbin/nologin testuser -M是沒有家目錄, -s /sbin/nologin 是不能登入
chage -M 90 tom
passwd -l tom 鎖定tom
passwd -u tom 解鎖tom
passwd -S tom 檢視使用者密碼資訊
userdel -r testuser
userdel -r tom
groupdel class1
groupdel class2
調整檔案及目錄許可權
直接檢視檔案許可權的命令
root@ryan-virtual-machine:/tmp# ls -l test.txt -rw-r--r-- 1 root root 6 8月 31 20:25 test.txt
檢視資料夾許可權呢
-rw-r--r-- 1 root(所屬者) root(所屬組) 6(關聯的資料 / 目錄中的子目錄格式) 8月 31 20:25 test.txt
許可權一共10個字母 : d rwx --- ---
欄位1 : 檔案型別 -普通檔案 d目錄 l符號連結 b塊裝置
欄位2 : 檔案所屬者對該檔案的許可權
r w x
檔案 讀取 寫入 執行
目錄 可以檢視目錄內容 可以增刪檔案 可以進入目錄
欄位3 : 檔案所屬組的許可權
欄位4 : 其他使用者的許可權(既不是檔案所有者也不是檔案所屬組中的使用者)
chmod 使用者 算數運算子 許可權檔案
使用者 : u(所屬者) g(所屬組) o(其他使用者的許可權) a(all)
算術運算子 : -去除許可權 +新增許可權 =指定許可權
許可權 : rwx
改變所屬者為tom 所屬組改為tom組
chown tom /tmp/test.txt
chgrp tom /tmp/test.txt
7代表 111 , 是4+2+1 ,代表 rwx全有
粘滯位針對目錄進行授權, 目錄中建立的檔案只有建立者可以刪除
chmod o+t test 這個 t
tmp資料夾就有粘滯位, 每個程序只能刪除自己的檔案
sgid是針對目錄建立的許可權, 在該目錄中建立的檔案所屬組繼承父目錄的屬組
chmod g+s test
suid針對可執行檔案建立.執行這個程式的使用者就會繼承這個檔案所屬者的許可權, 這個跟系統的安全有很大關係
chmod u+s [檔名]
不再允許新增新使用者的請求
建立新使用者時候, 沒有指定組的話, 先在 /etc/group建立一個使用者同名組
再在/etc/passwd註冊使用者資訊
再在/etc/shadow註冊密碼資訊
在/home下生成家目錄檔案
只要/etc/passwd和/etc/shadow目錄鎖定 ,就可以不再新增新使用者.
chattr +i/etc/passwd /etc/shadow 這就成啦 i 就是不可變屬性
解除的話就 -i 即可
umask值
目錄的最高許可權 0777-0022 = 0755
檔案 666 - 022 = 644
umask值最好是027, 讓其他使用者沒有任何許可權
在作業系統裡怎麼修改這個值呢??
一個是在 /etc/profile
還有一個在 /etc/bashrc
建立使用者預設密碼有效期90天
還在 /etc/profile 檔案裡修改 PASS_MAX_DAYS