NFS介绍:

  NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

实战案例

NFS+DRBD+HEARTBEAT

1.环境描述

OS:
NFS-MASTER:
centos6.5
IP:
eth0:172.16.50.199 #管理ip
eth1:10.0.0.1 #内网直连ip
VIP:172.16.50.249
软件:
NFS
DRBD
hearteat
NFS-BACKUP:
centos6.5
IP:
eth0:172.16.50.193
eth1:10.0.0.2
VIP:172.16.50.249
软件:
NFS
DRBD
hearteat 描述:
本案例假设有2台NFS存储系统服务器NFS-master、NFS-backup,其实际IP分别为172.16.50.199、172.16.50.193
NFS-master的NFS存储系统文件目录为/data,对前端提供的访问VIP为172.16.50.249
配置目标:一旦NFS存储系统服务器NFS-master宕机,该服务器上的NFS存储系统服务和虚拟IP会自动切换到热备服务器NFS-backup上继续提供服务,从而达到NFS存储系统高可用宕机后无业务影响的目的
这里有一个特别的问题,就是以前的多个从NFS存储系统如何能自动和新的主NFS存储系统同步,经过实践,通过drbd的方式同步的数据NFS存储系统,以及做从NFS存储系统时使用和主NFS存储系统对外提供服务的VIP为同步VIP,当主NFS存储系统宕机后,VIP漂移到热备主NFS存储系统,默认情况在几秒内,新的主NFS存储系统就可以启动同步程序同步到所有的从NFS存储系统中

  

  

2准备工作

两个都加一块硬盘,master 2G,backup 4G,用于存放数据

MASTER:
[root@localhost /]# /etc/init.d/iptables stop
[root@localhost /]# setenforce 0 #永久关闭,修改selinux文件
[root@localhost /]# hostname NFS-master #永久修改,修改network文件
[root@NFS-master /]# bash
[root@NFS-master /]# route add -host 10.0.0.2 dev eth1 #路由,模拟心跳线直连
[root@NFS-master /]# echo "10.0.0.1 NFS-master" >> /etc/hosts
[root@NFS-master /]# echo "10.0.0.2 NFS-backup" >> /etc/hosts
[root@NFS-master /]# echo '/sbin/route add -host 10.0.0.2 dev eth1' >> /etc/rc.local BACKUP:
[root@localhost /]# /etc/init.d/iptables stop
[root@localhost /]# setenforce 0
[root@localhost /]# hostname NFS-backup
[root@NFS-backup /]# bash
[root@NFS-backup /]# route add -host 10.0.0.1 dev eth1
[root@NFS-backup /]# echo "10.0.0.1 NFS-master" >> /etc/hosts
[root@NFS-backup /]# echo "10.0.0.2 NFS-backup" >> /etc/hosts
[root@NFS-backup /]# echo '/sbin/route add -host 10.0.0.1 dev eth1' >> /etc/rc.local

  

安装heartbeat

#快速安装heartbeat
#这里使用yum安装 MASTER:
1.下载并安装epel包
[root@NFS-master /]# wget -q http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@NFS-master /]# [ -f epel-release-6-8.noarch.rpm ] && rpm -ivh epel-release-6-8.noarch.rpm || echo "失败"
[root@NFS-master /]# rpm -qa | grep epel
2.安装heartbeat
[root@NFS-master /]# yum -y install heartbeat
3.配置heartbeat
[root@NFS-master /]# cd /etc/ha.d/
[root@NFS-master ha.d]# cp /usr/share/doc/heartbeat-3.0.4/ha.cf .
[root@NFS-master ha.d]# cp /usr/share/doc/heartbeat-3.0.4/authkeys .
[root@NFS-master ha.d]# cp /usr/share/doc/heartbeat-3.0.4/haresources .
[root@NFS-master ha.d]# cat ha.cf
logfacility local0
debugfile /var/log/ha-debug
logfile /var/log/ha.log
logfacility local1 keepalive 2
deadtime 30
warntime 10
initdead 60 #bcast eth1
mcast eth1 225.0.0.250 694 1 0 auto_failback on
node NFS-master
node NFS-backup
crm no
#the end by Daniel [root@NFS-master ha.d]# cat authkeys
auth 1
1 sha1 Hello [root@NFS-master ha.d]# cat haresources
NFS-master IPaddr::172.16.50.249/24/eth0
NFS-backup IPaddr::172.16.50.250/24/eth0 [root@NFS-backup ha.d]# chmod 600 authkeys BACKUP:
1.下载并安装epel包
[root@NFS-backup /]# wget -q http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@NFS-backup /]# [ -f epel-release-6-8.noarch.rpm ] && rpm -ivh epel-release-6-8.noarch.rpm || echo "失败"
[root@NFS-backup /]# rpm -qa | grep epel
2.安装heartbeat
[root@NFS-backup /]# yum -y install heartbeat
3.配置heartbeat
[root@NFS-backup /]# cd /etc/ha.d/
[root@NFS-backup ha.d]# cp /usr/share/doc/heartbeat-3.0.4/ha.cf .
[root@NFS-backup ha.d]# cp /usr/share/doc/heartbeat-3.0.4/authkeys .
[root@NFS-backup ha.d]# cp /usr/share/doc/heartbeat-3.0.4/haresources .
[root@NFS-backup ha.d]# cat ha.cf
logfacility local0
debugfile /var/log/ha-debug
logfile /var/log/ha.log
logfacility local1 keepalive 2
deadtime 30
warntime 10
initdead 60 #bcast eth1
mcast eth1 225.0.0.250 694 1 0 auto_failback on
node NFS-master
node NFS-backup
crm no
#the end by Daniel [root@NFS-backup ha.d]# cat authkeys
auth 1
1 sha1 Hello [root@NFS-backup ha.d]# cat haresources
NFS-master IPaddr::172.16.50.249/24/eth0
NFS-backup IPaddr::172.16.50.250/24/eth0 [root@NFS-master ha.d]# chmod 600 authkeys #启动heartbeat
/etc/init.d/heartbeat start

  

