聽完了61課的IT播吧,這是我整理的學習筆記。

一.Linux用戶環境
1. [root@test ~]#
root用戶@主機名 path  #//root,  //$normal
2. useradd jack  //添加用戶
passwd jack //激活用戶, 更改密碼
幫助 mknod --help
man /usr/share/man存放在這裏了
man 1 passwd//指令幫助, 不寫1,默認進入1
man 5 passwd//文件幫助

info


二.Linux基礎操作

1. touch 更新系統時間


三.Linux 基礎操作
1. more  逐頁, 只能網下翻
less   逐行, 上下翻
date 時間
cal 月曆
df -h
du -h xxx
head 20 xxx
Tail 默認最後10行
Tail -f file 查看file的即時更新
2. 設備文件在/dev下
C char設備
B block設備
3. alt + fn切換tty
/etc/inittab   Tty1-tty6, 可以吧5,6註釋掉, 這樣5,6沒有用
4. Su jack //不安全, 環境變量不會更改
Su - jack//安全, 環境變量會跟着改變
重啓 reboot , shutdown-r now, init 6(運行等級6)

關機 halt, shutdown-h now, poweroff, init 0


四.Linux基礎操作
File 指令 查看文件屬性

五.
六.鏈接

硬鏈接
ln 源文件 新建鏈接名//指向相同物理地址, 不能跨文件系統, 不可以是目錄
軟鏈接
ln -s 源文件 新鏈接名//快捷方式, 可以跨文件系統, 也可以是目錄
在ext2和ext3文件系統中, 文件以inod+block方式存在, 一旦用rm指令刪除文件中的inode記錄, 文件將無法找回.
Stat指令可以檢查文件的block和inode狀況
chown改變擁有者//root用戶
chown xiaowang(用戶) install.log
chgrp改變所在組//root用戶和文件擁有者可以改
chgrp xiaowang install.log

另一種方法chown root(擁有者):root(組擁有者) install.log


七.目錄

.和..文件是當前目錄和上級目錄的硬鏈接


八.九.

默認權限的值是由環境中的umask值來決定的.
文件-rw-rw-rw
目錄-rwx-rwx-rwx
一般用戶002, 系統用戶默認是022//默認值-umask值

umask (-S) //need practice


十一
過濾器, 交互工具, 編輯器
過濾器: 
輸入:::過濾器的數據來源
---標準輸入stdin(0):默認鍵盤 //   /dev/stdin
輸出::過濾器的數據去向 //
---標準輸出stdout(1):默認是終端屏幕 // /dev/stdout
錯誤輸出---標準錯誤輸出stderr(2):默認是屏幕// /dev/stderr
重定向: 
輸入重定向, 用< 來重定向輸入源.
Command < file(原本需要鍵盤輸入的, 通過文件來讀取)
tr 'A-Z' 'a-z'  <  .bash_profile //TBD. Tr指令是大寫改成小寫...
可以將 tr 看作爲 sed 的(極其)簡化的變體
tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file這裏:-c complement 用字符串1中字符集的補集替換此字符集,要求字符集爲ASCII。-d delete 刪除字符串1中所有輸入字符。-s squeeze (squeeze-repeates)刪除所有重複出現字符序列,只保留第一個;即將重複出現字符串壓縮爲一個字符串。input-file是轉換文件名。雖然可以使用其他格式輸入,但這種格式最常用。
應用例子

(1)去除oops.txt裏面的重複的小寫字符tr -s "[a-z]"<oops.txt >result.txt

(2)刪除空行tr -s "[\012]" < plan.txt 或 tr -s ["\n"] < plan.txt(3)有時需要刪除文件中的^M,並代之以換行tr -s "[\015]" "[\n]" < file 或 tr -s "[\r]" "[\n]" < file //關於回車和換行

3)有時需要刪除文件中的^M,並代之以換行
tr -s "[\015]" "[\n]" < file 或 tr -s "[\r]" "[\n]" < file //關於回車和換行

(4)大寫到小寫cat a.txt |tr "[a-z]" "[A-Z]" >b.txt

(5)刪除指定字符

一個星期的日程表。任務是從其中刪除所有數字,只保留日期。日期有大寫,也有小寫格式。因此需指定兩個字符範圍[a-z]和[A-Z],命令tr -cs "[a-z][A-Z]" "[\012*]" 將文件每行所有不包含在[a-z]或[A-Z](所有希臘字母)的字符串放在字符串1中並轉換爲一新行。-s選項表明壓縮所有新行, -c表明保留所有字母不動。原文件如下,後跟tr命令:tr -cs "[a-z][A-Z]" "[\012*]" <diary.txt //-c是from字符串的補集


使用<<讓系統將一次鍵盤的全部輸入,先送入虛擬的'當前文檔', 然後一次性輸入
cat > cat.file <<!
>this is test
>! //結束輸入 //TBD. Tr指令是大寫改成小寫...
輸出重定向
使用>改變數據的輸出目標
ls-l > test //不行

