LINUX系統-RHEL5.1-Server
1.安裝文件RHEL5.1-Server-20071017.0-i386-DVD.iso
2.目錄結構
/bin : 存放常用命令
/boot: 存放啟動程序
/dev: 存放設備文件
/etc: 存放啟動,關閉,配置程序與文件
/home:用戶工作根目錄
/lib: 存放共享鏈接庫
/root:超級用戶的工作目錄
/sbin:系統管理員的常用管理程序
/tmp: 存放臨時文件
/lost+found:系統出現異常時,用於保存部分資料
/misc : 一些實用工具
/mnt: 光驅、硬盤等的掛載點
/media: 光驅的自動掛載點
/proc: 操作系統的實時信息
/sys: 系統中的硬件設備信息
/srv: 服務啟動後需要提取的信息
/var:主要存放系統日誌
/usr:存放用戶程序
/tftpboot: tftp服務器的服務目錄
/selinux:redhat提供的selinux安全程序
3.超級用戶的提示符是“#”,其他用戶的提示符是“$”
4.添加用戶
? useradd
格式:useradd [選項] 用戶名
範例:
useradd smb
添加名字為smb的用戶
修改密碼
? passwd
格式:passwd [選項] [用戶名]
範例:
passwd smb
修改smb用戶的密碼
切換用戶
? su
格式:su [選項][用戶名]
範例:
su – root
切換到root用戶,並將root的環境變量同時帶入
關機
? shutdown
格式:shutdown [-t seconds] [-rkhncfF] time
[message]
範例:
shutdown now
立刻關機
拷貝
? cp
格式:cp [選項] 源文件或目錄目標文件或目錄
範例:
1. cp /home/test /tmp/
將/home目錄下的test文件copy到/tmp目錄下
2. cp –r /home/dir1 /tmp/
將/home目錄下的dir1目錄copy到/tmp目錄下
移動或更名
? mv
格式:mv [選項] 源文件或目錄目標文件或目錄
範例:
1. mv /home/test /home/test1
將/home目錄下的test文件更名為test1
2.mv /home/dir1 /tmp/
將/home目錄下dir1目錄移動(剪切)到/tmp目錄下
刪除
? rm
格式:rm [選項] 文件或目錄
範例:
1. rm /home/test
刪除/home目錄下的test文件
2.rm –r /home/dir
刪除/home目錄下的dir目錄
創建目錄
? mkdir
格式:mkdir [選項] 目錄名
範例:
1. mkdir /home/workdir
在/home目錄下創建workdir目錄
2. mkdir –p /home/dir1/dir2
創建/home/dir1/dir2目錄,如果dir1不存在,先創建dir1
查看目錄
? ls
格式:ls [選項] [目錄或文件]
範例:
1. ls /home
顯示/home目錄下的文件與目錄(不包含隱藏文件)
2. ls –a /home
顯示/home目錄下的所有文件與目錄(包含隱藏文件)
3. ls –l /home
顯示/home目錄下的文件與目錄的詳細信息
4. ls –c /home
顯示/home目錄下的文件與目錄,按修改時間排序
打包與壓縮
? tar
格式:tar [選項] 目錄或文件
範例:
1.tar cvf tmp.tar /home/tmp
將/home/tmp目錄下的所有文件和目錄打包成一個
tmp.tar文件
2.tar xvf tmp.tar
將打包文件tmp.tar在當前目錄下解開
3.tar cvzf tmp.tar.gz /home/tmp
將/home/tmp目錄下的所有文件和目錄打包並壓
縮成一個tmp.tar.gz文件
4.tar xvzf tmp.tar.gz
將打包壓縮文件tmp.tar.gz在當前目錄下解開
解壓縮
? unzip
格式:unzip [選項] 壓縮文件名.zip
範例:
1.unzip tmp.zip
解壓tmp.zip文件
5.
訪問權限
系統中的每個文件和目錄都有訪問許可權
限,用它來確定誰可以通過何種方式對文件
和目錄進行訪問文件。或目錄的訪問權限分
為只讀,只寫和可執行三種。有三種不同類
型的用戶可對文件或目錄進行訪問:文件所
有者,與所有者同組的用戶、其他用戶。所
有者一般是文件的創建者。
每一文件或目錄的訪問權限都有三組,每組用三位表示,分
別為文件所有者的讀、寫和執行權限;與所有者同組的用
戶的讀、寫和執行權限;系統中其他用戶的讀、寫和執行
權限。當用ls -l命令顯示文件或目錄的詳細信息時,最左邊
的一列為文件的訪問權限。例如:
$ ls -l sobsrc. tgz
-rw-r--r-- 1 root root 483997 Ju1 l5 17:3l sobsrc. Tgz
註意這裏共有10個位置。第一個字符指定了文件類型,如果第
一個字符是橫線,表示是一個非目錄的普通文件。如果是
d,表示是一個目錄。r代表只讀,w代表寫,x代表可執行,
橫線代表無該項權限。
6.
改變訪問權限
? chmod
格式:chmod [who] [+ | - | =] [mode] 文件名
參數:
who:
u 表示文件的所有者。
g 表示與文件所有者同組的用戶。
o 表示“其他用戶”。
a 表示“所有用戶”。它是系統默認值。
mode:
+ 添加某個權限
- 取消某個權限
= 賦予給定權限
例:chmod g+w hello.c
mode所表示的權限可使用下述字母
(數字)的任意組合:
r 可讀(4)
w 可寫(2)
x 可執行(1)
例:chmod 761 hello.c
查看磁盤使用情況
? df
格式:df [選項]
範例:
df –k
以KB為單位顯示磁盤使用情況
查看目錄大小
? du
格式:du [選項] 目錄
範例:
du –b ipc
以字節為單位顯示ipc這個目錄的大小
網絡配置
? ifconfig
格式:ifconfig [選項] [網絡接口]
範例:
1. ifconfig eth0 192.168.0.1
配置eth0這一網卡的ip地址為192.168.0.1
2. ifconfig eth0 down
暫停eth0這一網卡的工作
3. ifconfig eth0 up
恢復eth0這一網卡的工作
軟件安裝
? rpm
格式:rpm [選項] [安裝文件]
範例:
1. rpm -ivh tftp.rpm
安裝名字為tftp的文件
2. rpm –qa
列出所有已安裝rpm包
3. rpm –e name
卸載名字為name的rpm包
掛載
? mount
格式:mount [選項] 設備源目標目錄
範例:
1. mount /dev/cdrom /mnt
將光驅掛載到/mnt目錄下
? umount
格式:mount 目標目錄
範例:
1. umount /mnt (對應mount例)
取消光驅在/mnt下的掛載
查找字符串
? grep
格式:grep [選項] 字符串
範例:
1. grep “file” ./ -rn
在當前目錄及其子目錄中,查找包含file字符串的文件
2. netstat –a | grep tftp
查看所有端口中用於tftp的端口
查看進程
? ps
格式:ps [選項]
範例:
1.ps aux
查看系統中的所有進程。
殺死進程
? kill
格式:kill [選項] 進程號
範例:
1.kill –s SIGKILL 4096
殺死4096號進程
vi
? :set nu 顯示行號
? :set nonu 取消行號
Tftp服務器-安裝
使用RPM包安裝tftp-server
1、如果利用如下命令能夠看到服務已啟動, 則不用安裝
[[email protected]]# netstat -a | grep tftp
已安裝結果: udp 0 0 *:tftp *:*
2、如果沒有安裝,執行如下命令安裝。
[[email protected]]# rpm -ivh tftp-server-0.42-
3.1.i386.rpm(rhel5安裝光盤\Servers目錄)
3、建立tftp的主工作目錄
[[email protected] btools]# mkdir /tftpboot
Tftp服務器-配置
4、修改配置文件
[[email protected] btools]# vi /etc/xinetd.d/tftp
service tftp
{
…………………………
socket_type = dgram
…… …… ……
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
…… …… ……
}
Tftp服務器-啟動
#/etc/init.d/xinetd start
#netstat -a | grep tftp
udp 0 0 *:tftp *:*
NFS安裝
安裝NFS服務器
[[email protected]]# rpm -q nfs-utils
如果沒有安裝,從對應Linux操作系統版本的安
裝光盤上找到nfs-utils的安裝包。
例:
[[email protected]]# rpm -ivh nfs-utils-1.0.9-
24.el5.i386.rpm
NFS配置
[[email protected] ]# vi /etc/exports
加入允許被其它計算機訪問的目錄和訪問權限
例:
/home 192.168.1.*(rw,sync,no_root_squash)
1、/home : 允許其他計算機訪問的目錄
2、192.168.1.* : 被允許訪問該目錄的客戶端IP地址
3、Rw: 可讀可寫
4、Sync:同步寫磁盤(async:資料會先暫存於內存當中,而非直接寫
入硬盤)
5、no_root_squash:表示客戶端root用戶對該目錄具備寫權限
NFS啟動
1、啟動NFS服務器時用下面命令:
/etc/init.d/nfs start
2、重啟NFS服務器時用下面命令:
/etc/init.d/nfs restart
NFS使用
使用mount 命令來掛載NFS 服務器上的共享
目錄。
# mount -t nfs servername:/shared_dir /localdir
例:
# mount -t nfs 10.168.1.100:/home /mnt/nfs
Samba
修改/etc/samba/smb.conf,添加:
[root]
comment = Root Directories
browseable = yes
writeable = yes
path = /
valid users = smb(用戶名)
Samba(添加用戶)
Useradd smb //添加smb系統用戶
Smbpasswd -a smb //修改密碼
Wireshark
Rpm –ivh lm_sensors-2.10.0-3.1.i386.rpm
Rpm –ivh net-snmp-5.3.1-9.el5.i386.rpm
Rpm –ivh wireshark-0.99.6-1.el5.i386.rpm
Rpm –ivh wireshark-gnome-0.99.6-1.el5.i386.rpm
(以上4個RPM包都在RHEL5安裝盤的servers目錄下)
定義
什麽是Shell?
簡單地講,就是命令解析器,將
用戶輸入的指令轉換為相應的機
器能夠運行的程序。種類
Bourne shell (sh)
Korn shell (ksh)
Bourne Again shell (bash)
C shell (包括csh and tcsh)
TENEX/TOPS C shell (tcsh)
Shell腳本
Shell腳本是一個包含一系列命令序列的文
本文件。當運行這個腳本文件時,文件中
包含的命令序列將得到執行。(展示、運
行hello.sh)
語法
Shell腳本的第一行必須是如下格式:
v#!/bin/sh
符號#!用來指定該腳本文件的解析程序。在上面
例子中使用/bin/sh來解析該腳本。當編輯好腳本
後,如果要執行該腳本,還必須使其具有可執行
屬性。
chmod +x filename
註釋
在進行shell編程時,以#開頭的句子表示
註釋,直到這一行的結束。如果使用了註
釋,即使相當長的時間內沒有使用該腳
本,也能在很短的時間內明白該腳本的作
用及工作原理。
變量
在shell編程中,所有的變量都由字符串組成,
並且不需要預先對變量進行聲明,例:s1(演示)。
#!/bin/sh
#set variable a
a="hello world"
# print a
echo "A is:"
echo $a
變量
有時候變量名很容易與其他文字混淆。例:
S2(演示):
num=2
echo "this is the $numnd“
思考:輸出?Why?
變量
num=2
echo "this is the $numnd"
這並不會打印出"this is the 2nd",而僅僅打印"this is the “,因為shell會去搜索變量numnd的值,但是這個變量時沒有值的。可以使用花括號來告訴shell我們要打印的是num變量:num=2
echo "this is the ${num}nd"
這將打印: this is the 2nd
默認變量
$# :傳入腳本的命令行參數個數
$* :所有命令行參數值,在各個參數值之間
留有空格
$0 :命令本身(shell文件名)
$1 :第一個命令行參數
$2 :第二個命令行參數
S3(演示):
#!/bin/sh
echo "number of vars:"$#
echo "values of vars:"$*
echo "value of var1:"$1
echo "value of var2:"$2
echo "value of var3:"$3
echo "value of var4:"$4
運行./s2 1 2 3 4
輸出結果:?
局部變量
在變量首次被賦值時加上local 關鍵字可
以聲明一個局部變量,例:s4(演示):
#!/bin/bash
hello="var1"
echo $hello
function func1 {
local hello ="var2"
echo $hello
}
func1
echo $hello
輸出:?
變量(註意)
1. 變量賦值時,“=”左右兩邊都不能有空格
2. BASH 中的語句結尾不需要分號
If語句
if [ expression ]
then
#code block
fi
If語句
if [ expression ]
then
#code block
else
#code block
fi
If語句
if [ expression ]
then
#code block
else if [ expression ]
then
#code block
else
#code block
fi
fi
If語句
if [ expression ]; then
#code block
elif [ expression ]
then
#code block
else
#code block
fi
fi
比較
比較操作整數操作字符串操作
相同-eq =
不同-ne !=
大於-gt >
小於-lt <
大於或等於-ge
小於或等於-le
為空-z
不為空-n
例:
比較整數a和b是否相等:if [ $a = $b ] (也可用eq)
判斷整數a是否大於整數b:if [ $a -gt $b ]
比較字符串a和b是否相等:if [ $a = $b ]
判斷字符串a是否為空: if [ -z $a ]
判斷整數變量a是否大於b:if [ $a -gt $b ]
註意:
1. 在“[”和“]”符號的左右都留有空格
2. “=”左右都有空格
判斷
-e 文件已經存在
-f 文件是普通文件
-s 文件大小不為零
-d 文件是一個目錄
-r 文件對當前用戶可以讀取
-w 文件對當前用戶可以寫入
-x 文件對當前用戶可以執行
例:S5(演示):
#!/bin/sh
folder=/home
[ -r "$folder" ] && echo "Can read $folder"
[ -f "$folder" ] || echo "this is not file"
For循環
for 循環結構與C 語言中有所不同,在BASH 中for 循
環的基本結構是:
for var in [list]
do
#code block
done
其中$var 是循環控制變量,[list] 是var 需要遍歷的一
個集合,do/done 對包含了循環體,相當於C 語言中的
一對大括號。另外如果do 和for 被寫在同一行,必須在
do 前面加上“;”。如: for $var in [list]; do
例:S6(演示):
#!/bin/bash
for day in Sun Mon Tue Wed Thu Fri Sat
do
echo $day
done
如果列表被包含在一對雙引號中,則被認為是一個元素,如S8:
#!/bin/bash
for day in "Sun Mon Tue Wed Thu Fri Sat“
do
echo $day
done
For循環(註意)
上面的例子中,在for 所在那行,
變量day 是沒有加"$" 符號的,而
在循環體內,echo 所在行變量
$day 是必須加上"$" 符號的。
while循環
while 循環的基本結構是:
while [ condition ]
do
#code block
done
until循環
until 循環的基本結構是:
until [ condition ]
do
#code block
done
while 和until的區別在於while是為真時執
行,until是為假時執行
Case語句
BASH 中的case 結構與C 語言中的switch 語句
的功能比較類似,可以用於進行多項分支控制。
case "$var" in
condition1 )
;;
condition2 )
;;
* )
default statments;;
esac
例,S7(演示):
#!/bin/bash
echo "Hit a key, then hit return."
read Keypress
case "$Keypress" in
[A-Z] ) echo " Uppercase letter";;
[a-z] ) echo " Lowercase letter";;
[0-9] ) echo "Digit";;
* ) echo "Punctuation, whitespace, or other";;
esac
LINUX系統-RHEL5.1-Server