安装drbd

1.硬盘分区
[root@NFS-master /]# parted /dev/sdb mklabel gpt #修改成gpt分区格式
[root@NFS-master /]# parted /dev/sdb mkpart primary 0 1024 #分一个主分区大小1024
[root@NFS-master /]# parted /dev/sdb mkpart primary 1025 2146
[root@NFS-master /]# parted /dev/sdb p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 2147MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt Number Start End Size File system Name 标志
1 17.4kB 1024MB 1024MB primary
2 1024MB 2147MB 1123MB primary #backup,1分区0 2048,2分区2049 4292 [root@NFS-backup /]# parted /dev/sdb p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 4295MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt Number Start End Size File system Name 标志
1 17.4kB 2048MB 2048MB primary
2 2049MB 4292MB 2243MB primary 2.安装drbd
#yum安装
[root@NFS-master /]# mkdir /root/downloads
[root@NFS-master /]# cd /root/downloads/
[root@NFS-master downloads]# wget -q http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
[root@NFS-master downloads]# rpm -ivh elrepo-release-6-8.el6.elrepo.noarch.rpm
[root@NFS-master downloads]# yum -y install drbd kmod-drbd84
[root@NFS-master downloads]# modprobe drbd
#如果这步报错:FATAL: Module drbd not found.则yum -y install kernel kernel-devel kernel-headers,然后重启,再次modprobe drbd
[root@NFS-master ~]# echo '/sbin/modprobe drbd' >>/etc/rc.local
3.配置drbd配置文件
[root@NFS-master ~]# cat /etc/drbd.conf
global {
usage-count no;
} common {
syncer {
rate 100M;
verify-alg crc32c;
}
} #primary for drbd1
resource data {
protocol C; disk {
on-io-error detach;
}
on NFS-master {
device /dev/drbd0;
disk /dev/sdb1;
address 10.0.0.1:7788;
meta-disk /dev/sdb2[0];
}
on NFS-backup {
device /dev/drbd0;
disk /dev/sdb1;
address 10.0.0.2:7788;
meta-disk /dev/sdb2[0];
}
} [root@NFS-master ~]# drbdadm create-md data
[root@NFS-master ~]# drbdadm up data
[root@NFS-master ~]# cat /proc/drbd
version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by mockbuild@Build64R6, 2016-12-13 18:38:15
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
ns:0 nr:0 dw:0 dr:0 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:999984 3.设置主,同步数据到对端
[root@NFS-master ~]# drbdadm -- --overwrite-data-of-peer primary data
[root@NFS-master ~]# cat /proc/drbd
version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by mockbuild@Build64R6, 2016-12-13 18:38:15
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
ns:999983 nr:0 dw:0 dr:1000662 al:8 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
[root@NFS-master ~]# mkfs.ext4 -b 4096 /dev/drbd0 #格式化分区
[root@NFS-master ~]# tune2fs -c -1 /dev/drbd0 4.挂载测试
[root@NFS-master ~]# mkdir /md1
[root@NFS-master ~]# cd /md1
[root@NFS-master md1]# for n in `seq 10`;do cp /bin/cat daniel$n;done #写入操作
#以上操作在master上操作(3、4)
#接下来在backup上操作
[root@NFS-backup ~]# drbdadm down data
[root@NFS-backup ~]# mkdir /md1
[root@NFS-backup ~]# mount /dev/sdb1 /md1/ #然后查看/md1下,确实已经同步了

  

