幫助手冊命令 man
man命令:可以通過一些參數,快速查詢linux幫助手冊,並且格式化顯示。
Linux 下修改 root 密碼方法
passwd root
權限
chgrp :改變文件所屬羣組
chown -R:改變文件擁有者
chmod :改變文件的權限, SUID, SGID, SBIT等等的特性
su - user1 切換身份user1
查看服務
/etc/services
/etc/init.d/ 啓動腳本處
/etc/* :各服務各自的配置文件
service --status-all 查看所有服務
常用目錄
/etc 主要配置文件
/bin 常用執行文件
/sbin 重要的系統執行文件
/dev 存放設備文件
/dev/null 垃圾桶
/home 用戶目錄
/media /mnt 掛載外部裝置
/opt 第三方協議軟件 習慣放/usr/local
/proc 虛擬文件,存放內存數據:系統cpu、網絡..
/ (root, 根目錄): 與開機系統有關;
/usr (unix software resource):與軟件安裝/執行有關;
/usr/local/ 自己下載的軟件安裝目錄
/var (variable): 與系統運作過程有關的常態性變動的文件:緩存、log等。
/etc/issue 配置開機畫面顯示
/etc/motd 配置登錄顯示
常用命令
雙擊tab 獲取所有可能的命令,極其方便!
ls -alh list所有文件包括隱藏文件
set 獲取所有變量,包含bash接口配置相關
echo $$ 當前shell的PID
echo $? 返回上個命令的執行結果
env/export 顯示所有環境變量
echo $PATH 顯示環境變量中的PATH
PATH=$PATH:/home/dmtsai/bin 增加目錄到變量
export var1 使其變爲環境變量,可以讓子shell使用
echo $(uname -r) 顯示系統版本
uname -a 顯示系統架構
設置變量 name=justin
取消變量 unset name
命令中使用其他命令 $(command)
創建目錄: mkdir /tmp/chapter7_1
修改屬性: chown -R dmtsai:users /tmp/chapter7_1
修改權限: chmod -R 755 /tmp/chapter7_1
//SUID/SGID/SBIT 權限配置--> 要有x權限
4 爲 SUID 暫時將具有該程序擁有者 (owner) 的權限;
2 爲 SGID 暫時獲得得該程序羣組的支持
1 爲 SBIT wx權限下,僅有自己與 root 纔有權力刪除該文件
觀察文件類型: file
搜索命令完整路徑: which
搜索文件:
whereis whereis 與 locate 是利用數據庫來搜尋數據
updatedb 手動更新數據庫
find 強大的搜尋命令,但時間花用的很大! 因爲 find 是直接搜尋硬盤
df -h 獲取目前掛載的設備,整體磁盤使用量
du -sh 獲取文件所佔容量
dumpe2fs 查詢每個區段與 superblock 的信息
ln -s /etc/crontab crontab2 創建符號鏈接,類似windows 的快捷方式
read -p "Please keyin your name: " -t 30 named 讀取鍵盤輸入
declare 聲明變量
ulimit -a 顯示當前用戶的數據限制值
last 顯示登陸者信息
alias 顯示當前所有的命令別名,設置別名
unalias 取消別名
history 使用過的命令歷史
type -a 獲取命令搜尋順序
!comand 運行最近命令開頭爲command的命令
source/. 讀入環境配置文件,可以直接在父程序運行腳本
//輸入輸出
標準輸入 (stdin) :代碼爲 0 ,使用 < 或 << ;
標準輸出 (stdout):代碼爲 1 ,使用 > 或 >> ;
標準錯誤輸出(stderr):代碼爲 2 ,使用 2> 或 2>> ;
重定向操作符(&>)將標準輸出和錯誤輸出同時送到同一文件
//pipe
|grep|cut|sort|uniq|wc
|tee test.txt 雙向重導向,分送到文件去與屏幕stdout,可以讓下個命令繼續使用
- 減號 可以取用前一個命令的 stdout
//正則
grep '^ha' test.txt -n 單引號中使用正則
sed 將數據 standard input 進行取代、刪除、新增、擷取特定行等
e.g: nl test.txt |sed '2,3d'
sed 's/要被取代的字串/新的字串/g'
printf 格式化輸出
awk '條件類型1{動作1} 條件類型2{動作2} ...' filename 處理數據
diff/cmp 比對兩個文件
//
test 檢查工具, 判斷文件屬性等
文件系統
Linux 的正統文件系統則爲 Ext2 (Linux second extended file system, ext2fs)這一個。此外,在默認的情況下,windows 操作系統是不會認識 Linux 的 Ext2 的。
inode 表 每個文件都僅會佔用一個 inode 而已,記錄文件的屬性及該文件實際數據是放置在哪幾號 block 內;
data block是用來放置文件內容數據地方,在 Ext2 文件系統中所支持的 block 大小有 1K, 2K 及 4K 三種而已
一般來說,我們將 inode table 與 data block 稱爲數據存放區域,至於其他例如 superblock、 block bitmap 與 inode bitmap 等區段就被稱爲 metadata (中介數據) 囉,因爲 superblock, inode bitmap 及 block bitmap 的數據是經常變動的,每次新增、移除、編輯時都可能會影響到這三個部分的數據
Swap
- swap 的功能就是在應付物理內存不足的情況下所造成的內存延伸記錄的功能。
- 當物理內存不夠時,則某些在內存當中所佔的程序會暫時被移動到 swap 當中,讓物理內存可以被需要的程序來使用。另外,如果你的主機支持電源管理模式, 也就是說,你的 Linux 主機系統可以進入『休眠』模式的話,那麼, 運行當中的程序狀態則會被紀錄到 swap 去,以作爲『喚醒』主機的狀態依據! 另外,有某些程序在運行時,本來就會利用 swap 的特性來存放一些數據段, 所以, swap 來是需要創建的!只是不需要太大!
vi
0/Home 移動到行前
$/End 移動到行尾
[Ctrl] + [f] 向下移動一頁
[Ctrl] + [b] 向上移動一頁
G 移動到這個檔案的最後一行
gg/1G 移動到第一行
u 撤銷
o 當前位置下創建一行
O 當前位置上創建一行
dd 刪除光標所在行
x 刪除光標後字符
X 刪除光標前字符
yy 複製當前行
p 粘貼
J 當前行連接下一行
v 字符選擇
V 行選擇
ctrl+v 區塊選擇
y 複製選擇
d 刪除選擇
/word 搜尋字符串 ,光標之上
?word 搜尋字符串,光標之下
n 繼續搜索
vim 後面同時接好幾個檔案可同時開啓
:n 編輯下一個檔案
:N 編輯上一個檔案
:files 列出目前這個 vim 的開啓的所有檔案
//多窗口
:sp [filename] 開啓一個新窗口
[ctrl]+w+↓ 移到下方窗口
[ctrl]+w+↑ 移到上方窗口
Bash
/etc/shells 查看可用的shell
/etc/passwd 查看不同用戶取得的默認shell
/.bash_history 這個隱藏目錄保存了使用的命令歷史
\+[Enter] 避免命令太長,多行使用
scripts
- date +%Y%m%d 獲取今天日期
- script 的運行方式差異 (source, sh script, ./script)
善用判斷式
- test
[ “VBird Tsai” == “VBird” ]
-e 該『檔名』是否存在?(常用) -f 該『檔名』是否存在且爲文件(file)?(常用) -d 該『檔名』是否存在且爲目錄(directory)?(常用) -a (and)兩狀況同時成立。 -o (or)兩狀況任何一個成立。 ! 反相狀態,如 test ! -x file ,當 file 不具有 x 時,回傳 true -eq 兩數值相等 (equal) -ne 兩數值不等 (not equal) -gt n1 大於 n2 (greater than) -lt n1 小於 n2 (less than) -ge n1 大於等於 n2 (greater than or equal) -le n1 小於等於 n2 (less than or equal)
Shell script 的默認變量(
0, 1…)條件判斷式
//單條件 if [ 條件判斷式 ]; then 當條件判斷式成立時,可以進行的命令工作內容; fi //多條件 if [ 條件判斷式一 ]; then 當條件判斷式一成立時,可以進行的命令工作內容; elif [ 條件判斷式二 ]; then 當條件判斷式二成立時,可以進行的命令工作內容; else 當條件判斷式一與二均不成立時,可以進行的命令工作內容; fi //case case $變量名稱 in "第一個變量內容") 程序段 ;; "第二個變量內容") 程序段 ;; *) 不包含第一個變量內容與第二個變量內容的其他程序運行段 exit 1 ;; esac
循環
//滿足條件纔開始循環 while [ condition ] do 程序段落 done //滿足才結束 until [ condition ] do 程序段落 done //固定循環 for var in con1 con2 con3 ... do 程序段 done for (( 初始值; 限制值; 運行步階 )) do 程序段 done
函數
function fname() { 程序段 }
檢查語法錯誤
sh [-nvx] scripts.sh
賬號管理
- uid和gid
涉及目錄
/etc/passwd /etc/group /etc/shadow groups 查看所有支持的羣組 newgrp 有效羣組的切換 w/who 查詢已登錄的用戶 useradd 增加用戶 參考: /etc/default/useradd /etc/login.defs /etc/skel/* passwd [用戶] 修改用戶密碼 echo "abc543CC" | passwd --stdin vbird2 userdel -r home 刪除用戶 id [username] 查詢uid和gid groupadd groupmod group 相關參數的修改 groupdel gpasswd 羣組管理員功能 //acl 權限 setfacl getfacl filename //切換 su - username 或 su -l username 切換用戶 su - -c "命令串" 只運行一次root命令 sudo 以其他用戶的身份運行命令( /etc/sudoers 內的用戶才能夠運行 sudo 這個命令) e.g: sudo -u sshd touch /tmp/mysshd visudo 修改sudo配置 //使用者對話 write 使用者賬號 [用戶所在終端接口] 指定用戶發送信息 wall [message] 對所有系統上面的用戶傳送簡訊
PAM(Pluggable Authentication Modules 嵌入式授權模塊)
- 用戶輸入指令,呼叫 PAM 模塊進行驗證
- PAM 模塊會到 /etc/pam.d/ 找尋與程序 (passwd) 同名的配置文件
- 將驗證結果 (成功、失敗以及其他信息) 回傳給用戶指令程序
程序會根據 PAM 回傳的結果決定下一個動作
檢查工具
pwck 檢查用戶配置信息 grpck 檢查用戶組配置信息 pwconv 用戶同步化將 /etc/passwd 內的賬號與口令,移動到 /etc/shadow
配額 Quota
- 限制 filesystem的 容量等
涉及目錄,命令
/etc/fstab /etc/mtab 文件系統是否支持配額 /etc/warnquota.conf 警告信息設置 quotaon -auvg 開啓服務 quotaoff 關閉服務 edquota 編輯限制額度 -t 寬限時間 -u 用戶 -g 用戶組 quota -uvs myuser && quota -gvs myuser 查看配額 repquota -auvs 查看整個文件系統的配額
Raid 磁盤陣列
- 一個磁盤容量不夠時,這種機制將多個較小的磁碟整合成爲一個較大的磁碟裝置, 便於使用
- fdisk 命令
定時任務
單次任務 at
/etc/init.d/atd restart chkconfig atd on 配置自動啓動 /var/spool/at/ 日誌記錄 /etc/at.allow 使用者配置 /etc/at.deny 不能使用者配置 at -c n 查詢第n個任務 at now + 5 minutes 創建任務 batch 23:00 2009-3-17 系統空間時開始任務 atq 查詢所有單次任務 atrm n 將第n個任務刪除
循環任務 crontab
/etc/crontab 系統任務 /usr/bin/crontab 用戶任務 /etc/cron.allow /etc/cron.deny /var/spool/cron/[user] 任務創建日誌記錄 /var/log/cron 任務運行日誌記錄 crontab -e 編輯任務 e.g: 59 23 1 5 * mail kiki < /home/dmtsai/lover.txt crontab -l 查看所有任務 run-parts 遍歷目錄中所有文件運行 anacron 運行crontab 關機期間沒有運行的任務
參考
- 鳥哥的私房菜