學習筆記6-14
sd硬碟最多劃分61個邏輯分區
sisc 最多劃分11個邏輯分區
ctrl+l 清屏
ctrl+c 中斷
基本指令
ls -l install.log
-:rw-r--r-- :1 :root :root :39410 : 2013-05-21: install.log
檔案類型:權限:硬連結數:擁有者:所屬組:檔案大小:最後一次修改時間:檔案名
- 普通檔案
d 目錄檔案
c 字元檔案
b 塊裝置檔案
l 軟連結檔案(符号)
p 管道檔案
s 套接子檔案
ls -l 長格式 -a 所有檔案 -a 所有檔案除了.和.. f 顯示檔案類型
. 目前目錄
.. 上層目錄
-d 顯示目錄資訊 -h 最大機關顯示 -t 安時間排序
-r 反向 -r 遞歸
1.ls --help
2.info ls
3.type ls
alias la='ls -la'
unalias la
4.man ls
一 使用者指令
二 系統調用
三 庫調用
四 特殊檔案
五 配置檔案
六 遊戲
七 雜項(man)
八 系統指令
九 核心參考
makewhatis 維護man背景
man -f passwd 查詢指令在那些章節有相應說明
man -k passwd 模糊查詢
cd cd / .. ../.. . ~ -傳回上次工作目錄
pwd 查詢位置
/下目錄作用
/bin /usr/bin /usr/local/bin 普通使用者可執行目錄
/sbin /usr/sbin /usr/local/sbin 系統可執行目錄
/etc/ 配置檔案目錄
/usr/ 應用程式目錄
/var/ 伺服器資料目錄(經常變化的檔案,如日志檔案,使用者郵箱檔案),建議獨
立分區
/lib /usr/lib /usr/local/lib 庫檔案目錄(系統子產品)
/dev/ 塊裝置目錄和字元裝置
/boot 引導程式目錄(核心,啟動檔案,引導程式) 建立獨立分區
/root 管理者家目錄
/home 普通使用者家目錄 建立獨立分區
/proc 記憶體資訊目錄(記憶體資訊和程序資訊) 僞檔案系統
/sys 記憶體資訊目錄(記憶體資訊和程序資訊) 僞檔案系統
/tmp 臨時檔案目錄
/opt 第三方軟體目錄
/mnt 臨時挂在點
/srv 伺服器資料目錄。。。。。。。。。。。
/media 媒體目錄
/misc autofs
/net autofs
/tftpboot tftp服務使用
/selinux selinux使用
/lost+found 用于檔案系統恢複
檢視檔案内容
1.head 顯示檔案從頭部開始10行
head -n 30 install.log
2.tail 顯示檔案從底部開始10行
tail -n 20 install.log
tail -f /var/log/messages 動态顯示檔案内容
3.more 顯示全部檔案 百分比顯示
more install.log
4.less 顯示全部檔案可以上下翻頁
less install.log
5.cat 檢視檔案内容 一次顯示完畢
cat -n install.log 顯示檔案内容 帶 行号包括空行
cat -b install.log 顯示檔案内容 帶 行号不帶空行
cat -n install.log | less 檢視檔案内容帶行号顯示後 再用less翻頁檢視
| 管道符号
前一個指令輸出作為後一個指令輸入
建立檔案
touch
touch aa.txt
touch cc.txt tt.txt
touch abc{1..10}.txt
touch {a,b,c}{1..3}.txt
建立目錄
mkdir
mkdir tt
mkdir test1 test2
mkdir abc{1..10}
mkdir {a..c}{1..10}.txt
mkdir -p dir/aa
mkdir -pv dir/aa
拷貝copy
cp /root/install.log /tmp/
cp /root/install.log /tmp/install 拷貝的同時重命名
cp -r /tmp/dir/ /
剪切move
mv /root/xx.txt /tmp/
mv /root/xx.txt /tmp/haha.txt
mv xx.txt xx.txt.bak
mv /tmp/tt /
删除
rmdir 隻能删除空目錄
rm
rm tt.txt
rm -f install.log
rm -rf abc9
rm -rf *.txt
rm -rf abc*
rm -rf /dir/
********************************************************************************
練習:
1.建立以下目錄結構(驗證?)
/aa
/ \
ba/ bb/
/ \ \
ca/ cb/ cc/
mkdir -p /aa/ba/c{a,b} /aa/bb/cc
tree /aa/
tree -l 2 /
ls -r /aa 顯示目錄結構
2.進入ba目錄 查詢自己所在路徑?
pwd 顯示目前工作目錄
3.由ba進入ca目錄有幾種寫法?分别是什麼?
cd ca/
cd /aa/ba/ca/
4.拷貝/etc/man.config到ca目錄
cp /etc/man.config /aa/ba/ca/
5.移動ca目錄下的man.config /cc目錄并且改名為test.txt
分兩種寫法操作
mv /aa/ba/ca/man.config /aa/bb/cc/test.txt
mv ca/man.config ../../aa/bb/cc/test.txt
6.兩次拷貝同一個檔案到同一個不出現覆寫提示?
unalias cp /root/install.log /
\cp install.log / 不提示 強制覆寫檔案
vim 文本編輯器 vi
指令模式進入輸入模式
a 目前字元後輸入
a 目前行行尾輸入
i 目前字元前輸入
i 目前行行首輸入
o 目前行下一行輸入
o 目前行上一行輸入
s 删除目前字元後輸入
s 删除目前行後輸入
home鍵位行首 end行尾
指令模式
u 撤銷一步操作
ctrl + r 重做
yy 複制一行
50yy 複制50行
dd 剪切一行 dd删除
50dd 剪切50行
p 粘貼
w 下一個單詞的首字元
dw 删除/剪切一個單詞 yw
^ 行首 d^ y^
$ 行尾 d$ y$
g 尾行
gg 首行
750g 定位到750
dgg 删除目前行到首行
dg 删除目前行到尾行
末行模式
:w :q :wq
:w! :q! :wq!
:e /root/aa.txt 打開/讀入
:2,3w /root/newfile.txt 2到3行另存為新檔案
:r /root/file.txt 在目前檔案追加讀入
:e! 重新讀入目前檔案
:set nu 顯示行号
:set nonu 去掉行号
:set autoindent 自動縮進
:set noautoindent 去掉自動縮進
查找
/ 從上往下
? 從下往上
n n 上下查找關鍵詞
替換
:%s/ab/oo/gc %所有行 g全局 s替換 c互動式替換
2,5s/ab/oo/gc
:%s/^\t// 替換檔案中所有行首制表符
:%s/\t// 替換檔案中每行第一個名額符
:%s/ //g 去掉所有空格
:%s/^#//g 删掉行首#
:g/^$/d 删除空行
:g/^\s*$/d 删除所有類型空行
:x 加密 解密
vim配置檔案 /etc/vimrc
vim教程
/usr/share/vim/vim70/tutor/tutor.zh.euc
gedit /usr/share/vim/vim70/tutor/tutor.zh.euc
檔案--->另存---->字元集----->儲存----->替換
vimtutor
***********************************************************
字元編碼轉換
iconv -f gb18030 -t utf-8 tutor.zh.euc -o test.txt
多檔案操作
vim aa.txt cc.txt tt.txt
:args next prev first last
檔案間切換 ctrl+6 下一個檔案
:bn 下一個檔案
:bp 上一個檔案
對于用(v)split在多個窗格中打開的檔案,這種方法隻會在目前窗格中切換不同的文
件。
vimdiff aa.txt cc.txt tt.txt 比較檔案不同
ctrl+w+w 切換編輯文檔
vim -o aa.txt tt.txt cc.txt 不帶顔色多螢幕顯示 縱屏
vim -o aa.txt tt.txt cc.txt 橫屏顯示
shift+k 顯示文檔裡邊 標明詞語 顯示 指令幫助
可視化模式v
y 複制 d 删除 p 粘貼
可視化塊模式 ctrl+v
方向選擇編輯區域----> shift+i -----> 輸入字元 -->esc(兩次)修改成功
使用者管理
uid 0 root gid 0 root
uid 1-499 system gid 1-499 system group
uid 500-60000 user gid 500-60000 group
添加使用者useradd
useradd abc1
儲存使用者資訊的檔案:/etc/passwd
robin:x:500:500:ptuser:/home/robin:/bin/bash
使用者名:密碼占位符号:uid:gid:描述:家目錄:shell
useradd -u 1000 -g 500 -c hello -d /mnt/abc2 -s /bin/bash abc2
添加組groupadd
groupadd uplooking
儲存組資訊的檔案 /etc/group
uplooking:x:502:
組名:組密碼占位符号:gid:使用者名
groupadd -g 2000 upup
設定密碼
1.root通過passwd robin
2.robin執行passwd修改自己密碼
密碼儲存檔案:/etc/shadow
robin:$1$bj0exbfx$e24mczi0jmsidr:15847:2:10:3:2::
第一列:使用者名
第二列:密碼(md5)
第三列:密碼最後一次修改時間(天)
第四列:密碼最小時間
第五列:密碼最大時間(密碼有效期)(天)
第六列:密碼過期前警告時間
第七列:密碼過期後帳号過期時間
第八列:帳号有效期
第九列:保留列
1.添加組kkk gid為1500
groupadd -g 1500 kkk
2.添加使用者 zorro uid 1500 屬于kkk組 描述:hello 家目錄/mnt shell:bash
useradd -u 1500 -g kkk -c hello -d /mnt/zorro -s /bin/bash zorro
3.通過管理者設定該使用者密碼為123
終端登入zorro 設定自己密碼為123.com
修改使用者資訊
usermod
usermod -u 使用者uid
usermod -g 使用者gid
usermod -c 使用者描述
usermod -d 使用者家目錄
usermod -s 使用者shell
usermod -l abc2abc abc2 更改使用者名
usermod -l robin 鎖定帳号
usermod -u robin 解鎖帳号
usermod -f 密碼過期後帳号過期時間
usermod -e 帳号有效期
修改組資訊
groupmod -g 2500 uplooking
groupmod -n upup uplooking
修改密碼及資訊
passwd -n(最小時間) -x 最大時間 -w 警告時間 -i 密碼過期後帳号過期時間
passwd -l robin 鎖定密碼
passwd -u robin 解鎖密碼
passwd -s robin 檢視密碼狀态
添加使用者tom和jerry 分别設定兩個使用者密碼為123
鎖定tom帳号 鎖定jerry密碼
終端登入測試 傳回值是否一緻? 一樣的
檢視shedow檔案 兩個使用者有什麼差別? 鎖定帳戶是 一個! 鎖定密碼是兩個 !
删除使用者:
userdel -r abc2
删除組
groupdel upup
附加組
groupadd yw
groupadd kf
useradd -g kf,yw wg 覆寫附加組資訊
useradd -a -g kf,yw wg 追加附加組資訊
groupadd boss
gpasswd boss
手動添加帳号
1.groupadd zu
1).vim /etc/group
zu:x:2000:
2.useradd -g zu zhb
1).vim /etc/passwd
zhb:x:2000:2000::/home/zhb:/bin/bash
2).mkdir /home/zhb
3).cp /etc/skel/.bash* /home/zhb/
3.passwd zhb
1).vim /etc/shadow
zhb::15848:0:99999:7:::
2).grub-md5-crypt産生密碼 将密碼複制到第二列
終端登入測試 建立檔案?
多使用者導入
1.導入檔案(user.txt)内的使用者和系統的passwd檔案使用者資訊不能沖突
2.導入檔案(user.txt)内使用者不能沖突
cat user.txt
user1:x:3000:3000:ptuser:/home/user1:/bin/bash
user2:x:3001:3001:ptuser:/home/user2:/bin/bash
newusers < user.txt
cat passwd.txt
user1:123
user2:123
chpasswd < passwd.txt
使用者配置檔案
/etc/default/useradd
home=/home
shell=/bin/bash
skel=/etc/skel
/etc/login.defs(限制uid數量 密碼限制)
root 密碼丢失
*******************************
e 2 e 進入編輯模式
輸入 1 或者 single
按 b 進入單使用者模式
輸入 passwd 修改密碼
reboot 重新開機成功
家目錄下環境配置檔案
env 查詢環境變量
set 查詢所有變量
環境變量可以被子程序繼承 export b=2
自定義變量不能被子程序繼承 a=1
環境配置檔案(每個使用者家目錄下都存在)
.bash_history 儲存使用者的曆史指令,當使用者退出時儲存到檔案
.bash_logout 儲存使用者退出時執行的指令
.bashrc 儲存使用者别名 (開啟新的終端就可以讀取該檔案)
.bash_profile 儲存使用者搜尋指令的位置
.bashrc shell級别環境變量配置檔案
.bash_profile 登入級别環境變量配置檔案
su - 登入級别切換
su shell 級别切換
全局環境配置檔案
/etc/bashrc
/etc/profile
加載順序
.bash_profile
.bashrc
定義變量檔案順序
/etc/profile1
/etc/profile2
.bash_profile1
.bashrc1
/etc/bashrc1
/etc/bashrc2
.bashrc2
.bash_profile2
權限(基本權限和進階權限)
-rw-r--r-- 1 robin upup 39751 05-23 11:15 aa.txt
rwx | rwx | rwx
robin upup other
uid=0----->uid=robin----->group=upup----->other
磁盤配額 對比權限
對于檔案 r--------cat head tail....
w--------vim,gedit,vi,> >>
x--------執行./ 絕對路徑
對于目錄 r--------ls r-x檢視目錄下檔案資訊
w--------mkdir touhc rm rwx
x--------cd
能否删除檔案決定于該使用者擁有該檔案所在檔案夾的權限 r-x
-w- 權限可以檢視檔案夾下邊檔案 但是不能檢視詳細資訊
-wx 隻限于删除已知檔案名的檔案
user u
group g
other o
chmod u+r file/dir
chmod u+r,g+w file/dir
chmod ug-rw file/dir
chmod ugo+rwx file/dir
chmod a+rwx file/dir
chmod u=r file/dir
chmod u=r,g=w file/dir
chmod uo=rw file/dir
chmod ugo=rwx file/dir
chmod a=rwx file/dir
/ rwxr-xr-x 755
/etc/ rwxr-xr-x 755
/usr/ rwxr-xr-x 755
/var/ rwxr-xr-x 755
/tmp rwxrwxrwt 1777
/etc/shadow r-------- 400
/etc/passwd rw-r--r-- 644
/home/robin rwx------ 700
/root rwxr-x--- 750
root建立檔案預設權限 rw-r--r-- 644
root建立目錄預設權限 rwxr-xr-x 755
普通使用者建立檔案預設權限 rw-rw-r-- 664
普通使用者建立目錄預設權限 rwxrwxr-x 775
r------4 w------2 x-----1
777
rwxr----x 741 123--x-w--wx
r-x-wx-w- 532 456r--r-xrw-
預設權限計算方法
666 023
110110110 000010011
111101100 111101100
110100100
644
umask權限對照表
=============================================
umask值 目錄權限 普通檔案
0 7 6
1 6 6
2 5 4
3 4 4
4 3 2
5 2 2
6 1 0
7 0 0
chmod -r 777 /test
修改擁有者所屬組
chown robin tt.txt
chgrp uplooking tt.txt
chown robin.uplooking tt.txt
chown .uplooking tt.txt
.=:
chown -r robin.uplooking dir/
建立使用者tom和jerry
1.在/tmp目錄下建立檔案tt.txt
要求:
tt.txt權限設定為651 在改為rwxr----x
chmod 651 /tmp/tt.txt
chmod u=rwx,g=r,o=x /tmp/tt.txt
設定tt.txt檔案擁有這tom所屬組jerry
chown tom.jerry /tmp/tt.txt
2.根據以下要求設定擁有者和權限
在/tmp目錄下建立目錄test/,在test目錄下建立檔案aa.txt
tom可以讀寫檔案aa.txt 不能删除
jerry 不可以讀寫檔案aa.txt 可以删除
mkdir /tmp/test/
touch /tmp/test/aa.txt
/tmp/test/ jerry root rwxr-xr-x
/tmp/test/aa.txt tom root rw-r-----
= 配置視訊伺服器 =
= 1.将ip設定到192.168.1.0/24網段 =
= 2.showmount -e 192.168.1.201 =
= 3.mount 192.168.1.201:/source /mnt/ =
= cd /mnt/ =
= 4.cp uplayer.client.tar.bz2 /root/ =
= 5.cd /root =
= tar -jxvf uplayer.client.tar.bz2 =
= cd uplayer/ =
= ./install.sh =
主組附加組
robin robin robin,uplooking
/tmp/test rwxrwx--- root uplooking
robin能不能進去/tmp/test? 為什麼?
可以 因為附加組有uplooking
進入後建立檔案aa.txt 該檔案 擁有者 所屬組??
robin robin
如果該使用者想建立屬于uplooking組的檔案 怎麼做?
sg uplooking
robin uplooking robin,uplooking
進階權限
1.suid
必須作用于二進制可執行檔案
chmod u+s file
作用:任何使用者在執行擁有suid權限的指令時,都以該指令擁有者的身份執行
實驗:
在不改變/etc/shadow權限的前提下,使普通使用者robin可以使用cat檢視/etc/shadow檔案
内容
which cat
chmod u+s /bin/cat
給相應的權限 添加 u+s 的權限
2.sgid
必須作用于目錄
chmod g+s dir
作用:任何使用者在擁有sgid的目錄下建立的檔案,都要繼承該目錄的組
1.在/tmp/建立下test目錄 權限設定為 rwxrwxrwx root upup
使用robin使用者進入該目錄并且建立檔案aa.txt
aa.txt 所屬組?
-rw-rw-r-- 1 robin robin 0 05-24 10:59 aa.txt
2.在/tmp/test目錄上添加sgid權限
使用robin使用者進入該目錄并且建立檔案cc.txt
cc.txt 所屬組?
-rw-rw-r-- 1 robin upup 0 05-24 10:59 cc.txt
3.修改/tmp/test目錄的所屬組為redhat
使用robin使用者進入該目錄并且建立檔案tt.txt
tt.txt 所屬組? aa.txt cc.txt 所屬組?
redhat
-rw-rw-r-- 1 robin redhat 0 05-24 11:00 tt.txt
4.在/tmp/test目錄下建立目錄abc
abc 權限和所屬于組 是什麼?
redhat redhat
drwxrwsr-x 2 robin redhat 4096 05-24 11:01 abc
umask 0027
公共組 uplooking
就業部 組 job 使用者 tom jerry
資訊部 組 sal 使用者 zorro shrek
/stu
資訊部-----> stu.txt -----> /stu
就業部-----> 檢視stu.txt
資訊部-----> 檢視stu.txt
uplooking job sal
useradd -g job -g uplooking tom
useradd -g job -g uplooking jerry
useradd -g sal -g uplooking zorro
useradd -g sal -g uplooking shrek
chmod 775 stu/
chown .uplooking stu/
drwxrwxr-x 2 root uplooking 4096 05-24 11:49 stu/
aa.txt tom job
tt.txt tom uplooking rw-r-----
3.sticky(t 冒險位 粘貼位) /tmp 具有此權限
chmod o+t dir
作用:任何使用者在擁有t權限的目錄下建立的檔案,都屬于該使用者自己,
其他人無權删除 (root,目錄擁有者除外)
在/目錄下建立/test目錄 擁有者root 所屬組root 權限777
使用者jack rose
1.jack在/test目錄建立aa.txt
rose能不能删除aa.txt?
可以删除
2.在/test目錄上添加t權限
jack在/test目錄下建立jack.txt
rose能不能删除jack.txt?
無法删除
rose在/test目錄下建立rose.txt
jack能不能删除rose.txt?
3.root能不能删除/test目錄下的檔案?
4.添加使用者robin
robin能不能删除/test目錄下的檔案?
chown robin /test
suid-------4
sgid-------2
sticky-----1
7
1777
2777
4777
3777
[root@localhost ~]# ll aa.txt
-rwsrwsrwt 1 root root 0 05-24 12:16 aa.txt
進階權限顯示為大寫 源檔案沒有執行權限
進階權限顯示為小寫 源檔案有執行權限
特殊屬性 facl
程序管理
靜态查詢
ps -ef
ps aux
動态查詢
top
cat /proc/cpuinfo
cat cpuinfo | grep pae
cat cpuinfo | grep vmx inter支援全虛拟
cat cpuinfo | grep svm amd
cat cpuinfo | grep lm 是否支援64位系統
kill -9 強制結束
kill -15 正常結束
pkill httpd
killall httpd
xkill
ctrl+alt+backspace
前背景切換
xclock -update 1
xclock -update 1 &
nohup xclock -update 1 & 關閉父程序 子程序繼續
ctrl+z
jobs 查詢編号
bg 編号
fg 編号
kill %編号 殺掉背景程序
優先級調整(-20~~19)
nice -n -20 xclock -update 1
renice 15 -p 5316------>(pid)
process state codes
d uninterruptible sleep (usually io)
r running or runnable (on run queue)
s interruptible sleep (waiting for
an event to complete)
t stopped, either by a job control
signal or because it is being
traced.
w paging (not valid since the 2.6.xx
kernel)
x dead (should never be seen)
z defunct ("zombie") process,
terminated but not reaped by its
< high-priority (not nice to other
users)
n low-priority (nice to other users)
l has pages locked into memory (for
real-time and custom io)
s is a session leader
l is multi-threaded (using
clone_thread, like nptl
pthreads do)
+ is in the foreground process group
第一節 進階指令
cat -n /etc/passwd |head -20 |tail -1 隻顯示檔案第20行
cat -n /etc/passwd | head -20 |tail -1 | tac 上下反序
cat -n /etc/passwd | head -20 |tail -1 | rev 左右反序
sort 按首字元排序 -n 按整個數字排序 -r反向 -u去掉重複值
uniq 去連續重複值 -d 顯示重複行 -u 顯示不重複行 -c 統計重複次數
grep 過濾字元
grep root /etc/passwd
grep ^root /etc/passwd
grep halt$ /etc/passwd
grep -v ^root /etc/passwd
cut 截取字元
截取行
cut -d: -f1 /etc/passwd 截取 以:分割行 第一列
cut -d: -f1,3,5 /etc/passwd
cut -d: -f1-3,5 /etc/passwd 截取 以:分割行 第1-3列 5列
截取字元
cut -c 1 /etc/passwd | head -5
cut -c 1,2,4 /etc/passwd | head -5 截取 1,2,4 個字元
cut -c 1-4 /etc/passwd | head -5
wc 統計字元
wc
wc -l /etc/passwd l 行數
wc -w aa.txt w 單詞數
wc -c aa.txt c 字元數
一個漢字 3個字元
練習題:
1.統計你系統中有多少個使用者可以登入(/bin/bash)
grep /bin/bash /etc/passwd | wc -l
grep -c bash /etc/passwd
grep bash /etc/passwd | cut -d: -f 7 | uniq -c
2.擷取網卡ip位址 192.168.1.254
1).ifconfig eth0 | awk -f':| +' '/bcast/{print $4}'
2).ifconfig eth0 | grep 'inet addr'| cut -d: -f2 | cut -d' ' -f 1
3).ifconfig eth0 |head -2 |tail -1 |cut -d: -f2 |cut -d' ' -f1
4).ifconfig eth0 |grep bcast |cut -d: -f2 |cut -d' ' -f1
3.[root@localhost ~]# stat aa.txt
file: “aa.txt”
size: 4 blocks: 8 io block:
4096 一般檔案
device: 802h/2050d inode: 554909 links: 1
access: (0644/-rw-r--r--) uid: ( 0/ root) g
id: ( 0/ root)
access: 2013-05-27 10:16:46.000000000 +0800
modify: 2013-05-27 10:16:46.000000000 +0800
change: 2013-05-27 10:16:46.000000000 +0800
過濾顯示時間
10:16:46
stat 顯示檔案屬性
stat aa.txt | tail -3 | cut -d' ' -f 3 | cut -d. -f 1
第二節 shell基礎
history
!1015 執行第1015條指令
!! 執行上一次指令
! cat 在執行一次最後一條以cat開始的指令
!$ 引用上一個指令最後一個參數
alt + . 引用上一個指令最後一個參數
重新定向符和 檔案描述符 { 0 1 2 > >> }
1> 标準正确輸出,如果檔案存在則覆寫,如果不存在則建立
1>> 标準正确輸出,如果檔案存在則追加,如果不存在則建立
2> 标準錯誤輸出,如果檔案存在則覆寫,如果不存在則建立
2>> 标準錯誤輸出,如果檔案存在則覆寫,如果不存在則建立
&> /etc/null 标準錯誤和标準正确同時輸出
2&>1 标準錯誤輸出定向到标準正确輸出位置
shell 腳本文法 批量建立使用者
================================
#!/bin/bash
#add user script
for i in {1..10}
do
#顯示添加使用者
echo "add user abc$i"
#執行添加使用者
useradd abc$i
#等待1秒顯示
sleep 1
#顯示使用者建立完畢
echo "add user finish"
echo "********"
#設定使用者密碼
echo "set abc$i password now"
#設定密碼,去掉指令傳回值
echo 123 | passwd --stdin abc$i &> /dev/null
sleep 1
echo "passwd finish !!!"
done
================
if腳本 顯示存在檔案
#檔案是否存在!
if [ -f /tmp/aa.txt ]
then
echo "檔案存在!顯示資訊!!!"
sleep 1
ls -l /tmp/aa.txt
else
echo "檔案不存在!建立檔案!"
touch /tmp/aa.txt
fi
null 黑洞檔案
zero 資料發生器
du -s 顯示大小
du -sh 隻顯示總大小
壓縮打包安裝軟體
winrar 和 zip
gzip bzip2
dd if=/dev/zero of=data bs=100m count=2
gzip data 壓縮檔案
gunzip data 解壓檔案
hexdump aa.txt 二進制顯示檔案
gzip data 壓縮檔案
gunzip data.gz 解壓檔案
bzip2 data 壓縮檔案
bunzip2 data.bz2解壓檔案
打包
tar -cvf boot.tar /boot/ c 建立 v顯示過程 f file
tar -tvf boot.tar t顯示包内容
tar -rvf boot.tar install.log r追加打包
tar -xvf boot.tar x解包
tar -cvf /tmp/boot.tar /boot
tar -xvf boot.tar -c /tmp
tar -zcvf /tmp/boot.tar.gz /boot/
存放位置,壓縮名 壓縮目标
tar -ztvf boot.tar.gz
tar -zxvf boot.tar.gz
tar -jcvf boot.tar.bz2 /boot/
tar -jtvf boot.tar.bz2
tar -jxvf boot.tar.bz2
boot.tgz boot.tbz2
軟體安裝
mount
mount -t iso9660 /dev/cdrom /mnt/cdrom/
umount /dev/cdrom
umount /mnt/cdrom
umount -l /dev/cdrom 強制解除安裝!
mount /var/ftp/ule05-21/rhel5u8.iso /mnt/cdrom/ -o loop 挂在檔案
制作鏡像
*****************************************************************
cat /dev/cdrom >> rhel5-8.iso
dd if=/dev/cdrom of=/opt/rhel5-8.iso
安裝軟體包
rpm -ivh httpd-*.rpm i install v過程 h 百分比
rpm -q httpd 查詢資訊 q檢索資訊
rpm -qi httpd 查詢安裝包資訊 i資訊
rpm -ql httpd | cut -d\/ -f 2 |uniq 轉議正常顯示/ 然後去重複
rpm -qd httpd
rpm -qc httpd
rpm -qa all
rpm -qa | grep lib
rpm -qf /etc/httpd/conf/httpd.conf
rpm -qf `which mount` 查詢指令 那個軟體報安裝的
rpm -e httpd 解除安裝
未安裝包
rpm -qpi zip-2.31-2.el5.i386.rpm 查詢未安裝包的資訊
rpm -qpl zip-2.31-2.el5.i386.rpm 查詢包安裝後位置
強制安裝
rpm -ivh httpd-2.2.3-63.el5.i386.rpm --force
不檢測依賴關系
rpm -ivh apr-devel-1.2.7-11.el5_6.5.i386.rpm --nodeps
導入key安裝
rpm --import rpm-gpg-key-redhat-release
yum庫
**************************************************************
CD光牒作為yum源
1.mount /var/ftp/ule05-21/rhel5u8.iso /mnt/cdrom -o loop
2.vim /etc/yum.conf
gpgcheck=0
3.cd /etc/yum.repos.d/
touch yum.repo
vim yum.repo
[rhel-server]
name=server
baseurl=file:///mnt/cdrom/server
enable=1
******************************************************
4.測試
yum clean all
yum list
yum install httpd-devel 安裝
yum remove httpd-devel 解除安裝
yum reinstall httpd-devel 重新安裝
ls /mnt/cdrom/server/ | grep -v rpm$ 過濾ls顯示後 包含rpm$的檔案并顯示出來
2.建庫
rpm -ivh createrepo-0.4.11-3.el5.noarch.rpm
所有軟體包拷貝/yum
createrepo /yum
yum庫配置檔案 指向/yum
vim /etc/yum.repos.d/yum.repo
baseurl=file:///yum
enabled=1
mv `ls |grep .rpm` /opt/server/ 過濾目前檔案件中含有.rpm的檔案 然後移動到/opt/server
[root@localhost ~]# lftp 192.168.1.254
lftp 192.168.1.254:~> ls
drwxrwxrwx 6 0 0 4096 may 28 02:53 ule05-21
drwxr-xr-x 2 0 0 4096 dec 05 2011 pub
lftp 192.168.1.254:/> cd ule05-21/
lftp 192.168.1.254:/ule05-21> get biji
lftp 192.168.1.254:/ule05-21> mirror software/
lftp 192.168.1.254:/ule05-21>
源碼包安裝
tar -jxvf lftp-3.5.10.tar.bz2 -c /usr/local/src/
cd /usr/local/src/lftp-3.5.10
1. ./configure --prefix=/usr/local/lftp
2. make
3. make install
修改指令搜尋路徑
vim /etc/bashrc
添加變量,直接在終端調用
path=/usr/local/lftp/bin:$path
添加變量位置
export path
重新整理變量
. /etc/bashrc
應用新指令
lftp-3.5.1-2.fc6.src.rpm安裝
安裝 rpm -ivh rpm-build-4.4.2.3-27.el5.i386.rpm
rpm -q rpm-build
rpm -ivh lftp-3.5.1-2.fc6.src.rpm 安裝半源碼包
cd /usr/src/redhat/specs/ 切換到目錄
rpmbuild -bb lftp.spec 建立rpm包
cd /usr/src/redhat/rpms/i386/ 切換rpm包目錄下
rpm -ivh lftp-3.5.1-2.i386.rpm 執行rpm包安裝
安裝rpmbuild包
rpm -ivh rpm-build-4.4.2.3-27.el5.i386.rpm
安裝半源碼包
rpm -ivh lftp-3.5.1-2.fc6.src.rpm
切換到目錄
cd /usr/src/redhat/specs/
建立rpm包
rpmbuild -bb lftp.spec
切換rpm包目錄下
cd /usr/src/redhat/rpms/i386/
執行rpm包安裝
rpm -ivh lftp-3.5.1-2.i386.rpm
運作lftp
磁盤管理
df -th
fdisk -l
硬碟最多主分區 4
硬碟最多擴充分區 1 邏輯結構(邏輯分區)
分主分區
fdisk /dev/sda
command (m for help): m
d delete a partition 删除分區
l list known partition types 顯示分區類型清單
p print the partition table 列印分區表
q quit without saving changes 不儲存設定退出
t change a partition's system id 設定分區系統id類型
n add a new partition 建立新的分區
w write table to disk and exit 儲存分區表
分區
command (m for help): n
command action
e extended
p primary partition (1-4)
p
selected partition 4
first cylinder (2691-3916, default 2691): ---- 回車
last cylinder or +size or +sizem or +sizek (2691-3916, default 3916): +1000m ----- 回車
command (m for help): w
重新整理分區表
partprobe /dev/sda
格式化分區
mkfs.ext3 /dev/sda4
挂在分區
mount -t ext3 /dev/sda4 /opt/
删除分區
首先解除安裝挂在分區
1.umount /dev/sda4
進入編輯模式
2.fdisk /dev/sda
command (m for help): d
所删除分區編号
partition number (1-4): 4
儲存退出
partprobe /dev/sda ========rhel6===> partx -a /dev/sda 執行2此重新整理分區表
擴充分區和邏輯分區
1.fdisk /dev/sda
e
first cylinder (2691-3916, default 2691):----回車
using default value 2691
last cylinder or +size or +sizem or +sizek (2691-3916, default 3916):-------回車
using default value 3916
command (m for help): p
mkfs.ext3 /dev/sda5
*********************************************************************
劃分兩個邏輯分區 200m
/dev/sda5 ---------> /mnt sda5.txt
/dev/sda6 ---------> /mnt 能不能挂? 看看/mnt/sda5.txt? 怎麼才能看到?
/dev/sda5 -----> /mnt
/dev/sda5 ------> /opt? 能不能看到sda5.txt
解決u盤隻讀問題
mount -o remount,rw /dev/sdb1
umount /dev/sdb1
mount -o rw /dev/sdb1 /mnt
查詢卷标
blkid -s label 查詢所有卷标
e2label /dev/sda1 查詢
e2label /dev/sda5 disk5 設定卷标
mount /dev/sda5 /mnt
卷标使用實驗:
1.分4個分區 /dev/sda5 /dev/sda6 /dev/sda7 /dev/sda8
2.mount /dev/sda7 /mnt
touch /mnt/sda7.txt
umount /dev/sda7
3.删除sda5分區 partprobe /dev/sda5
4.fdisk -l (sda5 sda6 sda7)
5.mount /dev/sda7 /mnt
檢視/mnt/sda7.txt 檔案是否存在? 不存在
umount /mnt
6.mount lable=disk7 /mnt
檢視/mnt/sda7.txt 檔案是否存在? 存在
磁盤滿
硬碟滿(1.空間100% 2.inode号%100)
pardted 超過2tb硬碟用 1024進制,廠家1000進制
kb bb gb tb pb eb
磁盤配額
acl.特殊屬性
chattr +i aa.txt
lsattr aa.txt
i 不能删除,修改内容,移動,追加,重命名,修改屬性... 可以讀,cp
目錄不能删除或者建立新的檔案
a 不能删除,修改内容,移動,重命名,修改屬性... 可以讀,cp 追加
目錄不能删除 可以建立新的檔案
******************************************************************
facl(檔案通路控制清單)
1.挂在磁盤時打開acl功能 帶有 + 說明有facl 通路控制清單
mount -o acl /dev/sda5 /opt/
getfacl aa.txt
setfacl -m u:robin:rw aa.txt 設定使用者權限
setfacl -m g:sal:rw aa.txt 設定組權限
setfacl -m o:rwx aa.txt 設定其他使用者權限
setfacl -m m:r 設定umask權限
aa.txt
删除權限
setfacl -x u:robin aa.txt
徹底删除
setfacl -b aa.txt 删除限制權限 使用者群組的權限 other保留
**********************************************************************************
作業:
1).建立三個普通使用者seker,zorro,shrek.用root使用者在/root目錄中建立一個檔案abc.txt
2).使seker使用者既能讀又能寫abc.txt檔案,但不能删除
使zorro使用者隻能讀取,不能寫也不能删這個檔案
使shrek使用者隻能删除,不能讀寫這個檔案.
以上三個條件同時成立
/root root root rwxr-w---
/root/abc.txt root root rw-r-----
setfacl -m u:seker:rw /root/abc.txtsetfacl -m u:seker:rx /root/
setfacl -m u:zorro:r /root/abc.txt
setfacl -m u:zorro:rx /root/
chmod o=0 /root/abc.txt
setfacl -m u:shrek:0 /root/abc.txt
setfacl -m u:shrek:rwx /root
2.删除除了/分區 /boot分區 swap分區意外 所有分區
建立邏輯分區 建立6邏輯分區 200m
交換分區擴大縮小
擴大
free -m
mkswap /dev/sda5
swapon /dev/sda5
swapon -s 查詢交換分區資訊
縮小
swapoff /dev/sda5
用檔案擴大交換分區
dd if=/dev/zero of=/swap bs=200m count=5
mkswap /swap
free
swapon /swap
swapon -s
取消/swap
對/swap 格式化ext3 是否能mount?
ext3 1k
4 塊越小 效率低 磁盤使用率高
16 快越大 效率高 磁盤使用率小
檔案系統 ext2 ext3 ext4 swap fat32 ntfs nfs cifs gfs
xfs rezirefs
**********************************************************
reserved 保留
maximum mount count: 磁盤檢測
ext3-----super block 超級塊資訊
dumpe2fs /dev/sda5
tune2fs -l /dev/sda5 超看磁盤分區資訊
tune2fs -c 50 /dev/sda5 最大挂載次數檢測設定
tune2fs -c 10 /dev/sda5 更改已經挂載次數
tune2fs -l newdisk /dev/sda5 更改卷标名稱
tune2fs -o acl /dev/sda5 自動開啟acl清單功能
tune2fs -o ^acl /dev/sda5 關閉自動開啟acl清單功能
bl -1 小數計算參數
符号連結和硬連結
ln /root/ying.txt /root/desktop/
ln -s /root/ruan.txt /root/desktop/
差別
1.軟連結不能對源檔案執行删除或者重命名
硬連結可以對源檔案執行删除或者重命名
2.軟連結檔案權限永遠都是777和源檔案權限不同
硬連結檔案和源檔案權限永遠一緻
3.軟連結檔案的inode号和源檔案是不同的
硬連結檔案的inode号和源檔案是相同的
4.軟連結在建立中必須寫絕對路徑
硬連結在建立中可以絕對路徑也可以相對路徑
5.軟連結可以跨檔案系統
硬連結不可以跨檔案系統
6.軟連結可以對目錄做連結
硬連結不可以對目錄作連結
ll顯示的是硬體連接配接數
***************************************************************
磁盤配額(基于磁盤)
1.開啟使用者磁盤配額支援
mount -o usrquota /dev/sda5 /mnt
2.生成(檢測)使用者配額檔案
quotacheck /mnt/ 生成磁盤配額配置檔案
3.edquota -u robin 對使用者開啟磁盤配額
disk quotas for user robin (uid 504):
filesystem blocks soft hard inodes soft hard
/dev/sda5 0 0 0 0 0 0
大小限制 檔案個數
4.quotaon /mnt
5.測試 su - robin 到/mnt
組配額
添加使用者 tom 和 jerry 屬于uplooking
mount -o grpquota /dev/sda6 /opt
quotacheck -g /opt
edquota -g uplooking
設定軟限 硬限
quotaon -g /opt
quota -u tom 檢視使用者配額
quota -g uplooking 檢視組配額
測試 tom 和 jerry
配額限制是uplooking共有
還是tom和jerry分别限制
查詢已激活配額的使用者或者組
repquota -u /dev/sda5
repquota -g /dev/sda6
edquota -p robin zorro 複制使用者配額
old new
grace time 的設定 edquota -t -g 組
自動挂載
1./etc/rc.local(進去系統前最後一個執行腳本)
mount -o acl,grpquota,usrquota,rw,sync /dev/sda5 /mnt/
2./etc/fstab
/dev/sda6 /opt ext3 defaults,rw,acl 0 0
mount -a 測試
3.autofs(按需mount)不要對系統目錄做該服務
/test /etc/auto.test --timeout=10 10秒鐘自動解除安裝
分區(/dev/sda7) 格式化
修改主配置檔案
1) vim /etc/auto.master
/test /etc/auto.test
挂載目錄 挂載檔案
2) mkdir /test 建立挂載目錄
touch /etc/auto.test 建立配置檔案
3) vim /etc/auto.test 編輯配置檔案
disk7 -fstype=ext3,rw :/dev/sda7
(觸發名-随意) 檔案系統類型及參數 被挂載裝置
4)service autofs restart
測試:
cd /test/disk7
ls /test/disk7
watch -n 1 mount 自動檢測mount變化
計劃任務
at
[root@localhost ~]# at 15:55 定制
at> touch /tmp/at.txt
at> <eot>
job 1 at 2013-05-29 15:55
[root@localhost ~]# at -l 查詢
1 2013-05-29 15:55 a root
[root@localhost ~]# atrm 1 删除
crond 計劃任務服務
service crond resatrt
crontab -e 定制計劃任務
* * * * *
分 時 日 月 周
分(00-59)
時(00-23)
日(1-31)
月(1-12)
周(0-7) 0和7 代表周日
* * * * * 每分鐘執行
10 * * * * 每小時10執行
10 02 * * * 每天的2點10分
10 02 13 * * 每個月的13号2點10分
10 02 13 10 * 每年10月13号2點10分
10 02 13 10 5 每年10月13号如果是周5 2點10分執行
10 02-06 10,15,25 8-10,12 5 每年的8-10或者12月10,15,25号如果是周5那麼2點到6點的10
分執行
*/15 * * * * 每15分鐘執行一次
計劃任務儲存位置 /var/spool/cron/
每個使用者的計劃任務都儲存/var/spool/cron/ 以使用者名字作為檔案名
crontab -e -u robin
crontab -l 查詢目前使用者所有的計劃任務
crontab -r 删除目前使用者所有的計劃任務
系統計劃任務/etc/crontab
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/
/etc/amdin/.....腳本
/etc/cron.deny 拒絕普通使用者執行計劃任務
anacron 開機後執行為執行的計劃任務
5月29日作業:
1.在目前系統時間5分鐘後 将install.log複制/tmp
crontab -l
05 * * * * cp /root/install.log /tmp
2.在目前系統時間的5分鐘後 将/boot打包儲存到/backup目錄
`date +%m-%d-%h-%m-boot
月-日-時-boot.tar.gz
cat back.sh
tar -zcvf /backup/`date +%m-%d-%h`-boot.tar.gz /boot
10 02 * * * /backup/back.sh
3.把鏡像檔案實作自動挂載 3種方法實作
1.vim /etc/rc.local
mount -o loop /soft/rhel5u8.iso /2tst
2.vim /etc/fstab
/soft/rhel5u8.iso /1tst iso9660 default,loop 0 0
3.vim /etc/auto.master
4.使用autofs觸發挂載iso檔案 和 yum結合一起使用
vim /etc/auto.master
/iso /etc/auto.iso
mkdir /iso
touch /etc/auto.iso
cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom 有時需要加上
iso -fstype=iso9660,loop :/soft/rhel5u5.iso
auto.master
/yum /etc/auto.yum
mkdir /yum
touch /etc/auto.yum
cat /etc/auto.yum
iso -fstype=iso9660,loop :/var/ftp/ule05-21/rhel5u8.iso
vim /etc/yum.repo.d/5rhel.repo
[rhel-opt-server]
baseurl=file:///soft/server
enalbe=1
先做iso的自動
raid(磁盤陣列備援 提高硬碟通路速度)
raid0 raid1 raid5 raid10
條帶化寫 備援 帶奇偶校驗的條帶化 raid1+raid0
2塊磁盤 2塊磁盤 3塊磁盤 4塊磁盤
500g 500g 500g 500g
1t 500g 1t 1t
mdadm -c /dev/md0 -l 5 -n 3 /dev/sda{6,7,8} 實體硬碟sdb1,sdc1,sdd1
mdadm -c /dev/md0 -l 5 -n 3 /dev/sda{6,7,8} x 1 /dev/sda9 備用盤
-c create 建立 -l level 類型 -n number 硬碟數量
mdadm -d /dev/md0 檢視raid
mdadm -ds 掃描檢視簡潔資訊
mdadm -s /dev/md0 停止raid
mdadm -a /dev/md0 /dev/sda{6,7,8} 停止後再啟動
mdadm -s /dev/md0
rm -rf /dev/md0
使用
mkfs.ext3 /dev/md0
模拟損壞
dd if=/dev/zero of=data bs=100m count=3
md5sum data
mdadm /dev/md0 -f /dev/sda6 損壞
mdadm /dev/md0 -r /dev/sda6 解除安裝
mdadm /dev/md0 -a /dev/sda9 挂載
mdadm /dev/md0 -a /dev/sda9 備用磁盤
mdadm -d /dev/md0
永久儲存
touch /etc/mdadm.conf
cat /etc/mdadm.conf
device /dev/sda6 /dev/sda7 /dev/sda8
array /dev/md0 level=raid5 num-devices=3 metadata=0.90 uuid=3
302db2d:e60e1cfb:5518ba01:f353f556
(mdadm -ds >> /etc/mdadm.conf)
/usr/share/doc/mdadm-2.6.9/mdadm.conf-example 配置模闆
mdadm -as /dev/md10 重新開機測試
建立raid時直接指定備盤
mdadm -c /dev/md0 -l 5 -n 3 /dev/sda{6,7,8} -x 1 /dev/sda9
mdadm -s /dev/md0
mdadm --zero-superblock /dev/sda6
mdadm --zero-superblock /dev/sda7
mdadm --zero-superblock /dev/sda8
mdadm --zero-superblock /dev/sda9
lvm(邏輯卷管理)作用:支援硬碟線上擴容
建立lvm過程
建立實體卷
pvcreate /dev/sda6 /dev/sda7
檢視實體卷pvs
顯示詳細資訊pvdisplay
pvscan時提示"/dev/cdrom open failed"的解決方法
1.解決方法
vim /etc/lvm/lvm.conf
将
filter = [ "a/.*/" ]
注釋掉
filter = [ "r|/dev/cdrom|" ]
取消注釋即可。
建立卷組
vgcreate vg0 /dev/sda6 /dev/sda7
檢視卷組vgs
顯示詳細資訊vgdisplay
建立邏輯卷
lvcreate -l 200m -n /dev/vg0/lv0 vg0
檢視邏輯卷lvs
顯示詳細資訊lvdisplay
格式化
mkfs.ext3 /dev/vg0/lv0
挂載
mount /dev/vg0/lv0 /mnt/
檢視資訊
線上擴容
lvextend -l +100m /dev/vg0/lv0
lvs
重新整理擴充空間
resize2fs /dev/vg0/lv0 300m 重新整理到300g
lv縮小
umount /dev/vg0/lv0
e2fsck -f /dev/vg0/lv0
resize2fs /dev/vg0/lv0 150m 調整到150m
lvresize -l 150m /dev/vg0/lv0
實驗:
1.建立lv0 大小200m 将lv0格式化化挂載/mnt
在該目錄下建立data檔案150m 并記錄下md5sum值
建立pv
pvcreate /dev/sda6 /dev/sda7 /dev/sda8
建立vg
vgcreate vg0 /dev/sda6 /dev/sda7 /dev/sda8
建立lv
mkfs.ext3 /dev/vg0/lv0
mount /dev/vg0/lv0 /lvm
2.對lv0進行縮小操作,縮小到140m 可不可以?報錯
縮小到160m 可不可以?可以
3.将lv0挂載起來。驗證縮小操作是否完成?
在不解除安裝lv0的前提下将lv0線上擴容到300m
vg擴大和縮小(卷組硬碟數量)
pvcreate /dev/sda8
vgextend vg0 /dev/sda8
縮小(減少硬碟數量數量)
vgreduce vg0 /dev/sda8
資料移動
前提,使用的裝置必須在同一個vg
pvmove /dev/sda6 /dev/sda8 指定sda6存儲的資料移動到sda8
pvmove /dev/sda8 不指定裝置移動資料
删除lv
umount /dev/vg0/lv0 解除安裝裝置
lvremove /dev/vg0/lv0 删除lv -ff 強制删除(資料丢失)
vgremove vg0 删除vg
pvremove /dev/sda{6,7,8}删除pv
lvm快照
建立快照
lvcreate -l 50m -s -n /dev/vg0/lv0-s0 /dev/vg0/lv0
快照名稱 原檔案
建立
1.隻使用快照(原lv不挂載)隻能在原lv資料基礎上作出50m的修改,
一旦到了最大值該快照自動損壞所有的修改都是記錄在快照裡
2.隻是使用原lv(快照儲存,不挂載)
使用快照資料恢複原資料(快照size 大于 原lv)
作業:
1.分6個分區200m 做個raid5(400) raid0(400) sda10(200)
建立raid5
mdadm -c /dev/md5 -l 5 -n 3 /dev/sda{5,6,7}
mkfs.ext3 /dev/md5
mount /dev/md5 /raid5/
建立raid0
mdadm -c /dev/md0 -l 0 -n 2 /dev/sda{8,9}
mdadm -ds
mount /dev/md0 /raid0
2.将raid5 建立成pv vg lv
擴大vg sda10
擴大lv到500m
将sda10 資料移動 raid0 移除 sda10
vgcreate /dev/sda10
pvcreate /dev/sda10
vgextend vg0 /dev/sda10
lvextend -l +200m /dev/vg0/lv0
resize2fs /dev/vg0/lv0 500m
pvs
pvcreate /dev/md0
vgextend vg0 /dev/md0
pvmove /dev/sda10 /dev/md0
1.隻使用快照(原lv不挂載)
寫入母盤資料,然後解除安裝母盤,挂載快照,
檢視快照内容和母盤資料一樣,隻能修改快照資料,母盤資料不變。
重新挂在母盤,原來資料依舊存在
系統啟動過程(排錯)
1.bois-------->啟動項(CD光牒,硬碟,u盤,網路,軟碟)------->硬碟
2.引導程式(bootloader(grub.conf))mbr(主引導記錄 512位元組)(446引導程式-64(分區
表)--2位元組magic number aa55)
stage1(446)---> stage1.5------>stage2
3.讀取grub.conf檔案 找到核心 initrd檔案
引導程式損壞
CD光牒修複模式
boot:linux rescue
在記憶體中打開CD光牒系統
mkdir /a
mount /dev/sda2 /a
ls /a -------原根目錄結構
安裝引導程式
grub
grub> root (hd0,0)
grub> setup (hd0)
success 安裝成功
4.啟動核心,啟動檔案------> init
5.init------>/etc/inittab
啟動級别
6.執行rc.sysinit 初始化作業系統(fstab)
7.運作對應級别啟動腳本目錄rc[1-6].d 啟動系統中定義的服務
8./etc/rc.local 進入系統前最後一個執行腳本
9.加載文本的環境(加載圖形環境)
10.login----->bash環境配置檔案
ts1.sh
inittab
fstab
passwd
修改啟動級别
vi /etc/inittab
第18行 id:5:initdefault:
vi /etc/fstab
defaults
vi/etc/passwd
使用者密碼
ts2.sh
grub.conf
root (hd0,0)
kernel /vmlinuz-2.6.18-308.el5 ro root=label=/ rhgb quiet 1
initrd /initrd-2.6.18-308.el5.img
vi /etc/passwd
故障3
缺少grub核心
kernel /vmlinuz-2.6.18-308.el5 ro root=label=/ rhgb quiet 1
sh-3.2# grub
sh-3.2# root (hd0,0)
sh-3.2# setup (hd0)
缺少卷辨別 檢視 /etc/fstab 内卷标修改
e2lable /dev/sda1 /boot
e2lable /dev/sda2 /
wall " you lose "
ts3.sh
引導程式
卷标
ts4.sh
mount被删除
CD光牒系統
mkdir /a
mount /dev/hdc /a/mnt
chroot /a
rpm -ivh /mnt/server/util-linux-2.13-0.59.el5.rpm --force
rc.local
tmp目錄權限被修改
crontab -e
查找指令
編譯核心(子產品管理)
網絡管理
顯示加載子產品
lsmod
查詢子產品
modinfo ext3
移出子產品
rmmod 8139too
手動加載子產品
insmod /lib/modules/2.6.18-308.el5/kernel/drivers/net/8139too.ko
動态加載子產品
modprobe 8139too 依賴/lib/modules/2.6.18-308.el5/modules.dep 依賴庫檔案
重建依賴關系庫
depmod -a 建立 modprobe 8139too
檢視核心版本号
uname -r
2.6.18-308.el5
主版本.次版本号.修訂版本号
次版本号如奇數 測試版 beta
次版本号如偶數 穩定版 release
核心參數調整
cat /proc/sys/net/ipv4/icmp_echo_ignore_all
值為1忽略所有的ping指令
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
cat /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
忽略ping廣播
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
cat /proc/sys/vm/drop_caches
清楚緩存
echo 1 > /proc/sys/vm/drop_caches
cat /proc/sys/net/ipv4/ip_forward
開啟路由轉發功能 open route
echo 1 > /proc/sys/net/ipv4/ip_forward
編譯核心
tar -jxvf linux-2.6.30.tar.bz2 -c /usr/local/src/
/usr/local/src/linux-2.6.30/documentation/devices.txt
建立字元裝置
mknod -m 640 /dev/sda11 b 8 11
權限 裝置名稱 類型 主裝置号 從裝置号
編譯核心檔案
make mrproper 清理以前編譯痕迹
make menuconfig 執行編輯
make 編譯
make modules_install 子產品安裝
make install 安裝
修改.i㎎檔案
解壓 .img 檔案
zcat initrd-2.6.30.img | cpio -i
cd /tmp
mkdir init
cp /boot/initrd-2.6.30.img /tmp
cd init
zcat ../initrd-2.6.30.img | cpio -i
find . | cpio -c -o >> ../initrd
gzip -9 initrd
mv initrd.gz initrd.img
測試編譯 .img 檔案
cp initrd.img /boot/
vim /boot/grub/grub.conf
title red hat enterprise linux server (2.6.30)
root (hd0,0)
kernel /vmlinuz-2.6.30 ro root=label=/ [rhgb quiet] "[]" 内去掉後 快速啟動
initrd /initrd.img 添加行
title red hat enterprise linux server (2.6.18-308.el5)
kernel /vmlinuz-2.6.18-308.el5 ro root=label=/ rhgb quiet
initrd /initrd-2.6.18-308.el5.img
***********************************************************************************
*
設定ip
setup
service network restart 重新開機網卡
/etc/init.d/network restart
網卡配置檔案
/etc/sysconfig/network-scripts/ifcfg-eth0
檢視網卡資訊
ifconfig eth0
ifconfig eth0 10.10.10.10
ifconfig eth0 down 或 ifdown eth0 停用網卡
ifconfig eth0 up 或者 ifup eth0 啟用網卡
ifdown eth0 || ifup eth0 || 前一個指令正确執行,後一個指令不執行 (邏輯或)
ifdown eth0 && ifup eth0 && 前一個指令必須正确執行,然後執行後一個指令 (邏
輯與)
ifdown eth0 ; ifup eth0 ; 不管前一個指令是否正确執行,後一個指令都
要執行
臨時修改mac位址
ifconfig eth0 down
ifconfig eth0 hw ether 00:01:22:a1:c2:3d
ifconfig eth0 192.168.1.188
ifconfig eth0 up
service network restart
永久修改 /etc/sysconfig/network-scripts/ifcfg-eth0 相應行
網卡别名
ifconfig eth0:0 10.10.10.10
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0
device=eth0:0
bootproto=none
hwaddr=00:0c:29:d5:0b:2b
onboot=yes
ipaddr=10.10.10.10
netmask=255.255.255.0
gateway=10.10.10.1
type=ethernet
service netwrok restart
多餘網卡備份網卡配置檔案
/etc/modprobe.conf
/etc/sysconfig/hwconf hw配置的實際mac位址
/etc/sysconfig/networking/devices
/etc/sysconfig/networking/profiles/default
删除虛拟網卡位址
ip add del xxx.xxx.xxx.xxx dev eth0:0
添加路由
route -n 檢視
route add default gw 192.168.1.254
route del default gw 192.168.1.254
traceroute www.baidu.com 路由追蹤
arping 192.168.1.254 檢測沖突檢測
arp 檢查連接配接本機的位址
ip addr show 顯示所有網卡資訊
主機名
hostname
hostname robin.com
/etc/sysconfig/network 主機名配置檔案
hostname=robin.com
1.which 查找指令位置
2.whereis
3.grep 過濾檔案
4.locate(依賴 updatedb 指令) 查找昨天建立檔案
vim /etc/crontab 系統自動維護
vim /etc/anacrontab 未執行任務 延期 開機65分鐘維護
tmp不維護 7天後自動清空不用檔案
5.find
find / -name .img 按照 名稱超找
find / -type p -ls 按照 類型查找
find / -links 30 -ls 按照 硬連接配接數查找
find /home -user xiao -ls 按照 使用者名查找
find /home -group xiao -ls 按照 組查找
find /home -nouser -ls 查找無使用者名檔案
find /home -nogroup -ls 查找無組名檔案
find /home \(-nouser -a nogroup \) -ls 顯示 無使用者名與無組的檔案
find /home \(-nouser -o nogroup \) -ls 顯示 無使用者名或無組的檔案
find /home -nouser -exec rm -rf {} \; 查找無使用者名的檔案 然後删除 rm -rf {} \; 固定格式
find /home -nogroup -ok rm -rf {} \; 互動式删除 查找到滿足條件的檔案
按照 檔案大小查找檔案
find /home/test -size 300m 等于
find /home/test -size +150m -a -size -350m 大于小于 全滿足
find /home/test -size -150m -o -size +350m 小于大于 任其一
***************************************************************************
stat
file: `mac.sh'
size: 461 blocks: 8 io block: 4096 regular file
device: 802h/2050d inode: 58425610 links: 1
access: (0755/-rwxr-xr-x) uid: ( 0/ root) gid: ( 0/ root)
access: 2013-06-04 10:02:04.000000000 +0800
通路時間
modify: 2013-06-04 09:50:51.000000000 +0800
修改時間
change: 2013-06-04 09:50:51.000000000 +0800
屬性權限
*****************************************************************************
修改檔案時間
touch -m -d 20120101 aa.txt 建立檔案帶時間
touch -m -t 201010101010.10 aa.txt 建立檔案日期時間
******************************************************************************
按照時間查找
find /home/test -mtime +8 查詢8天以前的檔案
find /home/test -mtime -8 查詢8天以内的檔案
find /home/test -mtime +2 -a -mtime -10 查詢2天以前,10天以内檔案
find /home/test -mtime +2 -o -mtime -10 查詢2天以前或10天以内檔案
按照 權限查找 (9個權限位置)
find . -perm 644 正好比對
find . -perm +314 任意比對 含有一個字元就可以
find . -perm -424 完全比對 子集(比對任意重合位置)
記憶體溢出查詢
find / -type f | xargs file
橫向排列查出字段
cut -d: -f 1 /etc/passwd | xargs
查找出字段建立成檔案夾
cut -d: -f 1 /etc/passwd | xargs mkdir
服務管理
dhcp
安裝包:dhcp-3.0.5-31.el5.i386.rpm
啟動服務:service dhcpd restart 或者/etc/init.d/dhcdp restart
模闆檔案:/usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample
配置檔案:/etc/dhcpd.conf
覆寫原來檔案
cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
修改虛拟機 ip位址 host-only 模式 開啟dhcp服務 否則會有啟動dhcp服務失敗的情況
ifconfig vmnet1 172.16.17.100
修改參數
ddns-update-style interim;
ignore client-updates;
subnet 172.16.17.0 netmask 255.255.255.0 { # 網段
# --- default gateway
option routers 172.16.17.1; # 網關
option subnet-mask 255.255.255.0; # 掩碼
option nis-domain "domain.org";
option domain-name "domain.org";
option domain-name-servers 172.16.17.1,8.8.8.8; # dns位址
option time-offset -18000; # eastern standard time
# option ntp-servers 192.168.1.1;
# option netbios-name-servers 192.168.1.1;
# --- selects point-to-point node (default is hybrid). don't change this unless
# -- you understand netbios very well
# option netbios-node-type 2;
range dynamic-bootp 172.16.17.100 172.16.17.200; # 位址池
default-lease-time 21600;
max-lease-time 43200;
# we want the nameserver to appear at a fixed address
host ns {
next-server marvin.redhat.com;
hardware ethernet 12:34:56:78:ab:cd; # 指定mac位址
fixed-address 207.175.42.254; # 指定擷取ip位址
}
}
啟動服務
service dhcpd restart
netstat -anplt -a all n 去掉host解析 p pid l長格式 t tcp u udp
租約檔案
動态檢視配置設定位址 (服務端)
tail -f /var/lib/dhcpd/dhcp.leases
用戶端擷取檔案 (用戶端)
tail -f /var/lib/dhclient/dhclient-eth0.leases
殺死dhcp用戶端程序 pkill dhclient
工作原理(服務端:tail -f /var/log/messages)
client server
-------dhcpdiscover------->
<------dhcpoffer-----------
-------dhcprequest-------->
<------dhcpack-------------
dhcp多網段配置設定
dhcp伺服器配置
vim /etc/dhcpd.conf
subnet 10.10.10.0 netmask 255.255.255.0 {
option routers 10.10.10.10;
option subnet-mask 255.255.255.0;
option domain-name-servers 202.106.0.20;
range dynamic-bootp 10.10.10.1 10.10.10.253;
subnet 100.100.100.0 netmask 255.255.255.0 {
option routers 100.100.100.254;
range dynamic-bootp 100.100.100.1 100.100.100.253;
route add default gw 10.10.10.254 網關設定
dhcprelay伺服器 (中繼伺服器)
安裝軟體:dhcp-3.0.5-31.el5.i386.rpm
ifconfig eth0 10.10.10.254
ifconfig eth1 100.100.100.254
開啟轉發功能
echo 1 >/proc/sys/net/ipv4/ip_forward
vim /etc/sysconfig/dhcrelay
interfaces="eth0 eth1" 網卡接口
dhcpservers="10.10.10.10" dhcp伺服器的ip
===================================
ssh服務(遠端連接配接telnet 23)
啟動服務:service sshd restart | start | stop |status
配置檔案 /etc/
端口:22
nmap 192.168.1.49 掃描對方端口
遠端拷貝 authorized_keys
scp install.log 192.168.1.254:/tmp 遠端登入後操作
scp 192.168.1.49:/root/install.log /tmp/ 本地操作ssh遠端
端口改變後登入與遠端拷貝
ssh 192.168.1.254 -p 54321
scp -p 54321 anaconda-ks.cfg 192.168.1.254:/tmp/
修改端口
vim /etc/ssh/sshd_config
port 54321
wall 廣播
write root /dev/pts/13 給某個登入使用者發送
netstat -anplt
kill -9 pid号碼 踢掉單一使用者
whoami 目前使用者身份
who i am 登入使用者身份
last 登入記錄
lastlog 最後登入使用者日志
給虛拟機分一個在200.200.200.0/24網端的ip
指定200.200.200.200給虛拟機
ssh密鑰登入
ssh-keygen
在執行該指令使用者的家目錄下産生.ssh目錄儲存密鑰資訊
id_rsa id_rsa.pub
私鑰 公鑰
scp id_rsa.pub 192.168.1.240:/root/.ssh/authorized_keys
兩台伺服器互相登入不需要密碼。
伺服器1.ssh-keygen
scp id_rsa.pub 192.168.1.240:/root/.ssh/authorized_keys
伺服器2.ssh-keygen
cat id_rsa.pub >> authorized_keys
scp authorized_keys 192.168.1.254:/root/.ssh/
伺服器拒絕密碼驗證
vim /etc/ssh/sshd_config 修改60行
passwordauthentication no
重新開機服務
service sshd restart
============================================================================
syslogd+日志輪轉
日志存放位置/var/log
日志的配置檔案/etc/syslog.conf
啟動服務:service syslog restart
aaaaa.bbbbb ccccc
aaaaa産生日志的對象
authpriv
cron
news
uucp
syslog
bbbbb日志級别(8)
debug
info
notice
warning
err
crit
alter
emerg(panic)
mail.info 從info以上資訊顯示
mail.=err 隻要err資訊
mail.=!err 除了err 其他記錄都顯示 !取反的意思
定義到 /etc/syslog.conf 内顯示錯誤資訊
ccccc 儲存日志的位置
所有使用者資訊
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure 認證資訊全部儲存
*.emerg * 所有緊急資訊都存放 可存放位置
**********************************************************************
ccccc 儲存日志的位置 gpm 滑鼠程序
1.儲存檔案 要有可讀寫權限
*.info;mail.none;authpriv.none;cron.none * /tmp/log.log
2.發送終端 tty 查詢位置
*.info;mail.none;authpriv.none;cron.none /dev/pts/0
3.發送給使用者
*.info;mail.none;authpriv.none;cron.none robin
自定義日志
例子:
vim /etc/ssh/sshd_config 自定義日志位置
syslogfacility local6 定義位置
vim /etc/syslog.conf 添加自定義日志檔案位置
local6.* /tmp/ssh.log
重新開機服務生效
service syslog restart
日志将存放在/tmp/ssh.log
=========================================================================
遠端日志
服務端 vi /etc/sysconfig/syslog
# options to syslogd
# -m 0 disables 'mark' messages.
# -r enables logging from remote machines
# -x disables dns lookups on messages recieved with -r
# see syslogd(8) for more details
syslogd_options="-m 0 -r -x"
用戶端 vi /etc/syslog.conf
*.info;mail.none;authpriv.none;cron.none @192.168.1.254
service syslog restart
過濾日志資訊 grep 192.168.1.188 var/log/message
iptables -l 檢視防火牆
getenforce 檢視selinx狀況
/etc/selinux/config 關閉disable
setenforce 0
chkconfig --level 2345 服務名稱 off/on
ntsysv 圖形化管理服務
====================================================================
下午課程
日志切割
主配置檔案:/etc/logrotate.conf
子配置檔案:/etc/logrotate.d/
touch /etc/logrotate.d/test
/var/log/test.log {
missingok
daily
notifempty
rotate 7
create 0700 root root
touch /var/log/test.log
強制切割日志
logrote -f /etc/logrotate.d/test
while :
cat /root/install.log >> /var/log/test.log
sleep 2
1./var/log/test.log 對該檔案進行日志輪轉
每天一次 空檔案不切割 每天切割一次 保留7分 檔案權限700
/etc/logrotate.d/test
daily 天 時間 主要
rotate 7 7份
2./var/log/test.log 每分鐘切割一次 大小如果大于10k ?
missingok 丢失不提示
notifempty 空檔案
size 10k 檔案大小
create 0700 root root 建立檔案權限
crontab -e
* * * * * logrotate /etc/logrotate.d/test
===========================================================
檔案伺服器搭建nfs samba vsftpd
nfs伺服器
配置檔案 /etc/exports
啟動服務:service portmap restart(rpcbind)
service nfs restart
端口:2049
檢視端口 /etc/services
配置
vim /etc/exports
/nfs *(rw,sync,no_root_squash)讀寫,同步 沒有root切換
/nfs 192.168.1.0/24(rw) 10.10.10.0/24(ro) 網段劃分權限
/nfs 192.168.1.240/32(rw) 單機使用者
service portmap restart
service nfs restart
exportfs -a 直接重新整理 生效配置
chmod o=rwx /nfs
用戶端
showmount -e 192.168.1.254
mount 192.168.1.254:/nfs /mnt
1.raid+lvs+nfs nas伺服器
伺服器端設定:
partprobe /dev/sdb
partprobe /dev/sdd
partprobe /dev/sde
mkfs.ext3 /dev/sdb1
mkfs.ext3 /dev/sdd1
mkfs.ext3 /dev/sde1
mdadm -c /dev/md5 -l 5 -n 3 /dev/sdb1 /dev/sdd1 /dev/sde1
mkfs.ext3 /dev/md5
echo device /dev/sdb1 /dev/sdd1 /dev/sde1 > /etc/mdadm.conf
mdadm -ds >> /etc/mdadm.conf
建立lvm
pvcreate /dev/md5
vgcreate vg0 /dev/md5
lvcreate -l 10g -n /dev/vg0/lv0 vg0
mount /dev/vg0/lv0 /lv0
編輯 nfs 配置檔案
添加
/lv0 *(rw,sync,no_root_squash)
動态重新整理配置
exportfs -a
檢視連接配接使用者
showmount -a
檢視共享目錄
showmount -e
用戶端設定
2.mount lv0時 自動挂載3方式(autofs 随意觸發挂載)
方法1
編輯 vim /etc/rc.d/rc.local
mount 10.8.8.8:/lv0 /nfs1
實作開始自動挂載到nfs1目錄下 nfs1目錄存在情況下
方法2
編輯 vim /etc/fstab
10.8.8.8:/lv0 /nfs8 nfs rw 0 0
實作開始自動挂載到/nfs8目錄下 nfs8目錄存在情況下
方法3
編輯自動挂載配置檔案
添加挂載點
/nfs88 /etc/auto.nfs88 --timeout=20
建立挂載配置檔案
vim /etc/auto.nfs88
任意挂載
* -fstype=nfs,rw 10.8.8.8:/lv0
重新開機自動挂載服務
service autofs restart
觸發挂載
cd /nfs88/nfs8
檢視效果
samba
安裝包:
samba-3.0.33-3.37.el5.i386.rpm
samba-client-3.0.33-3.37.el5.i386.rpm
samba-common-3.0.33-3.37.el5.i386.rpm
啟動服務:
service smb restart
配置檔案:
/etc/samba/smb.conf
匿名配置
security = share
[smb]
comment = test server
path = /smb 共享目錄
public = yes 共享
writable = yes 可寫
browseable = no (no 為不可見共享)
chmod 777 /smb
測試
linux
smbclient -l //192.168.1.254
smbclient //192.168.1.254/smb
挂載smb
mount //192.168.1.254/smb /opt
使用者驗證
security = user
[nfs]
comment = nfs
path = /nfs
writable = yes
valid users = tom @tom 所有組使用者添加進samba資料庫
write list = tom
read list = @tom
認證可寫使用者
comment = nfs
path = /nfs
valid users = tom @kkk所有組使用者添加進samba資料庫
write list = kkk
認證可讀使用者
valid users = tom @kkk 所有組使用者添加進samba資料庫
read list = @kkk
#windows建立檔案和目錄的權限掩碼
directory mask = 0555
create mask = 0444
#通路控制
hosts allow = 192.168.1.240
hosts deny = 192.168.1.240 exect 192.168.1.5 先拒絕 後允許
useradd tom
smbpasswd -a tom
pdbedit -l 查詢samba使用者
smbclient -u tom%123 //192.168.1.254/nfs
mount -o cifs username=tom,password=123 //192.168.1.254/nfs /opt
===================================================================
在/tmp目錄下建立兩個目錄/tmp/u1 /tmp/u2
使用者jack 組upup(abc1 abc2)
jack 可以rw /tmp/u1目錄 upup組 隻讀
upup 可以rw /tmp/u2目錄 jack 隻讀
useradd jack
groupadd upup
useradd -g upup abc1
useradd -g upup abc2
smbpasswd -a jack
smbpasswd -a abc1
smbpasswd -a abc2
pdbedit -a -u jack
pdbedit -a -u abc1
pdbedit -a -u abc2
pdbedit -l
vim /etc/samba/smb.conf
[u1]
comment = u1
path = /tmp/u1
valid = jack @upup
write list = jack
[u2]
comment = u2
path = /tmp/u2
valid = jack @upup
read list = jack
vsftpd 服務
vsftpd-2.0.5-24.el5.i386.rpm
lftp-3.7.11-7.el5.i386.rpm
端口: 20 資料 21 控制
配置檔案位置:/etc/vsftpd/vsftpd.conf
啟動服務:service vsftpd restart
服務主目錄:/var/ftp 隻能為 755
配置匿名服務(ftp)
預設vsftpd伺服器隻能下載下傳
允許上傳
anon_upload_enable=yes 27行