Ls-l 2> test //2代表標準錯誤輸出 TBD. Tr指令是大寫改成小寫...


十二.
雙重重定向
find /etc -name passwd 2> stderr > stdout //分開重定向
find /etc -name passwd &> allout //正確和錯誤都重定向
or find /etc -name passwd > allout 2>&1 //2>&1,的意思是將錯誤輸出定向到和1一樣的輸出設備
cmd >a 2>a 相當於使用了FD1、FD2兩個互相競爭使用文件 a 的管道;
而cmd >a 2>&1 只使用了一個管道FD1,但已經包括了stdout和stderr。
管道可以吧一系列的命令連接起來
使用 | 將前一個過濾器的輸出直接送入後一個過濾器的輸入.
允許多重管道
cat < filea > fileb(把filea當成cat的輸入, 然後重定向到fileb)

cat file.* > file,  將多個file開頭的文件合併成一個file


十三.文件的查找和管理
可執行文件的搜索
Which 顯示可執行文件的完整路徑
按照alias(別名) -> &PATH(系統文件)順序查找
系統別名記錄
Which ls
Alias ls(別名)='ls --color=tty'(完整指令)
/bin/ls
系統路徑 echo $PATH
Whereis //更完全
搜索到相關幫助信息, 配置信息
Whereis ls
slocate/locate 一樣的, 但是有個數據庫要更新先
find //重點
Find 路徑 參數 表達式
-user
-group
-nouser
-nogroup
-name
-perm
-size +1000k  大於1M的文件
-type f file文件
-type b 塊設備文件
-type l 鏈接文件類型
-type c 字符設備文件
Find /root/test –perm 6000 –exec chown jack.jack {} \;
{}標識查找到的對象

\ 禁止轉義


十四, 
-perm 權限 //find /home -perm 0644 -exec chown jack.jack {} \;
Exec後面可以接額外的命令
{}  find 找到的結果
\ 禁止轉義

; 表示本行結束


十五(wc…家看過的, diff…) 
Wc abc
4 3 7 abc
4//行 -l
3//3個字符 -w
7//個字符數 -c
Grep "a" abc
-n number show出行號
-v 反向選擇, 沒有"a"的那行
Sort
-r reverse 反向排列
-t 設定欄位間間隔符號 sort -t: -k3 /etc/passwd
-k 將那一欄做排列
Diff 報告文本間差異內容
Diff ABC abc
2c2 第二行不一樣
<B //第一個文件
----------
>b //>代表第二行文件
Uniq a //去掉相同的行, 做完後 a文件不會改變, 只是改變了輸出
一般 sort file | uniq //源文件不變, 只是改變了輸出
Cut -f3(第3欄) cutfile //顯示某一列
Cut -f2 -d, cutfile //-d是以什麼分隔
Cut -c4-8 cut1 //第4個-第8個字符之間
Paste abc ABC > merge //水平方式貼在一起, 用tab間黏貼一起

Cat abc ABC > merge //垂直方式貼在一起..


十六壓縮,
Gzip, gunzip//標準, 不能對文件夾壓縮, 但可以配合tar對文件夾壓縮
Compress, uncompress//舊的unix
Bzip2, bunzip2//新, 壓縮高
Gzip services //原來文件沒了
=>產生 services.gz
Gunzip services.gz
Gzip -d services.gz //也可以解壓縮
Zcat services.gz //查看 .gz的文件裏面的內容
Bzip2 services
=>產生services.bz2 /原來文件沒了
Bunzip2 services.bz2
Bzip2 -d services.bz2
Bzcat xxx.bz2 //查看壓縮包裏面的內容.
Tar 標準打包命令
C: 備份
V: 過程顯示出來
X: 解開文件
F: 表示打包後的文件名

...........不提供壓縮功能

Tar cvf test.tar test


十七
Dump/restore 備份整個文件系統ext2/ext3
   Dump -0u –f /var/tmp/hda2dump /dev/hdal
0: 0-9, 0代表完全備份
-u: 只有備份分區頂層目錄才能用, /etc/dumpdataes 寫有備份記錄
-f: 指定備份路徑文件
   Restore –rf /var/tmp/hda2dump //恢復備份文件, 還原到當前路徑
   Restore –tf /tmp/install.log.dump //t列出備份文件的內容


十八

/etc/shells文件指定了系統支持的所以shell
Nologin是指, 如果某個用戶名指定了nologin, 這個用戶就不能登錄我們linux系統
Bash是default的shell
Csh類似C的語法
Bash: Bourne Again Shell縮寫
變量賦值: a=book
Echo $a
Or Echo ${a} //推薦這種方式, 避免混淆
Unset a
本地變量 //當前
環境變量 //全部
Set 顯示所有變量
Env 顯示環境變量
預定義環境變量:
HOME: 當前用戶主目錄
PATH:  當前用戶可執行文件搜索路徑
LANG: 默認語言 //出現亂碼, LANG=en試試看, locale –a查看支持的語系
PS1: 行提示符 [\u@\h \W]\$


十九bash