配合heartbeat调试drbd服务

  需要执行相关切换命令确保heartbeat服务及drbd服务之间的配合是正确的才能继续向下进行。这类似项目阶段的里程碑,成功配置drbd服务,并且能配合heartbeat服务进行主备切换是第二步的关键

1.配置haresource
umount /md1
[root@NFS-master ha.d]# /etc/init.d/heartbeat stop #两边都要停掉
[root@NFS-master ~]# cat /etc/ha.d/haresources
NFS-master IPaddr::172.16.50.249/24/eth0 drbddisk::data Filesystem::/dev/drbd0::/data::ext4
NFS-backup IPaddr::172.16.50.250/24/eth0
#NFS-master:主机名
#IPaddr:VIP/掩码/网卡
#drbddisk:就是数据名data
#Filesystem:逻辑设备drbd0:,同步数据data,文件类型ext4
#两边都要配置 #启动
[root@NFS-master ~]# /etc/init.d/heartbeat start #先在master启动 #测试
关掉master,最好是使用暂停虚拟机的方式,我们模拟一下裂脑
查看backup [root@NFS-backup /]# cat /proc/drbd
version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by mockbuild@Build64R6, 2016-12-13 18:38:15
0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r-----
ns:4100 nr:57975 dw:57995 dr:6204 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:4 [root@NFS-backup /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 15G 4.4G 9.6G 32% /
tmpfs 426M 4.0K 426M 1% /dev/shm
/dev/sda1 93M 63M 26M 72% /boot
/dev/sda5 178G 60M 169G 1% /home
/dev/drbd0 946M 1.7M 895M 1% /data
#这里也自动挂载了,成为了主 [root@NFS-backup /]# ip addr|grep 172
inet 172.16.50.193/24 brd 172.16.50.255 scope global eth0
inet 172.16.50.250/24 brd 172.16.50.255 scope global secondary eth0
inet 172.16.50.249/24 brd 172.16.50.255 scope global secondary eth0 启动master
再次查看
就会发现两端的drbd都说对方是Unknown #解决
先关掉两边的heartbeat
从节点做如下操作
modprobe drbd
drbdadm secondary data
drbdadm up data
drbdadm disconnect data
drbdadm -- --discard-my-data connect data
[root@NFS-backup /]# cat /proc/drbd
version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by mockbuild@Build64R6, 2016-12-13 18:38:15
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
ns:0 nr:4 dw:58003 dr:6204 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
主节点做如下操作
[root@NFS-master /]# drbdadm connect data #两边再次启动heartbeat,再次查看
[root@NFS-master /]# cat /proc/drbd
version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by mockbuild@Build64R6, 2016-12-13 18:38:15
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
ns:8 nr:0 dw:28 dr:3866 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
[root@NFS-master /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 15G 486M 14G 4% /
tmpfs 426M 80K 426M 1% /dev/shm
/dev/sda6 90G 56M 85G 1% /home
/dev/sda3 79G 3.9G 71G 6% /usr
/dev/sda1 9.8G 349M 8.9G 4% /var
/dev/drbd0 946M 1.7M 895M 1% /data
[root@NFS-master /]# ip addr | grep 172
inet 172.16.50.199/24 brd 172.16.50.255 scope global eth0
inet 172.16.50.249/24 brd 172.16.50.255 scope global secondary eth0 #再次查看发现好了

  

安装NFS

#安装
root@NFS-master ~]# yum -y install nfs-utils rpcbind #两端操作,一起安装 #启动
[root@NFS-master ~]# /etc/init.d/rpcbind start
[root@NFS-master ~]# /etc/init.d/nfs start
[root@NFS-master ~]# chkconfig rpcbind on
[root@NFS-master ~]# chkconfig nfs on
#两端操作 #配置
[root@NFS-master ~]# cat /etc/exports
/data 10.0.0.*(rw,sync) #data是同步目录,rw读写,sync同步
[root@NFS-backup /]# /etc/init.d/nfs reload
[root@NFS-master ~]# showmount -e 10.0.0.1
Export list for 10.0.0.1:
/data 10.0.0.*
#两端操作,backup showmount -e 10.0.0.2,其他一样

  

配置客户端挂载

#客户端
IP:10.0.0.3
service rpcbind start #开启rpcbind
chkconfig rpcbind on
showmount -e 172.16.50.249
#如果单网卡的话,则route add -host 172.16.50.249 dev eth0
mkdir /data
mount -t nfs 172.16.50.249:/data /data
ls /data #发现有了
touch 1 #测试一下,如果不行就在master上给足权限777,生产环境就要只能给nfs用户 #测试高可用
#关闭master
#查看backup
[root@NFS-backup /]# ip addr| grep 172
inet 172.16.50.193/24 brd 172.16.50.255 scope global eth0
inet 172.16.50.250/24 brd 172.16.50.255 scope global secondary eth0
inet 172.16.50.249/24 brd 172.16.50.255 scope global secondary eth0
[root@NFS-backup /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 15G 4.4G 9.6G 32% /
tmpfs 426M 4.0K 426M 1% /dev/shm
/dev/sda1 93M 63M 26M 72% /boot
/dev/sda5 178G 60M 169G 1% /home
/dev/drbd0 946M 1.7M 895M 1% /data
[root@NFS-backup /]# cat /proc/drbd
version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: 9976da086367a2476503ef7f6b13d4567327a280 build by mockbuild@Build64R6, 2016-12-13 18:38:15
0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r-----
ns:8 nr:4228 dw:4272 dr:1532 al:2 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:32
#没有问题
#再次写入东西,然后查看
#master的heartbeat最好还是不要启动

  

使用exports

#使用exportfs
#master
[root@NFS-master ~]# cat /etc/exports
#/md1 10.0.0.*(rw,sync)
[root@NFS-master ~]# exportfs -o rw,sync,all_squash,anonuid=65534,anongid=65534,mp,fsid=2 10.0.0.0/24:/md1
[root@NFS-master ~]# showmount -e 10.0.0.1
Export list for 10.0.0.1:
/md1 10.0.0.*,10.0.0.0/24 #客户端
umount /md1
mount -t nfs 172.16.50.249:/md1 /md1

  

如果像前面一样,每次down机后都要自己重新挂载一遍nfs实在是麻烦,我们可以写个脚本

[root@NFS-backup ~]# vi /etc/ha.d/resource.d/rsmd1 

FSID="1"
EXPORT_DIR="/md1"
EXPORT_OPTIONS="-o rw,sync,all_squash,anonuid=65534,anongid=65534,mp,fsid=$FSID"
EXPORT_CLIENTS="10.0.0.0/24" exportfs_usage()
{
cat <<END
USAGE: $0 (start|stop)
END
} exportfs_start()
{
fn="`/bin/mktemp`"
/etc/init.d/nfs restart
sleep 2
exportfs ${EXPORT_OPTIONS} ${EXPORT_CLIENTS}:${EXPORT_DIR} > $fn 2>&1
rc=$?
# error exportfs
if [ $rc -ne 0 ]; then
echo "export resource '${EXPORT_DIR}' error."
exit $rc
fi rm -f $fn
echo "export resource '${EXPORT_DIR}' ok."
exit 0
} exportfs_stop()
{
fn="`/bin/mktemp`"
/etc/init.d/nfs restart
exportfs -u ${EXPORT_CLIENTS}:${EXPORT_DIR} > $fn 2>&1
rc=$?
if [ $? -eq 0 ]; then
echo "unexport resource ${EXPORT_DIR} ok."
exit 0
fi
rm -f $fn
echo "unexport resource ${EXPORT_DIR} error."
exit $rc
}
if [ $# -ne 1 ]; then
exportfs_usage
exit 1
fi
case $1 in
start)
exportfs_start
;;
stop)
exportfs_stop
;;
*)
exportfs_usage
exit 1
;;
esac
#这个脚本用于挂载nfs

  

