成都网站建设设计

将想法与焦点和您一起共享

xferlinux命令,XFER指令

linux怎么配置dns缓存服务器和主从服务器

BIND安装

淇滨网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站等网站项目制作,到程序开发,运营维护。创新互联成立于2013年到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。

软件下载地址:,目前最新版本是BIND 9.8.1-P1。

安装依赖:

yum -y install gcc openssl-devel

开始安装bind.

wget

tar xzf bind-9.8.1-P1.tar.gz

cd bind-9.8.1-P1

./configure --prefix=/usr/local/bind

make make install

执行完成后,bind已经安装到了/usr/local/bind目录。

配置主dns服务器

配置bind主要是两种文件,一是主配置文件named.conf,二是区域文件zone(包括正解析,反解析)。

在下面的配置中,我们的主dns服务器是ns1.qbtop.com 23.19.81.191,从dns服务器是ns2.qbtop.com 23.19.81.194(这两个dns都已经在godaddy注册好了)。

下面操作仅在主dns服务器23.19.81.191执行。

主配置文件named.conf

首先执行rndc-confgen -a生成/etc/rndc.key密钥文件。

/usr/local/bind/sbin/rndc-confgen -a

vi /usr/local/bind/etc/named.conf

写入如下内容:

include "/usr/local/bind/etc/rndc.key";

controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndckey"; }; };

logging {

channel default_syslog { syslog local2; severity notice; };

channel audit_log { file "/var/log/bind.log"; severity notice; print-time yes; };

category default { default_syslog; };

category general { default_syslog; };

category security { audit_log; default_syslog; };

category config { default_syslog; };

category resolver { audit_log; };

category xfer-in { audit_log; };

category xfer-out { audit_log; };

category notify { audit_log; };

category client { audit_log; };

category network { audit_log; };

category update { audit_log; };

category queries { audit_log; };

category lame-servers { audit_log; };

};

options {

directory "/usr/local/bind/etc";

pid-file "/usr/local/bind/var/run/bind.pid";

transfer-format many-answers;

interface-interval 0;

allow-query { any; };

};

zone "qbtop.com" {

type master;

file "qbtop.com.zone";

allow-transfer { 23.19.81.194; };

};

zone "81.19.23.in-addr.arpa" {

type master;

file "81.19.23.in-addr.arpa";

allow-transfer { 23.19.81.194; };

};

named.conf文件说明:

上面的named.conf文件包括三部分:key,controls,logging,options,zone。

logging:设置日志服务器和日志信息的发送地。

options:控制服务器的全局配置选项和为其它语句设置默认值

zone:定义一个域,比如正解析域和反解析域。

logging是定义日志的,不需要深究,主要是options和zone。

在options中:

directory "/usr/local/bind/etc":定义bind的工作目录为/usr/local/bind/etc,配置文件中所有使用的相对路径,指的都是在这里配置的目录下。

pid-file "/usr/local/bind/var/run/bind.pid":把bind程序运行的pid写入文件bind.pid。

transfer-format many-answers:使用更加有效的域传输格式many-answers。

allow-query { any; }:允许所有用户查询dns。

在zone中:

这里定义了两个zone,一个是正解析zone qbtop.com,一个是反解析zone 81.19.23.in-addr.arpa。

他们的参数基本相同:

type master:定义dns服务器为主dns。

file "qbtop.com.zone":定义此zone的文件名。

allow-transfer { 23.19.81.194; }:允许向从dns 23.19.81.194传输dns数据。

唯一不同的是zone名称的定义,正解析zone名称的定义是受权的域名,可以是顶级域名,也可以是二级域名,或多级。反解析zone名称定义规定前部分ip倒着写。如ip 192.168.1.2,名称定义为1.168.192.in-addr.arpa。

正解析qbtop.com.zone

vi /usr/local/bind/etc/qbtop.com.zone

写入如下内容:

$TTL 3600