\d 日期
\H 主機名
\h 主機名稱的第一個單詞
\t 時間24小時時間, 時, 分, 秒
\T 時間12小時格式
\A 24小時格式, 只顯示小時分
\u 當前用戶的賬戶名稱
\v  bash的版本信息
\w 目錄名稱, 家目錄會以 ~代替
\W 利用basename取得工作目錄名稱,所以只會列出最後一個目錄
\$ 提示字符,如果是root時,提示符爲:# ,普通用戶則爲:$
\# 下達的第幾個命令
Export 將一個指定的變量轉化爲環境變量 export a


二十bash history

History命令
History 10 列出最後10個指令
根據環境變量HISTSIZE
當用戶logout會寫入.bash_history中, 下次在載入, 這個文件裏存放的指令數是HISTFILESIZE環境變量決定
History –w強制寫入.bash_history文件中.
調用過往指令 使用!
!!:重複執行上一條指令
!a:重複執行上一條以a爲首的指令
!number:重複執行以number號碼的指令
!$ 截取上一條指令的最後一項

例如 ping !$ 就可以很方便


二十一 alias [?eili?s] 別名, 化名
Bash裏面的別名
alias a=’ls -al’
unalias a
命令行表達式
“” 命令行輸出, 當成字符串
Echo “${PWD}”
Echo “\$PWD”
‘’   字符串, 但是特殊符號也是當成一般符號對待
Echo ‘${PWD}’
`` 引用命令的執行結果

Ls –al `pwd`


二十二
數學計算----$[] 在[]裏面會被計算
Echo $[1+4]
逸脫符 \ (1)取消命令行中字符的特殊含義(2)表示一行未結束
mkdir a\ b //取消命令行中字符的特殊含義
ls \ //一行太長, 表示一行未結束
命令行結束符 ; //一行類風格好幾個獨立的命令
ls;pwd;ls –al
子shell 激活 () //激活子shell, 在子shell內運行
(HOME=/usr) 一般用於shell 腳本
&& 當錢一條指令成功時候執行後一條指令
ls /home && touch /home/test1
|| 當前一條指令失敗時候執行後一條指令

ls /root/test1 || mkdir /root/test1


二十三
ls /root/test && echo “exist” || echo “not exist” //同時有&&, ||
ls /root/test || echo “not exist” && echo “exist” //&&指前面一條指令執行成功
所以一般是需要現&&, 再||, 不然不能起到判斷作用
登錄shell時候是從配置文件中獲取shell的環境設置
登錄shell/非登錄shell的概念
四個文件讀取環境設定:
全局設置文件:
/etc/profile
PATH, MAIL…
/etc/bashrc
掩碼的功能, PS1
用戶設置文件:
~/.bashrc
~/.bash_profile
其他
~/.bash_logout, logout時候自動執行
~/.bash_history, history相關