我们怎么使用这个脚本呢?

[root@NFS-backup ~]# cat /etc/ha.d/haresources
NFS-master IPaddr::172.16.50.249/8/eth1 drbddisk::data Filesystem::/dev/drbd0::/md1::ext4 rsmd1
NFS-backup IPaddr::172.16.50.250/8/eth1
#这样就等于我们heartbeatdown掉后,备用接管的同时执行这个脚本,并且挂在上drbd0到md1

NFS-heartbeat-drbd模拟NFS高可用的更多相关文章

  1. CentOS7数据库架构之NFS+heartbeat+DRBD(亲测,详解)

    目录 参考文档 理论概述 DRBD 架构 NFS 架构部署 部署DRBD 部署heartbeat 部署NFS及配合heartbeat nfs切记要挂载到别的机器上不要为了省事,省机器 参考文档 htt ...

  2. Heartbeat实现web服务器高可用

    一.Heartbeat概述: Heartbeat的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报 ...

  3. Keepalived+NFS+SHELL脚本实现NFS-HA高可用

    本来想做DRBD+HEARTBEAT,但是领导说再加硬盘浪费资源,没有必要,而且在已有硬盘上做风险较大,所以就只能用rsync来实现数据同步了,实验中发现很多的坑,都用脚本和计划任务给填上了,打算把这 ...

  4. Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群

    大纲一.前言二.环境准备三.Corosync 安装与配置四.Pacemaker 安装与配置五.DRBD 安装与配置六.MySQL 安装与配置七.crmsh 资源管理 推荐阅读: Linux 高可用(H ...

  5. corosync+pacemaker and drbd实现mysql高可用集群

    DRBD:Distributed Replicated Block Device 分布式复制块设备,原理图如下 DRBD 有主双架构和双主架构的,当处于主从架构时,这个设备一定只有一个节点是可以读写的 ...

  6. Heartbeat实现集群高可用热备

    公司最近需要针对服务器实现热可用热备,这几天也一直在琢磨这个方面的东西,今天做了一些Heartbeat方面的工作,在此记录下来,给需要的人以参考. Heartbeat 项目是 Linux-HA 工程的 ...

  7. 002.Heartbeat部署及httpd高可用

    一 前期准备 1.1 依赖准备 编译安装需要依赖的包,如gcc等: yum -y install gcc gcc-c++ make glibc kernel-devel kernel-headers ...

  8. lvs+heartbeat搭建负载均衡高可用集群

    [172.25.48.1]vm1.example.com [172.25.48.4]vm4.example.com 集群依赖软件:

  9. hb_gui配置heartbeat做MariaDB的高可用

    系统平台:CentOS release 6.5 (Final) Kernel:2.6.32-431.el6.x86_64 一.启动hb_gui hb_gui & 添加资源组 添加MySQL_I ...

  10. 1 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之DRBD的搭建

    preface 近来公司利润上升,购买了10几台服务器,趁此机会,把mysql的主从同步的架构进一步扩展,为了适应日益增长的流量.针对mysql架构的扩展,先是咨询前辈,后和同事探讨,准备采用Mysq ...

随机推荐

  1. 【DB2】普通用户最小查询权限分配

    1. 通过实例用户或者有dbadm权限的用户连接数据库 db2 connect to <db-name> 2. 分配普通用户连接权限db2 "grant connect on d ...

  2. Oracle Net Configuration(监听程序和网络服务配置)

    1.在Oracle服务端和客户端都安装完之后,就需要配置监听程序和本地网络服务,以便外部程序和工具的访问,所以Oracle提供了两款自带的工具来配置它们分别是 Net Configuration.Ne ...

  3. SpagoBI系列----------[01]SpagoBI简介及安装步骤

    商务智能套件SpagoBI提供一个基于J2EE的框架用于管理BI对象如报表.OLAP分析.仪表盘.记分卡以及数据挖掘模型等的开源BI产品.它提供的BI管理器能 够控制.校验.验证与分发这些BI对象. ...

  4. 【lua】如何倒序查找字符

    现在有这样一个需求,有一个字符串,需要查找字符i最后出现的位置,不过相对于其他语言来说,Lua并没有提供这一操作,那么如何是好? 现在有这样几个方法: string.sub(str, i ,j) 功能 ...

  5. 1.4 js基础

    1.eval(字符串),将字符串变成可执行的语句.        太强大了,太危险了 .目前不要去使用.        注入攻击   2.作用域[起作用的范围]         全局变量:声明在函数外 ...

  6. python-入门教程(操作mysql数据库)

    pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x,而MySQLdb不支持3.x版本. 本文测试python版本:3.6. ...

  7. Python-常用模块及简单的案列

    1.模块   函数的优点之一,就是可以使用函数将代码块与主程序分离,通过给函数指定一个描述性的名称,并将函数存储在被称为模块的独立文件中,再将模块导入主程序中,通过import语句允许在当前运行的程序 ...

  8. linux 查看某几行内容与文件分割

    查看指定行数 sed -n 4,8p file #打印file中的4-8行 sed -n 4p file #打印file中的第4行 grep ^pw file # 查看file中以pw开头的行 在Li ...

  9. Xshell记录日志的方法

    如何快速在Xshell中保存日志 步骤一 执行属性命令.打开Xshell终端模拟器,单击上方菜单栏的文件菜单,在其下拉选项选择属性,如下图所示. 步骤二 勾选日志选项.执行以上命令后会打开会话属性对话 ...

  10. angularjs之UI Grid 的刷新 本地数据源及HTTP数据源

    关键代码: 如果数据源是本地数据$("#hidJsonData").val("[]");   var myJsonData = [];   if ($(&quo ...