@ IN SOA ns1.qbtop.com. hostmaster.qbtop.com. (

2012022301 ; Serial

3600 ; Refresh

900 ; Retry

3600000 ; Expire

3600 ) ; Minimum

@ IN NS ns1.qbtop.com.

@ IN NS ns2.qbtop.com.

ns1 IN A 23.19.81.191

ns2 IN A 23.19.81.194

aaa IN A 23.19.81.191

bbb IN A 23.19.81.191

文件说明:

$TTL 3600:指示为每个没有特殊TTL设置的RR给出了一个默认的TTL。

@ IN SOA ns1.qbtop.com. hostmaster.qbtop.com. (

2012022301 ; Serial

3600 ; Refresh

900 ; Retry

3600000 ; Expire

3600 ) ; Minimum

定义SOA记录,包括Zone的名字,一个技术联系人和各种不同的超时值。

@ IN NS ns1.qbtop.com.

@ IN NS ns2.qbtop.com.

设置两个ns记录ns1.qbtop.com和ns2.qbtop.com。

ns1 IN A 23.19.81.191

ns2 IN A 23.19.81.194

aaa IN A 23.19.81.191

bbb IN A 23.19.81.191

设置主机为ns1,ns2,aaa和bbb的A记录。

反解析文件81.19.23.in-addr.arpa

反解析zone可以不设置。

vi /usr/local/bind/etc/81.19.23.in-addr.arpa

写入如下内容:

$TTL 3600

@ IN SOA ns1.qbtop.com. hostmaster.qbtop.com. (

2012022301 ; Serial

3600 ; Refresh

900 ; Retry

3600000 ; Expire

3600 ) ; Minimum

@ IN NS ns1.qbtop.com.

@ IN NS ns2.qbtop.com.

191 IN PTR ns1.qbtop.com.

194 IN PTR ns2.qbtop.com.

说明:

上部分是定义SOA记录,下部分是设置IP反解析。

如设置IP 23.19.81.191反解析成ns1.qbtop.com,23.19.81.194反解析成ns2.qbtop.com。

配置从DNS服务器

下面我们来配置从DNS服务器。配置从DNS服务器只需要配置主配置文件named.conf,zone文件不需配置,因为这是从主DNS服务器获取的。

首先建立目录slaves用来存放从主dns获取的zone文件。

mkdir /usr/local/bind/etc/slaves

写入如下内容:

logging {

channel default_syslog { syslog local2; severity notice; };

channel audit_log { file "/var/log/bind.log"; severity notice; print-time yes; };

category default { default_syslog; };

category general { default_syslog; };

category security { audit_log; default_syslog; };

category config { default_syslog; };

category resolver { audit_log; };

category xfer-in { audit_log; };

category xfer-out { audit_log; };

category notify { audit_log; };

category client { audit_log; };

category network { audit_log; };

category update { audit_log; };

category queries { audit_log; };

category lame-servers { audit_log; };

};

options {

directory "/usr/local/bind/etc";

pid-file "/usr/local/bind/var/run/bind.pid";

transfer-format many-answers;

interface-interval 0;

allow-query { any; };

};

zone "qbtop.com" {

type slave;

file "slaves/qbtop.com.zone";

masters { 23.19.81.191; };

};

zone "81.19.23.in-addr.arpa" {

type slave;

file "slaves/81.19.23.in-addr.arpa";

masters { 23.19.81.191; };

};

文件说明:

从dns跟主dns主要的区别是zone的定义,type slave定义此dns服务器为从dns,masters { 23.19.81.191; }定义主dns的IP。

启动BIND

1、在启动BIND之前,我们需要执行/usr/local/bind/sbin/named-checkconf检查named.conf配置文

件,和执行/usr/local/bind/sbin/named-checkzone zone名称

zone文件名,如/usr/local/bind/sbin/named-checkzone qbtop.com

/usr/local/bind/etc/qbtop.com.zone。