/etc/profile.d/*.sh, 在etc/profile中執行, 其中環境設定, 也會被全局引用


二十四
登錄shell讀取設定文件的順序
/etc/profile
/etc/profile.d/*
~/.bash_profile
~/.bash_rc
/etc/bashrc //有些版本linux沒有這個文件
現設置的變量會被後設置的變量覆蓋…
非登錄shell su jack開啓一個非登錄shell
Su –jack 重新開啓一個登錄shell
~/.bash_rc
/etc/bashrc
/etc/profile.d/*
快捷間:
Ctrl +D 輸入結束, 相當於shell的exit

Ctrl +C 鍵盤中斷請求


二十五 系統監視
Uname: 顯示系統消息 uname -a
Hostname:   顯示主機名稱
Last: 最近的用戶登錄
Lastlog: 列出每個用戶最近登錄狀況
Free: 內存 如果物理內存, swap(虛擬內存)都很高, 系統就是不夠用
Top 動態顯示進程使用狀況, 每5秒更新一次
兩部分: (1)整個系統狀況, 6行
1啓動時間, 幾個用戶在登錄, load average(平均負載, 1分鐘, 5分鐘, 10分鐘)
2當前進程數量
3 CPU負載, id值 越接近100%, 使用的越少, idle
4 物理內存
5 虛擬內存
6 可以輸入命令

(2)每個進程使用的資源狀況

PID, User
PR,   priority, 越小, 越高
NI,   nice, .越小, 越早執行
S,   運行狀況, S-sleep, R-running
%CPU

TIME+ CPU使用時間的累加


二十六
Top –d 3 //每3秒更新一次狀態
Top –b –n 2 >  test.top //執行2次,輸出到test.top //-b批處理, n幾次top的結果
Top的按鍵命令
P //CPU使用率來排序
M //memory使用率排序
N //PID大小排序
T //CPU執行累計時間排序
查詢進程指令  ps
-A  -e 作用一樣, 顯示所以進程
-a 顯示所有進程, 但不會顯示與終端有關進程
-u 有效用戶相關
-x (與-a一起使用), 顯示完整消息
-l 長模式(詳細模式)顯示

-f 完整方式顯示


二十七
ps aux  (不用-)
VSZ使用多少的虛擬內存, 單位是KB
RSS佔用的固定內存量, 單位是KB
TTY表示是在哪個終端上運行的, 如果與終端無關則顯示?
STAT運行狀態, S-sleeping, R-running, T-停止了, Z-殭屍進程, 
S<, <代表優先級, 高優先級
N代表低優先級
ps –ef
ps –l
F:4, root用戶
UID:0, root用戶
Pstree可以用來以樹狀方式顯示父子關係
pstree –a , 以ASCII碼字符來連接
pstree –aup, 加上進程號, 所屬用戶
Top系統監視工具

gnome-system-monitor


二十八
Top &
Kill –l //list出來所有信號
1) SIGHUP 重新啓動
2) SIGINT ctrl+C 中斷執行
9) SIGKILL 強制kill
15) SIGTERM kill默認傳送15, 正常的方式結束進程
Eg. kill -SIGKILL 11800
Killall -SIGKILL 11800
進程優先級, 用nice表示 //負值表示高優先值, -20~19
一般用戶只能指定正nice值, root用戶才能設定負值的nice值
nice –n num command //以一個不同的nice 值來運行指令
renice –n pid //改變一個運行進程的nice值


二十九

在top指令命令裏面修改nice值
r, 輸入pid, 輸入新的nice值
前臺, 獨佔shell, 並拒絕其他輸入
Command &: 丟入後臺運行
Nohup command &: 直接丟入後臺, 而且在這個控制檯退出後, 進程不掛斷
Ctrl + Z, 暫停, 丟入後臺


Jobs 列出後臺的進程.
[root@localhost water]# jobs –l
+, -優先級, fg會把有+的作業拉到前臺.
[1]- 12044 Stopped (tty output)    top

[2]+ 12054 Stopped (tty output)    vi ttt


三十
Fg 移到前臺 front
fg %1 //1是作業號, %可以
Bg 激活後臺暫停的進程
bg 1
/proc 虛擬文件系統, 不在硬盤上, 在內存裏面
/proc/kcore是當前運行內核的一個鏡像, 不能用cat讀取, 會造成當前中斷無法使用
/proc/cmdline加載內核執行的相關參數
/proc/devices 內核主要設備的代號
/proc/filesystems 當前系統已經加載的文件系統
/proc/dma 硬盤dma的設置
/proc/interrupts IRQ的分配狀態
/proc/ioports 輸入輸出的設置
/proc/loadavg 系統負載的變更值
Top指令看到的負載值, 1分鐘的, 5分鐘的, 10分鐘的
/proc/meminfo
/proc/cpuinfo
/proc/modules
/proc/mounts
/proc/swaps 系統掛載的內存放在哪裏, 虛擬內存
/proc/uptime uptime這個指令相關的內容
/proc/version uname –a指令相關
/proc/vmstat 虛擬內存的使用狀況
目錄:
/proc/sys 內核的一些配置參數

/proc/數字 PID號碼, 讀取進程信息的接口


三十一
[root@localhost 1]# ls /proc/1

lrwxrwxrwx. 1 root root 0 May 10 14:16 cwd -> / 執行目錄
-r--------. 1 root root 0 May 10 14:16 environ 環境變量
-rw-------. 1 root root 0 May 10 14:16 mem 內存使用情況
-r--r--r--. 1 root root 0 May 10 11:07 stat 進程狀態
-r--r--r--. 1 root root 0 May 10 13:17 statm 內存狀況信息
[root@localhost 1]# ls /proc/sys
crypto  debug  dev  fs  kernel  net  sunrpc  vm
修改內核參數
Eg: echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
主機就會不回覆ping的包
uptime就是top的第一行
系統日誌記錄這系統運行中的記錄信息
一般都存放在/var/log目錄下面
/var/log/dmesg 核心啓動日誌
也可以用dmesg指令查看
/var/log/messages 系統報錯日誌
/var/log/maillog 郵件系統日誌
/var/log/xferlog FTP服務用日誌
/var/log/secure 安全信息, 系統登錄與網絡連接的信息
/var/log/wtmp 登錄記錄, 二進制文件

last命令可以讀這個文件


三十二
Who: 查詢當前在線的用戶
W指令也可以
Groups: 查詢用戶所屬於的組
Id: 顯示當前用戶信息
Eg. Id root
Finger 查詢用戶信息
[root@localhost water]# finger root
Login: root           Name: root
Directory: /root                     Shell: /bin/bash
Never logged in.
No mail.
No Plan.
whoami 查詢當前用戶是誰
添加用戶
Useradd
Passwd
系統添加用戶的標準步驟
編輯/etc/passwd與/etc/passwd
創建用戶主目錄
從/etc/skel拷貝文件與目錄
讓新用戶獲得七主目錄與文件的權限
給新用戶一個密碼
更改用戶的資料
Redhat-config-users, kusers
usermod指令
usermod -c "this is test1's account" test1 //-c, comment, 全名
usermod -d /home/ttt test1 //更改主目錄


三十三

usermod指令
usermod –e “2009-01-01” test1 //expire date, 密碼什麼時候到期
usermod –G root test1 //把用戶添加到組裏面
[root@localhost etc]# usermod -G root test1
[root@localhost etc]# id test1
uid=501(test1) gid=501(test1) groups=501(test1),0(root)
usermod -g root test1 //gid更改
usermod -g 501 test1
usermod –s //更改默認shell
usermod -s /bin/csh test1
usermod –u //更改UID
usermod –u 502 test1
usermod –p //修改passwd
usermod –p 1234 test1
usermod –L test1 //鎖定test1的密碼
然後就不能登錄用test1了..
-U //unlock
passwd -S test1 //查看是否鎖定了.


三十四

Userdel指令刪除一存在的用戶
參數-r可以將用戶的目錄一併刪除
/etc/passwd文件
記錄的是用戶登錄信息
每一行代表一個用戶, 用:分隔成7項, 即用戶的基礎登錄信息
添加或刪除一個用戶, 最基礎的操作, 即在passwd文件中添加或刪除響應的個人記錄.


每個用戶有一個對應的號碼, UID
每一個羣組有一個對應ID, GID
每一個文件都有自己的擁有者和所屬羣組


/etc/passwd
water:x:500:500:water:/home/water:/bin/bash
500: UID
Windows系統裏面的UID/GID在regedit localmation->SAM

GID存放在 /etc/group


三十五
root:x:0:0:root:/root:/bin/bash
七個欄位:
login name 
passwd x, 是爲了安全考慮, 放到/etc/shadow
uid 0, 表示是root用戶, uid值1-99保留給系統使用
100-499保留給一些服務使用
>=500, 一般帳號
gid
full name
home directory

shell


三十六   Home Directory
/etc/login.defs //useradd是後系統對home目錄的設置文件
MAIL_DIR /var/spool/mail //郵箱目錄
UID_MIN  500
UID_MAX 60000 //用戶ID的範圍
GID_MIN  500
GID_MAX 60000 //GID的範圍
CREATE_HOME yes //創建一個用戶, 會自動創建home目錄
/etc/skel //複製到用戶home目錄
/etc/shadow //密碼文件
Shadow文件支持密碼過期設定等功能
Shadow文件中每一行表示一個系統用戶的密碼記錄, 用:號分隔
用戶可以通過authconfig來設定是否使用shadow文件以及md5加密
root:$6$oac.LDpXwlEGAo0k$UwWa6TAqfeGSNpeq0Fako4PSFN8IE10wu6xkjSz1P4AGLPMAbhjsbn7tvykUIS4YCUnqC2MpoKZD/9XY8Fcw8.:15103:0:99999:7:::
九個欄位
登錄用名
用戶密碼, md5加密
從1970年1月1號起到密碼上一次被更改的時間
密碼再國幾天可以被變更(0表示隨時可以變更)
密碼再國幾天必須被變更(99999表示永不過期)
密碼過期前幾天系統提醒用戶(默認爲1周)
密碼過期幾條後帳號會被取消

從1970年1月1號算起, 多少填後帳號會失效


三十七
密碼欄位是 以 (! 或者 *) 開頭, 表示帳號被鎖定, 不能登錄linux系統
Authconfig 更改auth設置
組管理
/etc/group
Groupadd 增加
Groupdel 刪除
Groupmod 修改組信息

Newgrp 改變當前組


三十八
/etc/group 組文件
用:隔開, 4個欄位
Group_name 組名
Password 組密碼(一般不用) x
羣組密碼放在gshadow
GID 組身份編號
0 root羣組
>=100 一般羣組
User_list 組成員列表


Gpasswd 設定羣組密碼, 組密碼(一般不用)
/etc/gshadow 組密碼文件
把一個用戶加入一個羣組裏面
[root@localhost water]# groups jack // 查詢羣組
jack : jack
[root@localhost water]# groupadd boboke
[root@localhost water]# gpasswd -a jack boboke//把一個用戶加入一個羣組裏面
Adding user jack to group boboke
[root@localhost water]# groups jack
jack : jack boboke
初始羣組, 在etc/passwd裏面看到GID
如果一個用戶的羣組是這個用戶的初始羣組, 在/etc/group文件裏面的羣組成員欄位不會有這個用戶
非初始羣組
有效用戶羣組
用戶創建的文件是屬於該用戶的初始羣組
[water@localhost ~]$ groups
water boboke
[water@localhost ~]$ newgrp boboke //更改有效用戶羣組
[water@localhost ~]$ groups
boboke water


useradd的高級用法
useradd -u 600 -g water -G boboke zl //-u, UID, -g初始羣組, -G加上的羣組
useradd zl1 -s /bin/sh //默認使用sh shell


useradd -M zl2 //不創建home目錄
useradd zl3 –d /zl3 //-d , home 目錄


useradd –r zl7 //創建系統用戶賬戶, UID<500

groupadd –r xitongqunzu //創建系統羣組


三十九
設備文件
塊設備 b
需要緩存區
字符設備 c
一次傳送一個字節, 不需要緩存區
/dev/hd[a-t] IDE設備
/dev/sd[a-z] SCSI設備
/dev/fd[0-7] 軟驅
/dev/md[0-15] 軟raid設備, 軟件的磁盤設備
Loop[0-15] 本地回訪設備, ping 127.0.0.1

Ram[0-19] 內存


四十
/dev/null 無限數據接收
/dev/zero 無限0資源
用來創建虛擬內存
/dev/tty[0-31] 虛擬終端
/dev/ttyS[0-9] 串口
/dev/lp[0-3] 並口
打印機
/dev/console 控制檯
/dev/fb[0-31] framebuffer
顯卡設備
鏈接文件
/dev/cdrom
/dev/modem
/dev/pilot
使用
echo hello > /dev/tty2
cp /dev/fd0 /dev/fd1
dd if=/dev/had of=/root/mbr bs=512 count=1
備份第一個硬盤上的mbr爲/root目錄下面的mdr文件
Dd指令是一個強大的copy指令
支持copy過程中轉換文件格式
參數
If=文件名 指定源文件
Of=文件名 指定目標文件
Bs=xxx 指定塊大小

Count=n 指定複製塊的數量


四十一
dd指令
dd if=/etc/passwd of=/root/passwd.backup
bs , count可以不加
dd < /root/install.log > /root/install.log.backup
< 表示if
>表示of
dd < install.log.backup > /root/install.log
還原
硬盤的第一扇區記錄的硬盤的引導記錄MBR和硬盤的分區表
每個扇區512字節
dd < /dev/sda > /root/mbr bs=512 count=1
mknod
建立設備文件
mknod 文件名 文件類型 主號 從號

主號/從號到這個文件查找  /usr/share/…/devices.txt


四十二
對於每個硬盤:
硬盤由扇區組成, 每個扇區爲512字節
主引導記錄/Master Boot Record MBR
硬盤分區表/Standard Partition table SPT
主分區 Primary Partition
擴展分區 extended partition
邏輯分區 logical partition
512個字節
446字節, 64字節, 2字節(扇區的結束標識符, 驗證碼55AA)
MBR //如何引導內核, 可以把grub放到這裏 
SPT //每個分區的記錄, 每個分區的起始磁柱和結束磁柱
每個分區記錄佔用16個字節
一塊硬盤只能有4個主分區
用戶可以也值可以將一個主分區編程擴展分區
在擴展分區上, 用戶可以日鏈表方式建立邏輯分區


邏輯分區的第一扇區裏面也會記錄自己的分區信息, 還會記錄下一個邏輯分區的起始磁柱


Fdisk工具最多認識16個分區


Linux下面1-4保留給主分區使用的.
擴展分區自動從 hda5, hda6…
硬盤分區工具
Disk druid 只能安裝時候使用, 圖形化

Fdisk 引用廣泛


四十三

Fdisk –l /dev/sda
Disk /dev/sda: 21.8 GB, 21832400896 bytes
255 heads, 63 sectors/track, 2654 cylinders, total 42641408 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000e9aec


   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    42641407    20807680   8e  Linux LVM
Boot 指定啓動分區
Start/end 起始/結束 磁柱
Blocks 大小
ID ID號碼
83代表linux分區(system)
82代表linux swap(虛擬內存分區)
5 extended


Fdisk /dev/sda

Command(): m //顯示幫助信息
d 刪除分區
會再要求輸入分區號:
n 新建分區
要求p, e
P
選擇開始磁柱
結束磁柱 +100M(選擇大小就可以)
E extended
選擇開始磁柱
結束磁柱 按enter就是用默認值
在擴展分區上創建邏輯分區
p 打印分區表 跟fdisk –l一樣
t 該ID號
q 退出不保存

w 保存修改並且退出


四十四

創建虛擬內存分區
現建立個分區
轉化爲swap 分區 t
選擇number 6
l鍵可以list 分區號碼
82 //linux swap
w//保存退出
格式化爲swap文件格式 mkswap /dev/sda6
free查看
掛載到系統上 swapon /dev/sda6
free查看
取消掛載 swapoff /dev/sda6
另一種方法
dd < /dev/zero > /tmp/swap bs=4k count=25000 //100M大小
mkswap /tmp/swap

swapon /tmp/swap


四十五 文件系統
文件結構
文件存放的物理空間----文件系統
FAT, FAT32, NTFS(帶有日誌功能)
ext2, ext3(多了日誌功能)
ext2/ext3文件系統
支持rwx權限和文件屬性
採用block+inode方式存放
block, 邏輯塊, 最小的數據存儲單位, 它一sector大小爲基礎
硬盤最小存儲單元是扇區(sector), 每個扇區512byte
一般block大小爲sector大小的2的n次方倍.
Eg, 一個block大小爲4K, 讀取10M文件, 不用每個sector每個sector去轉換, 只要每個block每個block去轉換, 減少磁頭轉換的次數, 提高效率

一個邏輯塊最多容納一個文件


四十六
在ext2/ext3中, 每個文件分兩個部分存儲, 文件屬性+文件內容
inode, 索引節點, 存儲文件屬性
擁有指針的功能
有一個唯一的號碼, 索引節點號, inode number
ls –i  查看inode number
包括這些屬性: 擁有者, 所屬羣組, 權限, 類型, 建立更改的時間, 大小…
建立目錄時候, 也會分配inode+block, linux中目錄也是文件
目錄文件的block中記錄了目錄下面的文件名和它們的inode直接的對應關係
文件系統的掛載點一定是目錄, 而不是文件
文件系統所能存儲的文件數目是與索引節點最大數目有關的.


一個索引節點大小128byte
Block大小支持1024byte, 2048, 4096, block最大4096…
操作系統如何讀取一個文件 /etc/services
根據根目錄的相關數據, 得到etc目錄所在的索引節點
讀取etc目錄的屬性(inode), 得到etc目錄下面所有文件與它們inode的對應關係(block)

找到services文件的inode, 繼而得到servers文件的屬性和其block地址


四十七
Ext2/ext3文件系統上有一塊空間被稱爲superblock, 用於存放文件系統的元數據, 如卷標名, block數, inode數目…
Superblock:
文件系統最開始boot sector, 啓動分區, 存放引導程序, 如grub
引導程序可以放在MBR裏面, 但有時候MBR要放其他東西, 這個時候可以放到boot sector裏面
(具體以後再講)
之後的第一個sector就叫做super sector, 記錄文件系統的相關信息
dumpe2fs  /dev/sda1 //在group以上的就是super sector信息
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name:   <none>
Last mounted on:          /boot
Filesystem UUID:          bc01e921-0e2b-4a33-902a-3b6370d22202
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              128016
Block count:              512000
Reserved block count:     25600
Free blocks:              466294
Free inodes:              127980
First block:              1
Block size:               1024
Fragment size:            1024
Reserved GDT blocks:      256
Blocks per group:         8192
Fragments per group:      8192
Inodes per group:         2032
Inode blocks per group:   254
Flex block group size:    16
Filesystem created:       Mon May  9 13:38:14 2011
Last mount time:          Thu May 12 17:44:17 2011
Last write time:          Thu May 12 17:44:17 2011
Mount count:              8
Maximum mount count:      -1
Last checked:             Mon May  9 13:38:14 2011
Check interval:           0 (<none>)
Lifetime writes:          43 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:          128
Journal inode:            8 //日誌
Default directory hash:   half_md4
Directory Hash Seed:      edf84c6a-869a-426c-b274-c5c3440616b9
Journal backup:           inode blocks
Journal features:         (none)
Journal size:             8M
Journal length:           8192
Journal sequence:         0x00000013
Journal start:            0


Group 0: (Blocks 1-8192) [ITABLE_ZEROED]
  Checksum 0xb6ac, unused inodes 2017
  Primary superblock at 1, Group descriptors at 2-3
  Reserved GDT blocks at 4-259
  Block bitmap at 260 (+259), Inode bitmap at 276 (+275)
  Inode table at 292-545 (+291)
  3820 free blocks, 2017 free inodes, 2 directories, 2017 unused inodes
  Free blocks: 4373-8192
  Free inodes: 16-2032
Group 1: (Blocks 8193-16384) [INODE_UNINIT, ITABLE_ZEROED]
  Checksum 0x333f, unused inodes 2032
  Backup superblock at 8193(備份super sector), Group descriptors at 8194-8195
  Reserved GDT blocks at 8196-8451
  Block bitmap at 261, Inode bitmap at 277
  Inode table at 546-799
  519 free blocks, 2032 free inodes, 0 directories, 2032 unused inodes
  Free blocks: 13818-14336
  Free inodes: 2033-4064
…..


ReiserFS文件系統
輕鬆管理上白G的文件
先進的日誌機制
高校的日誌機制
獨特的搜尋方式


Ext2/ext3中對每個文件, 提供額外屬性支持
lsattr 檢查文件屬性
chattr 改變文件屬性
A 檔文件被修改時候, 其更改時間不會改變
a 只能對文件追加, 不能覆蓋 //root用戶才能用
d 備份時候不會備份它
i 永遠不能被改變 //root用戶才能用
j 文件的屬性會被記錄到ext3的日誌中
S
Eg. chattr +i ttt.txt

chattr -i ttt


四十八
Ext3添加了日誌功能ext2, 減少了系統崩潰後恢復文件系統花費的時間.
3種日誌模式: 規則 默認, 僅記錄元數據
日誌化 講數據象元數據一樣記錄入日誌
寫回 只在fsck(file system check)時發生
Ext2, 先寫入緩衝區buffer, buffer滿了, 寫入硬盤
Ext3, 先寫入緩衝區buffer, buffer滿了, 通知日誌(存放在硬盤的最後面),  我現在開始寫文件了, 再開始寫到硬盤空間, 寫完後, 通知日誌告訴已經寫入成功.


Ext2
Valid bit 1 正常關機
關機時候文件系統是mount狀態
會檢查是否有損壞
Ext3
查找日誌記錄, 看看還有沒有那些資料沒有移動完成. 這樣的檢查時間塊很多


Iso9660光盤使用的文件系統


ls /lib/modules/2.6.35.6-45.fc14.i686/kernel/fs/  系統支持的文件系統


cat /proc/filesystems //查看系統的文件系統


mkfs 創建各種文件系統, -t指定
mkfs –t ext2 /dev/sda5
dumpe2fs /dev/sda5 //查看super block信息
mke2fs 創建ext2/3文件系統, 支持指定block大小

mke2fs –b 2048 /dev/sda5 //default ext2


四十九
mke2fs –N 3000 /dev/sda5 //索引節點的個數
mke2fs –m 10 /dev/sda5 //保留10%空間給root用戶, 默認是5%
mke2fs –L data /dev/sda5 //-L指定卷標名稱
會寫在super block 裏面的
mke2fs –j /dev/sda5 //創建ext3文件系統
掛載文件系統 mount
mount –t 文件系統類型 設備名或者卷標 掛載點(必須是目錄)
-t 文件系統類型 //可以不要, 內核可以自動識別類型
-o 補充追加的參數
Ext2 文件系統默認採用的參數:
Rw 讀寫
Suid
Dev
Exec
Auto
Nouser
Async
User
Ro mount –o ro /dev/sda5 /opt 只讀
Loop 掛載鏡像文件
Remount 重新載入
mount /dev/cdrom /mnt  掛載光驅

mount –o loop,ro /var/boot.iso /mnt    掛載鏡像


五十 /etc/fstab
配置文件系統掛載信息
系統啓動會參考/etc/fstab中的配置項自動加載文件系統
Mount文件系統時候如果參數不全, 系統會從/etc/fstab中讀取參數補全
也會被fsck, dump, quotaon, swapon等程序使用
# /etc/fstab
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=bc01e921-0e2b-4a33-902a-3b6370d22202 /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
總共有六項
設備文件, 或者卷標
LABLE=/ 卷標爲/  的設備
掛載點
File system
Mount 參數
備份參數, dump參數 0:永遠不備份; 1, 每天都備份; 2, 每兩天備份一次;….
Fsck參數, 是否用fsck工具檢測分區 0, 不檢測; 1, 系統啓動時候會第一個檢測這個分區; 2, 第二個檢測這個分區
用戶可以通過查看/etc/mtab文件查看當前掛載中的文件系統(mount指令也可以, /proc/mounts)
卷標 記錄在super block中
e2label  查詢與更改ext2文件系統卷標

e2label /dev/sda1 data 創建卷標


五十一
mount –L data /opt 用卷標名稱來掛載
umount /dev/sda5 設備名
/opt 掛載點
文件系統維護
fcsk 檢查和修復文件系統
note: 被檢查的分區不要掛載到文件系統上面(處於卸載狀態), 因爲有可能損壞文件
fsck –y /dev/sda6 //-y, 如果檢查到有問題, 自動修復
tune2fs 更改ext2文件系統屬性
tune2fs –j /dev/sda5 //轉換ext2到ext3
跟mke2fs相比, 內容/數據不會變化
自動掛載 系統通過autofs服務自動掛載文件系統
-需要後臺的automount 進程
-autofs服務的開閉由 /etc/init.d/autofs腳本控制
rpm –q autofs //查看是否安裝這個包
配置文件:
/etc/auto.master
/mnt(自動掛載目錄集合) /etc/auto.misc(參考文件) --timeout=60(時間, 過60秒不使用, 則umount掉)
/etc/auto.misc
cdrom -fstype=iso9660 :/dev/cdrom(:表示本地)
service autofs restart

真正掛載目錄, 爲/mnt/cdrom


五十二 RHEL AS 4.0 安裝
五十三
Linux 安裝來源
CD/DVD Rom
FTP
NFS
HTTP
硬盤
五十四
五十五
五十六

五十七


五十八 計劃任務
at 命令: 指定一個時間執行一個任務
這個任務只能運行一次
atq:查詢當前等待的任務
atrm:刪除等待任務
batch:以一個低優先級延時執行任務
atd進程存在是前提
ps –ef | grep atd
/etc/init.d/atd restart //手動運行atd進程
chkconfig –level 2345 atd on //設置atd隨機器自動啓動
at now +1 min //按下enter
at 00:55
at 1:00 2011-11-11
at> echo “hello” > /dev/tty2

at> 按下ctrl+D


五十九
用at命令創建任務, 會被分配job 號碼
在/var/spool/at目錄中排隊
atq:查詢當前等待的任務
atrm:刪除等待任務

atrm 17(工作號)


六十
batch:以一個低優先級延時執行任務
at命令的使用控制文件
/etc/at.allow //如果沒有這兩個文件, 只有root用戶有權限
/etc/at.deny
六十一
cron機制:根據一個時間表自動執行任務
anacron機制: 在一個指定時間間隔錯過後自動執行任務
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章