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