然后调试模式启动bind,/usr/local/bind/sbin/named -g,g参数的意思是前台执行bind,这会输出启动的信息,发现没有严重的错误后,再把g参数删除重新以/usr/local/bind/sbin/named方式后台启动bind。

2、设置开机启动,在/etc/rc.d/rc.local中加入/usr/local/bind/sbin/named。

手动添加记录

1、直接添加删除或修改zone文件里的记录

2、执行rndc reload zone名称重载,如rndc reload qbtop.com

algo->smbus_xfer()函数定义在哪?'>linux开发环境中i2c中使用的adapter->algo->smbus_xfer()函数定义在哪?

?。这个一般在i2c bus的驱动部分找,建议用source insight来look-up哦。

struct i2c_algorithm {

/* If an adapter algorithm can't do I2C-level access, set master_xfer

to NULL. If an adapter algorithm can do SMBus access, set

smbus_xfer. If set to NULL, the SMBus protocol is simulated

using common I2C messages */

/* master_xfer should return the number of messages successfully

processed, or a negative value on error */

int (*master_xfer)(struct i2c_adapter *adap, struct i2c_msg *msgs,

int num);

int (*smbus_xfer) (struct i2c_adapter *adap, u16 addr,

unsigned short flags, char read_write,

u8 command, int size, union i2c_smbus_data *data);

/* To determine what the adapter supports */

u32 (*functionality) (struct i2c_adapter *);

};

一般是根据处理器的i2c来实现这个适配器的alg,所以函数名并不一定是这个。自己看看i2c 总线的驱动实现代码

如何在Linux中让I2C驱动支持Sub Address的两种方法

【目的】

AS3527有一个模拟部分,称作AFE,其与数字部分通过i2c通信,此处AFE部分有很多寄存器供外界操作访问,如果想要访问这些寄存器,就要用到Sub Address,所以,要实现让i2c 驱动支持Sub Address的模式。

i2C本身的架构中,没有支持sub address,所以,我们只能想办法,让其I2C支持(方法1)或者用smbus的架构(方法2).

【方法】

方法1:

在i2c的message中传递一个2个字节的buffer,分别存放Sub Address和data

比如,对于读操作,就可以这么实现:

int afe_read_reg(int addr, u8 *pdata)

{

u8 msgbuf[2];

struct i2c_msg msg =

{

.addr = save_client-addr | ( 8),

.flags = I2C_M_RD ,

.len = 2,

.buf = msgbuf,

};

msgbuf[0] = addr; //存放Sub Address,此处的Addr是寄存器地址,也就是Sub Address

msgbuf[1] = 0; //初始化

if (i2c_transfer(save_client-adapter, msg, 1) 0) {

dev_warn(save_client-dev,

"can't read from afe /n");

return -ENOMEM;

}

*pdata = msgbuf[1];

return 0;

}

方法2:

使用SMBUS的框架,其支持Sub Address

在i2c读操作中,直接调用SMBUS架构中的函数i2c_smbus_read_byte_data:

int afe_read_reg(int addr, u8 *pdata)

{

int ret;

ret = i2c_smbus_read_byte_data(save_client, addr);

if (ret 0)

return ret;

else {

*pdata = (u8)ret;

return 0;

}

}

然后函数调用顺序是

i2c_smbus_read_byte_data - i2c_smbus_xfer -

adapter-algo-smbus_xfer 或 i2c_smbus_xfer_emulated

(1)此处如果你自己的I2C驱动中没有实现

adapter-algo-smbus_xfer

那么就会去调用i2c_smbus_xfer_emulated,其会把I2C的读一个字节的操作,

分成2个message,然后

i2c_smbus_xfer_emulated - i2c_transfer - adap-algo-master_xfer(adap,msgs,num)

去调用底层自己的i2c传输的函数master_xfer去实现两个message的传输。

此处要注意的是,如果你的i2C的控制器和i2c设备,支持将此I2C的读一个字节操作分两个message传输,

那么此处此方法也是可以的。

而你的底层的master_xfer函数,只要负责将对应的message发送出去也就可以实现对应的功能了。

