UNIXUNIX 基础知识
目 录Table of Contents
1 工具结构... 5
1.1 组网结构... 5
1.2 工具原理和处理流程... 6
1.2.1 原理... 6
1.2.2 用例执行流程... 6
2 环境安装... 7
2.1 版本取得... 7
2.2 平台侧的安装... 8
2.3 Windows侧的安装... 8
2.4 安装正确吗?如何确认... 8
2.4.1 平台侧标准数据的检查... 8
2.4.2 Windows侧的检查... 9
2.5 如何进行更新... 9
2.6 常见问题定位... 9
2.6.1 出现问题时,请先排除以下低级错误... 9
2.6.2 定位问题基本流程... 10
2.6.3 常见错误及原因... 10
3 工具使用... 12
3.1 用例编辑... 12
3.2 连接与预置数据... 12
3.3 用例执行:定制模板、用户呼叫、修改信令文件、发送信令文件... 13
3.4 预期结果... 13
3.5 变量替换:变量是如何变成具体值的... 14
3.6 用例规范:提高重用性... 16
#!/bin/sh DUMP_PIDS=`ps --no-heading -C java -f --width 1000 |awk '{print $2}'` if [ -z "$DUMP_PIDS" ]; then echo "The server $HOST_NAME is not started!" exit 1; fi DUMP_ROOT=~/dump if [ ! -d $DUMP_ROOT ]; then mkdir $DUMP_ROOT fi DUMP_DATE=`date +%Y%m%d%H%M%S` DUMP_DIR=$DUMP_ROOT/dump-$DUMP_DATE if [ ! -d $DUMP_DIR ]; then mkdir $DUMP_DIR fi for PID in $DUMP_PIDS ; do #Full thread dump 用来查线程占用,死锁等问题 $JAVA_HOME/bin/jstack $PID > $DUMP_DIR/jstack-$PID.dump 2>&1 echo -e ".\c" #打印出一个给定的Java进程、Java core文件或远程Debug服务器的Java配置信息,具体包括Java系统属性和JVM命令行参数。 $JAVA_HOME/bin/jinfo $PID > $DUMP_DIR/jinfo-$PID.dump 2>&1 echo -e ".\c" #jstat能够动态打印jvm(Java Virtual Machine Statistics Monitoring Tool)的相关统计信息。如young gc执行的次数、full gc执行的次数,各个内存分区的空间大小和可使用量等信息。 $JAVA_HOME/bin/jstat -gcutil $PID > $DUMP_DIR/jstat-gcutil-$PID.dump 2>&1 echo -e ".\c" $JAVA_HOME/bin/jstat -gccapacity $PID > $DUMP_DIR/jstat-gccapacity-$PID.dump 2>&1 echo -e ".\c" #未指定选项时,jmap打印共享对象的映射。对每个目标VM加载的共享对象,其起始地址、映射大小及共享对象文件的完整路径将被打印出来, $JAVA_HOME/bin/jmap $PID > $DUMP_DIR/jmap-$PID.dump 2>&1 echo -e ".\c" #-heap打印堆情况的概要信息,包括堆配置,各堆空间的容量、已使用和空闲情况 $JAVA_HOME/bin/jmap -heap $PID > $DUMP_DIR/jmap-heap-$PID.dump 2>&1 echo -e ".\c" #-dump将jvm的堆中内存信息输出到一个文件中,然后可以通过eclipse memory analyzer进行分析 #注意:这个jmap使用的时候jvm是处在假死状态的,只能在服务瘫痪的时候为了解决问题来使用,否则会造成服务中断。 $JAVA_HOME/bin/jmap -dump:format=b,file=$DUMP_DIR/jmap-dump-$PID.dump $PID 2>&1 echo -e ".\c" #显示被进程打开的文件信息 if [ -r /usr/sbin/lsof ]; then /usr/sbin/lsof -p $PID > $DUMP_DIR/lsof-$PID.dump echo -e ".\c" fi done #主要负责收集、汇报与存储系统运行信息的。 if [ -r /usr/bin/sar ]; then /usr/bin/sar > $DUMP_DIR/sar.dump echo -e ".\c" fi #主要负责收集、汇报与存储系统运行信息的。 if [ -r /usr/bin/uptime ]; then /usr/bin/uptime > $DUMP_DIR/uptime.dump echo -e ".\c" fi #内存查看 if [ -r /usr/bin/free ]; then /usr/bin/free -t > $DUMP_DIR/free.dump echo -e ".\c" fi #可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息。 if [ -r /usr/bin/vmstat ]; then /usr/bin/vmstat > $DUMP_DIR/vmstat.dump echo -e ".\c" fi #报告与CPU相关的一些统计信息 if [ -r /usr/bin/mpstat ]; then /usr/bin/mpstat > $DUMP_DIR/mpstat.dump echo -e ".\c" fi #报告与IO相关的一些统计信息 if [ -r /usr/bin/iostat ]; then /usr/bin/iostat > $DUMP_DIR/iostat.dump echo -e ".\c" fi #报告与网络相关的一些统计信息 if [ -r /bin/netstat ]; then /bin/netstat > $DUMP_DIR/netstat.dump echo -e ".\c" fi echo "OK!"
github地址:https://github.com/zhwj184/shell-work
这周我们继续来做NFS的安装与配置实验:
NFS(Network File System)被称为网络文件系统。NFS允许一个系统在网络上与他人共享目录或文件,位于网络上的用户就像使用本地文件一样使用远端系统上的文件。说到这里,大家肯定会想到Windows下的一个类似服务:即网上邻居。对了,它和NFS的原理是一样的,只是NFS只针对Linux客户端与服务器。NFS客户机与服务器之间进行通信是通过RPC(Remote Procedure Call Protocol,远程过程调用)协议。
NFS需要服务器端和客户端,我们需要对它们分别进行配置,由于在机房的时候我只有一台虚拟机,不过有另外机子有没人用的,我就用那台机子上的虚拟机当客户端了,至于怎么设置的到后面我会提到,但是我做的时候是在自己PC机上,有两台的。
试验环境:Linux RedHat6.2 # 注: Linux 6以上的版本,NFS是系统默认安装的,不用我们再手动下载安装包了;还有portmap已经改名了,改为rpcbind了。
# 注: 如下操作中如果出现rpc等不能启动的情况,检查一下现将防火墙关了。
RedHat6.2下默认安装的nfs包有:
[root@compute-0 mnt]# rpm -qa | grep nfs nfs-utils-lib-1.1.5-4.el6.x86_64 nfs-utils-1.2.3-26.el6.x86_64
实验步骤:
1. 服务器端操作
1> 启动NFS服务
[root@compute-0 mnt]# service nfs restart Shutting down NFS daemon: [FAILED] Shutting down NFS mountd: [FAILED] Shutting down NFS quotas: [FAILED] Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Stopping RPC idmapd: [ OK ] Starting RPC idmapd: [ OK ] Starting NFS daemon: [ OK ] [root@compute-0 mnt]#
2> 创建共享目录
我们一般会把/opt来做为共享目录,现在我们在/opt下创建一个我们自己的共享目录
[root@compute-0 /]# mkdir -p /opt/share [root@compute-0 /]# cd /opt/ [root@compute-0 opt]# pwd /opt [root@compute-0 opt]# ll total 4 drwxr-xr-x 2 root root 4096 Apr 19 01:40 share [root@compute-0 opt]#
3> 对/etc/exports进行配置,来共享我们的目录
[root@compute-0 opt]# vi /etc/exports [root@compute-0 opt]# [root@compute-0 opt]# [root@compute-0 opt]# cat /etc/exports /opt/share *(rw,sync,no_root_squash) [root@compute-0 opt]#
这里我们要说一下,我们可以针对局域网内的所有用户共享,也可以单独针局域网内的一台主机共享,如果我们要设置单独针对222.31.64.200这个用户共享,/etc/exports中就改写为: /opt/share 222.31.64.200(rw,sync,no_root_squash) ,括号里面的东西代表的是客户端对共享的目录拥有什么权限。在这里rw代表读写权限;sync代表不使用缓存,直接同步;no_root_squash代表对root用户不映射为nfsnobody用户,他对共享的目录还是root的权限。(#注:我认为NFS的安装与配置都很简单,实际应用中难的是对权限的控制,所以如何针对具体应用设置合适的权限,还需要我们慢慢总结经验!)
所有的NFS中的权限列表如下:
4> 重新启动NFS服务,并查看本机共享的文件目录
[root@compute-0 opt]# service nfs restart Shutting down NFS daemon: [ OK ] Shutting down NFS mountd: [ OK ] Shutting down NFS quotas: [ OK ] Shutting down NFS services: [ OK ] Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Stopping RPC idmapd: [ OK ] Starting RPC idmapd: [ OK ] Starting NFS daemon: [ OK ] [root@compute-0 opt]# showmount -e localhost Export list for localhost: /opt/share * [root@compute-0 opt]#
这里还有一种方式不需要重新启动NFS服务,当以后我们修改了/etc/exports文件之后可以重新停止在重新共享一下
[root@compute-0 opt]# exportfs -au # 停止 [root@compute-0 opt]# showmount -e localhost Export list for localhost: [root@compute-0 opt]# exportfs -rv # 重新共享 exporting *:/opt/share [root@compute-0 opt]# showmount -e localhost Export list for localhost: /opt/share * [root@compute-0 opt]#
2. 客户端操作
1> 启动NFS服务
service nfs restart
2> 查看可以挂载的远程主机的目录
[root@localhost ~]# showmount -e 222.31.64.100 Export list for 222.31.64.100: /opt/share * [root@localhost ~]#
3> 创建本地挂载目录
[root@localhost houqd]# mkdir -p /home/houqd/share [root@localhost houqd]# pwd /home/houqd [root@localhost houqd]# ll total 4 drwxr-xr-x. 2 root root 4096 Apr 19 09:05 share [root@localhost houqd]#
4> 将远程主机共享的目录挂载到本地
[root@localhost houqd]# showmount -e 222.31.64.100 Export list for 222.31.64.100: /opt/share * [root@localhost houqd]# mount -t nfs 222.31.64.100:/opt/share /home/houqd/share/ [root@localhost houqd]# mount /dev/sda1 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0") /dev/sda2 on /export type ext4 (rw) /dev/sda3 on /var type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) 222.31.64.100:/opt/share on /home/houqd/share type nfs (rw,vers=4,addr=222.31.64.100,clientaddr=222.31.64.101) # 已成功挂载 [root@localhost houqd]#
5> 测试
在远程主机的共享目录下创建一个文件,在本地我们就可以看到,从而实现了共享。
6> 设置为开机自动挂载远程共享目录
[root@localhost ~]# vi /etc/fstab [root@localhost ~]# [root@localhost ~]# tail -n 1 /etc/fstab 222.31.64.100:/opt/share /home/houqd/share nfs defaults 0 0 # 添上这一句 [root@localhost ~]#
That's all .......