否则,就像我此处遇到的,我这里的AFE的i2c控制器,不支持读操作分成两次message,只支持一个I2C message的传输,

所以,只能是在底层特殊处理,将2个message自己整理成一个message,或者是用下面的办法。

(2)自己实现了adapter-algo-smbus_xfer

自己仿照i2c_smbus_xfer_emulated,在具体实现的时候,对于读和写都只是发送一个message,然后让底层代码

adap-algo-master_xfer去处理这个message,实现对应的读和写。

【注意】

1.以上,不论是1还是2,都是在实现了自己I2C驱动底层message传输的基本函数之后,才可以工作的。

而对于这个基本函数,即adap-algo-master_xfer,

都是要在实现的时候,注意上层传递过来的buffer的第一个字节是sub address,第二个字节才是要用于写入或读取的buffer。

2.对于方法2(2),在模拟i2c_smbus_xfer_emulated实现自己的xfer函数的时候,

不能直接调用i2c_transfer,因为i2c_transfer里面,去获得adapter-bus_lock,而i2c_smbus_xfer中,调用adapter-algo-smbus_xfer之前,已经进行了对于adapter-bus_lock锁定,而因此会形成死锁的的,办法是不要再去获得锁,而直接调用adapter-algo-master_xfer即可。

linux中快速清空文件内容的几种方法

linux下快速删除大量文件假如你要在linux下删除大量文件,比如100万、1000万,像/var/spool/clientmqueue/的mail邮件,像/usr/local/nginx/proxy_temp的nginx缓存等,那么rm -rf *可能就不好使了。rsync提供了一些跟删除相关的参数 rsync --help grep delete --del an alias for --delete-during --delete delete files that don't exist on the sending side --delete-before receiver deletes before transfer (default) --delete-during receiver deletes during transfer, not before --delete-after receiver deletes after transfer, not before --delete-excluded also delete excluded files on the receiving side --ignore-errors delete even if there are I/O errors --max-delete=NUM don't delete more than NUM files其中--delete-before 接收者在传输之前进行删除操作 可以用来清空目录或文件,如下:1、先建立一个空目录mkdir /data/blank2、用rsync删除目标目录rsync --delete-before -d /data/blank/ /var/spool/clientmqueue/这样目标目录很快就被清空了又假如你有一些特别大的文件要删除,比如nohup.out这样的实时更新的文件,动辄都是几十个G上百G的,也可 以用rsync来清空大文件,而且效率比较高1、创建空文件touch /data/blank.txt2、用rsync清空文件rsync -a --delete-before --progress --stats /root/blank.txt /root/nohup.outbuilding file list ...1 file to considerblank.txt 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1)Number of files: 1Number of files transferred: 1Total file size: 0 bytesTotal transferred file size: 0 bytesLiteral data: 0 bytesMatched data: 0 bytesFile list size: 27File list generation time: 0.006 secondsFile list transfer time: 0.000 secondsTotal bytes sent: 73Total bytes received: 31 sent 73 bytes received 31 bytes 208.00 bytes/sectotal size is 0 speedup is 0.00tips:当SRC和DEST文件性质不一致时将会报错当SRC和DEST性质都为文件【f】时,意思是清空文件内容而不是删除文件当SRC和DEST性质都为目录【d】时,意思是删除该目录下的所有文件,使其变为空目录最重要的是,它的处理速度相当快,处理几个G的文件也就是秒级的事最核心的内容是:rsync实际上用的就是替换原理作者 张慧

Linux dd 命令怎么用?具体例子?

举个例子说明一下:

将硬盘a克隆到硬盘b :

dd if=/dev/sda of=/dev/sdb bs=4M

可能在这个过程中的速度会比较慢,但是是有原因的,因为有用的和无用的数据都要复制。

——答案来自xisaiLinux界大牛老师


本文名称:xferlinux命令,XFER指令
分享网址:http://chengdu.cdxwcx.cn/article/hsgosh.html