ngx_http_stub_status_module
这个模块能够获取Nginx自上次启动以来的工作状态
此模块非核心模块,需要在编译的时候手动添加编译参数 –with-http_stub_status_module
./configure –with-http_stub_status_module
配置说明
location /nginx_status {
stub_status on;
access_log off;
allow SOME.IP.ADD.RESS;
deny all;
}
或配置成认证:
location /nginx_status {
stub_status on;
access_log off;
auth_basic “nginx_status”;
auth_basic_user_file conf/htpasswd;
}
其中htpasswd,可用apache htpasswd工具生成或者用在线生成工具生成
指令:stub_status
语法: stub_status on
默认值: None
作用域: location
创建一个 location 区域启用 stub_status
“stub status” 模块返回的状态信息跟 mathopd’s 的状态信息很相似. 返回的状态信息如下:
Active connections: 291
server accepts handled requests
16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106
active connections — 对后端发起的活动连接数
server accepts handled requests — nginx 总共处理了 16630948 个连接, 成功创建 16630948 次握手 (证明中间没有失败的), 总共处理了 31070465 个请求 (平均每次握手处理了 1.8个数据请求)
reading — nginx 读取到客户端的Header信息数
writing — nginx 返回给客户端的Header信息数
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading + writing),意思就是Nginx说已经处理完正在等候下一次请求指令的驻留连接
posted @ 2011-11-15 11:27 小马歌 阅读(1775) | 评论 (0)编辑 收藏
 
发现在用SecureCRT终端连接主机,用ls命令查看文件也是??.XLS的显示。。所以确认应该是系统的编码设置问题。测试用#convmv方式转也不成功。
最后无意GOOGLE上看到一篇文章写到:在LINUX中通过locale来设置程序运行的不同语言环境,locale由ANSI C提供支持。locale的命名规则为<语言>_<地区>.<字符集编码>,如zh_CN.UTF-8,zh**中文,CN****地区,UTF-8表示字符集。在locale环境中,有一组变量,**国际化环境中的不同设置。 LC_ALL
它是一个宏,如果该值设置了,则该值会覆盖所有LC_*的设置值。注意,LANG的值不受该宏影响。"C"是系统默认的locale,"POSIX"是"C"的别名。所以当我们新安装完一个系统时,默认的locale就是C或POSIX。
根据前面测试的经验知道在/etc/sysconfig/i18n文件中修改LANG的设置为:
LANG="zh_CN.GBK"
LANGUAGE="zh_CN.GBK:zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
然后在/etc/profile文件中增加export LC_ALL=zh_CN.GBK内容。使得全部的LC*都统一了。
这样再重启主机。。
再进终端终于ls到了中文的文件名了
posted @ 2011-11-15 11:24 小马歌 阅读(2808) | 评论 (1)编辑 收藏
 
posted @ 2011-11-15 11:24 小马歌 阅读(147) | 评论 (0)编辑 收藏
 
svn propedit svn:ignore 【dir name】
posted @ 2011-11-15 11:22 小马歌 阅读(365) | 评论 (0)编辑 收藏
 
为应用建立了rnd的帐号,专门为他们查询线上数据库用的,当然,只有他们上了生产网络以后才能连上数据库,安全方面我们还是很注意的,呵呵。 
授权的语句如下: 
grant select on armory.* to rnd; 
flush privileges; 

select查询数据没有问题,但是有的用户有了更多的需求,他想把数据导出来,简单的处理的话,可以用select into outfile导出来。自己指定字段的分隔,行分隔等等。 
但是用户一查询就报:access deny的错误,权限不对。 
rnd@localhost : armory 09:26:31> select * into outfile ‘/tmp/1.txt’ from os limit 5; 
ERROR 1045 (28000): Access denied for user ‘rnd’@'%’ (using password: NO) 
郁闷的是MySQL没有说缺少了那个权限。 

在本机测试了一下, 
grant all on armory.* to rnd; 
flush privileges; 
给rnd所有的权限以后,还是报权限错误。这个就奇怪了,所有的权限都给它了,还报错?不可理喻阿。 
实在搞不定,最后让用户: 
mysql -urnd -p -e ‘select * from os limit 5;’ >1.txt 
的变通方法。 

一直被这个纠结着,突然后来有一天,查询了一下MySQL的文档,找到是file的权限没有加上去,但是当时MySQL对应的库的所有权限我都加上去了阿。灵光一闪,file是全局的权限,在MySQL中对单个库是没有这个权限概念的,所以就算我把库上的所有权限给了rnd,file的权限其实还是没有附权给它的。不信的话,我们这就试试: 
root@localhost : (none) 09:55:14> grant file on armory.* to rnd; 
ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGES 
果然,File权限是GLOBAL权限,不能附权给数据库。 
GLOBAL FILE附权以后 
root@localhost : mysql 09:58:21> grant file on *.* to rnd; 
Query OK, 0 rows affected (0.00 sec) 
select查询就可以执行了: 
rnd@localhost : armory 10:00:42> select * into outfile ‘/tmp/1.txt’ from os limit 5; 
Query OK, 5 rows affected (0.00 sec) 

其实MySQL的权限可能比较拗,让我们一下子适应不过来。MySQL的权限可以精细到列,权限判断是根据GLOBAL,DB,TABLE,COLUMN来授权的,可以简单的理解为他们对应到mysql库中的四个表:user,db,tables_priv,columns_priv这几个表。当然,MySQL没有这么简单拉。有兴趣的话可以好好看一下MySQL的reference或者其他介绍。举个例子: 
rnd@localhost : armory 10:00:43> show grants for rnd; 
+————————————————-+ 
| Grants for rnd@%                                | 
+————————————————-+ 
| GRANT FILE ON *.* TO ‘rnd’@'%’                  | 
| GRANT ALL PRIVILEGES ON `armory`.* TO ‘rnd’@'%’ | 
+————————————————-+ 
2 rows in set (0.00 sec) 
grant对同一个用户就分了两行,分别对应着user和db里面的两行: 
root@localhost : mysql 10:18:34> select * from mysql.user where user=’rnd’\G 
*************************** 1. row *************************** 
Host: % 
User: rnd 
Password: 
Select_priv: N 
Insert_priv: N 
Update_priv: N 
Delete_priv: N 
Create_priv: N 
Drop_priv: N 
Reload_priv: N 
Shutdown_priv: N 
Process_priv: N 
File_priv: Y 
Grant_priv: N 
References_priv: N 
Index_priv: N 
Alter_priv: N 
Show_db_priv: N 
Super_priv: N 
Create_tmp_table_priv: N 
Lock_tables_priv: N 
Execute_priv: N 
Repl_slave_priv: N 
Repl_client_priv: N 
Create_view_priv: N 
Show_view_priv: N 
Create_routine_priv: N 
Alter_routine_priv: N 
Create_user_priv: N 
Event_priv: N 
Trigger_priv: N 
ssl_type: 
ssl_cipher: 
x509_issuer: 
x509_subject: 
max_questions: 0 
max_updates: 0 
max_connections: 0 
max_user_connections: 0 
1 row in set (0.00 sec) 

root@localhost : mysql 10:18:41> select * from mysql.db where user=’rnd’\G 
*************************** 1. row *************************** 
Host: % 
Db: armory 
User: rnd 
Select_priv: Y 
Insert_priv: Y 
Update_priv: Y 
Delete_priv: Y 
Create_priv: Y 
Drop_priv: Y 
Grant_priv: N 
References_priv: Y 
Index_priv: Y 
Alter_priv: Y 
Create_tmp_table_priv: Y 
Lock_tables_priv: Y 
Create_view_priv: Y 
Show_view_priv: Y 
Create_routine_priv: Y 
Alter_routine_priv: Y 
Execute_priv: Y 
Event_priv: Y 
Trigger_priv: Y 
1 row in set (0.00 sec) 
MySQL的权限检查也是通过检查这两个表来进行判断的。 

附上tables_priv和columns_priv的两个表的字段,和user和db还是有点不同的,用到了set类型。 
root@localhost : mysql 10:18:58> desc tables_priv; 
+————-+———————————————————————————————————————————–+——+—–+——————-+—————————–+ 
| Field       | Type                                                                                                                              | Null | Key | Default           | Extra                       | 
+————-+———————————————————————————————————————————–+——+—–+——————-+—————————–+ 
| Host        | char(60)                                                                                                                          | NO   | PRI |                   |                             | 
| Db          | char(64)                                                                                                                          | NO   | PRI |                   |                             | 
| User        | char(16)                                                                                                                          | NO   | PRI |                   |                             | 
| Table_name  | char(64)                                                                                                                          | NO   | PRI |                   |                             | 
| Grantor     | char(77)                                                                                                                          | NO   | MUL |                   |                             | 
| Timestamp   | timestamp                                                                                                                         | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | 
| Table_priv  | set(‘Select’,'Insert’,'Update’,'Delete’,'Create’,'Drop’,'Grant’,'References’,'Index’,'Alter’,'Create View’,'Show view’,'Trigger’) | NO   |     |                   |                             | 
| Column_priv | set(‘Select’,'Insert’,'Update’,'References’)                                                                                      | NO   |     |                   |                             | 
+————-+———————————————————————————————————————————–+——+—–+——————-+—————————–+ 
8 rows in set (0.00 sec) 

root@localhost : mysql 10:21:24> desc columns_priv; 
+————-+———————————————-+——+—–+——————-+—————————–+ 
| Field       | Type                                         | Null | Key | Default           | Extra                       | 
+————-+———————————————-+——+—–+——————-+—————————–+ 
| Host        | char(60)                                     | NO   | PRI |                   |                             | 
| Db          | char(64)                                     | NO   | PRI |                   |                             | 
| User        | char(16)                                     | NO   | PRI |                   |                             | 
| Table_name  | char(64)                                     | NO   | PRI |                   |                             | 
| Column_name | char(64)                                     | NO   | PRI |                   |                             | 
| Timestamp   | timestamp                                    | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | 
| Column_priv | set(‘Select’,'Insert’,'Update’,'References’) | NO   |     |                   |                             | 
+————-+———————————————-+——+—–+——————-+—————————–+ 
7 rows in set (0.00 sec) 

may your success. 


------------------------------------- 
我理清是什么问题了。 
在red hat系列的linux中selinux对哪些daemon可以进行怎么样的操作是有限制的,mysql的select into outfile的命令是mysql的daemon来负责写文件操作的。写文件之前当然要具有写文件的权限。而selinux对这个权限做了限制。如果selinux是关闭的吧,这个命令执行是没有问题的 
mysql> select user from user into outfile '/home/test.txt'; 
Query OK, 2 rows affected (0.02 sec) 
当时selinux开启时 
selinux对mysql的守护进程mysqld进行了限制。 
mysql> select user from user into outfile '/home/test.txt'; 
ERROR 1 (HY000): Can't create/write to file '/home/test.txt' (Errcode: 13)  
出现了没有权限写的error。 
解决方法,可以关闭selinux。 
可以在/etc/selinux中找到config 
root用户, 
shell>vi /etc/selinux/config 

# This file controls the state of SELinux on the system. 
# SELINUX= can take one of these three values: 
# enforcing - SELinux security policy is enforced. 
# permissive - SELinux prints warnings instead of enforcing. 
# disabled - SELinux is fully disabled. 
SELINUX=enforcing 

修改SELINUX=disabled关闭selinux就可以了,这个问题就可以解决了。 
不过全部关闭SELINUX有带来一些安全问题。 
当然也可以,单独给mysql的守护进程权限, 
shell>getsebool -a可以查看当前的对系统一系列守护进程的权限情况。 

lpd_disable_trans --> off 
mail_read_content --> off 
mailman_mail_disable_trans --> off 
mdadm_disable_trans --> off 
mozilla_read_content --> off 
mysqld_disable_trans --> off 
nagios_disable_trans --> off 
named_disable_trans --> off 
named_write_master_zones --> off 
nfs_export_all_ro --> on 
nfs_export_all_rw --> on 
nfsd_disable_trans --> off 
nmbd_disable_trans --> off 
nrpe_disable_trans --> off 

shell>setsebool -P mysqld_disable_trans=1 
开启对mysql守护进程的权限,这样 
mysql> select user from user into outfile '/home/test.txt'; 
写入到自定义的目录就没有问题了。 
-P表示 是永久性设置,否则重启之后又恢复预设值。 
getsebool setsebool命令在root用户下有权限。 

除了对selinux的权限,当然首先要保证该目录拥有读写权限。 


在ubuntu下 ,可以对AppArmor(/etc/apparmor.d/usr.sbin.mysqld) 修改,类似selinux。 
添加/etc/squid/lists/eighties.txt w,类似。 

--------------------------------------------- 


root用户登录下: 
grant file on *.* to webgametest@10.3.18.158; 

改为生成在tmp文件夹下。 
posted @ 2011-11-04 12:36 小马歌 阅读(2126) | 评论 (0)编辑 收藏
 

今天使用SSH连接vps,出现警示消息:

[feng@fsc ~]$ ssh root@v.path8.net
Address 173.245.70.75 maps to domain.not.configured, but this does not map back to the address -POSSIBLE BREAK-IN ATTEMPT!

上网查询得到如下内容http://blog.csdn.net/dingxy/archive/2008/05/05/2394900.aspx,好像是跟ip反解析有关,不影响ssh的使用,于是不过多管它。

今天在使用SCP的时候遇到个一个error,如下:
reverse mapping checking getaddrinfo for XXX.XXXX.com failed - POSSIBLE BREAKIN ATTEMPT!^M

我用ssh 连接了一下XXX.XXXX.com,同样的问题
reverse mapping checking getaddrinfo for sXXX.XXXX.com failed - POSSIBLE BREAKIN ATTEMPT!
Last login: Mon May�0�2 5 16:50:08 2008 from 192.168.82.128

但是,还是能进入 XXX.XXXX.com。

找到以下解释:

Reverse Mapping Checking - Possible Break-in Attempt Error with SSH
Posted May 2nd, 2008 in Linux/Unix/BSD

When you connect to a host using SSH or SFTP it does a series of checks to ensure you are connecting to the host you are expecting to connect to. One of these is a reverse lookup on the IP address to check the hostname is the same as the hostname you are connecting to. If it's not, you'll get an error message like "reverse mapping checking getaddrinfo for ... POSSIBLE BREAK-IN ATTEMPT!". The post looks at a solution to this message.

当使用SSH或SFTP连接某个host时,会有一系列的检查以保证你能够连接到你想连接的机器。其中一项是 “reverse lookup on the IP address”检查机器名称和你要连接的机器名称一致。否则,你会得到这样一个错误信息:"reverse mapping checking getaddrinfo for ... POSSIBLE BREAK-IN ATTEMPT!".

Connecting from the command line, you might enter something like this:

ssh my.example.comand get some output like this:

Connecting to my.example.com...reverse mapping checking getaddrinfo for192-168-1-243.foo.bar.net failed - POSSIBLE BREAK-IN ATTEMPT!
chris@my.example.com's password:What this is telling us is that although we are connecting to my.example.com the IP address of the server we are connecting to actually maps back to 192-168-1-243.foo.bar.net in this example. When this actually happened to me, it's because the reverseDNS had not been set up for the server (which would map e.g. 192.168.1.243 to my.example.com as well as vice versa).

这是告诉我们,尽管我们在连接my.example.com ,但是实际上该server的IP 地址对应到192-168-1-243.foo.bar.net 。但这个发生的时候,就是因为server 上的reverse DNS 没有设置好。
举例说,应该是把192.168.1.243 映射到 my.example.com 。

Because I knew this reverse mapping was OK, I can add an entry to my hosts file and it will stop the error message from happening. For the above example, I would add the following to my hosts file:

192.168.1.243�0�2 my.example.com,Now when I log in using SSH from the command line I won't get that error message any more.

这里有一个解决方法,修改ssh配置文件,让这个消息不再显示。

from http://iceskysl.1sters.com/?p=478

Get POSSIBLE BREAK-IN ATTEMPT msg when i ssh to s server

when i ssh to a server,i get some message like this:

Address 192.168.5.12 maps to localhost, but this does not map back to the address – POSSIBLE BREAKIN ATTEMPT!

Solution:

Modify the "/etc/ssh/ssh_config" file at localhost

GSSAPIAuthentication no

exp:

ssh 192.168.1.110时报错上述错,本地是192.168.1.20 ,则修改本地192.168.1.20中的/etc/ssh/ssh_config,把参数GSSAPIAuthentication no修改就可以了。。或者修改服务器端192.168.1.110上的/etc/ssh/sshd_config ,把参数GSSAPIAuthentication no改了也可以。要注意的是/etc/ssh/ssh_config和/etc/ssh/sshd_confg的区别。

posted @ 2011-11-02 17:49 小马歌 阅读(11405) | 评论 (0)编辑 收藏
 
安装: yum install xinetd    rsync 
   rsync的试用方法 
一、设置Rsync Server端 
Rsync server需要设定四个方面: 
1.规划建立备份目录区 
2.设定: /etc/xinetd.d/rsync 
3.设定: /etc/rsyncd.conf 
4.设定: 密码文件。 
说明如下: 
1.规划建立备份目录区: 
建议你在rsync server上开一个较大的磁盘分割区,并在其下建立好备份用的目录。比如:/home/asialinux。 
2.设定: /etc/xinetd.d/rsync: 
即#vi /etc/xinetd.d/rsync 
#default: off 
#description:The rsync server is a good addition to am ftp server,as it 
#     allows crc checksumming etc. 
service rsync 
     disable = no 
     socket_type    = stream 
     wait       = no 
     user       = root 
     server      = /usr/bin/rsync 
     server_args    = --daemon 
     log_on_failure += USERID 
把其中的disable = yes 改为 disable = no之后退出保存就可以了,这还没有完成,还需启动rsync的服务。 
#service xinetd restart 
或者 
#ntsysv 
选中 
rsync确定即可。 
这样就开通了873通道(port),一旦有rsync client连接,xinetd就会把它转介给rsyncd跑port873。 
3.设定: /etc/rsyncd.conf 
如果在/etc下没有这个文件,请不要迷惑,自己创建一个不就得了,假设要备份的机器名为asialinux(IP:192.168.0.1), 
即Samba文件服务器: 
#vi /etc/rsyncd.conf 
uid = nobody 
gid = nobody 
use chroot = no 
max connections = 4 
pid file = /var/run/rsyncd.pid 
lock file = /var/run/rsync.lock 
log file = /var/log/rsyncd.log 
secrets file = /etc/rsync.pass 
[backup] 
path = /home/server/asialinux 
auth users = feixue 
uid = root 
gid = root 
secrets file = /home/rsyncd.secrets 
read only = no 
退出vi编辑模式并保存。 
说明: 
[backup]代表欲备份的主机代号,可以和主机名相同,也可以自定。本例为backup,而没有用asialinux以便大家在下面使用rsync命令时加以理解。 
Path就是用来存放备份档案的绝对目录,请你一定要用mkdir开设好,名称自定,如本例要在/home目录下面建立server目录以及server下面的子目录asialinux。 
注:如果你没有建立目录、目录建立的不对或者路径不对,都将不能进行rsync的备份,情况如下所示: 
#rsync –rvlHopDtS --password-file=/root/rsyncd.recrets /home feixue@testsmb::backup 
@ERROR:chroot failed 
rsync:connection unexpectedly closed (75 bytes read so far) 
rsync error: error in rsync protocol data stream (code 12) at io.c(165) 
auth users代表授权的账号,名称可自定。 
secrets file代表存储账号和密码的档案路径。 
当然,大家可以在/etc/rsyncd.conf内加入更多的区块,来备份多台主机或者一台主机的多个目录等,可以灵活运用。 
4.设定:密码文件 
如果没有和ssh在一块儿运用的话,rsyncd.secrets的内容很简单,格式为 账号:密码 
例如: 
feixue:asialinux 
注:上述设定只是一个范例,请大家务必自定一组,千万不可以直接套用。 
账号和密码设定完成之后,为了安全,还要对其属主和权限进行限定,我测试过,server和client端的权限都设为000时,只要密码两者相符,依然可以正常的备份。:D 
#chown root.root rsyncd.secrets 
#chmod 600 rsyncd.secrets 
这样,我们的Rsync Server端就设定完成了,当然你可以查看rsync的记录日志档案,请参考:/var/log/rsyncd.log。 
二、设置Rsync Client端 
假设欲备份的机器名称为testsmb(IP:192.168.2.220)下的目录/home备份到Rsync Server(asialinux)上。可以做如下设定: 
1.设定密码文件 
2.测试rsync执行指令 
3.将rsync指令放入工作排程(crontab) 
说明如下: 
1.设定密码文件 
假设把密码文件放在/root/rsyncd.secrets,内容很简单,只要含有一行密码即可: 
#vi /root/rsyncd.secrets 
asialinux 
退出vi编辑模式并保存。 
注:为了安全,设定密码档案的属性为:600。rsyncd.secrets的密码一定要和Rsync Server密码设定档案里的密码一样。 
如果不同,将会出现如下的错误: 
#rsync –rvlHopDtS --password-file=/root/rsyncd.recrets /home feixue@testsmb::backup 
@ERROR: auth failed on module backup 
rsync: connection unexpectedly closed (90 bytes read so far) 
rsync error: error in rsync protocol data stream (code 12) at io.c(165) 
2. 测试rsync执行指令 
一切设定完之后,我们可以带着兴奋的心情来测试、体验一下Rsync的魅力吧:) 
# rsync –rvlHopDtS --password-file=/root/rsyncd.recrets /home feixue@testsmb::backup 
如果出现如下所示的画面,那么恭喜一下,成功了: 
上传备份 
# rsync –rvlHopDtS --password-file=/root/rsyncd.recrets /home feixue@testsmb::backup 
下载备份 
# rsync -vzrtopg --delete --password-file=/etc/rsync.pass --progress user@192.168.1.26::shanxlu /home/wenti 
building file list ... done 
.profiles/Application Data/Microsoft/Office/WEBFDR16.INF 
.profiles/Application Data/Microsoft/WELCOME/DEFAULT.WBM 
若出现如下: 
# rsync –rvlHopDtS --password-file=/root/rsyncd.recrets /home feixue@testsmb::backup 
rsync: getaddrinto: testsmb 873: Name or service not know 
rsync error: error in socket IO (code 10 ) at clientserver.c(83) 
请分别编辑Rsync Server(假设hostname为asialinux,IP:192.168.0.1)和Rsync Client(假设hostname为testsmb,IP:192.168.0.2)的/etc/hosts文件,分别加入对方的IP地址和机器名,如下: 
[root@asialinux root]#vi /etc/hosts 
192.168.0.2     testsmb 
退出vi编辑模式并保存。 
[root@testsmb root]#vi /etc/hosts 
192.168.0.1     asialinux 
退出vi编辑模式并保存。 
如果没有出现期望的画面,那么请检查一下你的设定。 
3.将rsync指令放入工作排程(crontab) 
现在可以把我们的备份工作置入排程了,假设每天凌晨1点开始备份工作: 
#crontab –u root –e 
0 1 * * * /usr/bin/rsync --password-file=/root/rsyncd.recrets /home feixue@testsmb::backup 
如果你有其他的目录需要备份,则如法炮制吧 
@rsync 试用参数: 
-h , --help 显示rsync求助资讯 
--version 顯示rsync版本 
-v , --verbose 复杂的输出信息 
-q , --quiet 安静模式,几乎没有讯息产生, 常用在以cron执行rsync 
-I, --ignore-times 通常rsync为了加快速度会忽略同样档案大小且同样,同样存取时间点的档案 
可以通过此参数开关此快速检查. 
--size-only rsync   只检查档案大小是否改变,不管时间存取点是否改变 
通常用在mirror, 且对方时间不太正确时 
-c, --checksum 在传送之前透过128bit的md4检查码来检查所有要传送的档案(会托满速度); 
-a, --archive archive mode 权限保存模式,相当于 -rlptgoD 参数. 
很快速的保存几乎所有的权限设定,除了硬式连接(透过-H设定). 
-r, --recursive 复制所有下面的资料(透过) 
-R, --relative 使用相对路径 
如: rsync foo/bar/foo.c remote:/tmp/ 在远端产生/tmp/foo.c档案 
rsync -R foo/bar/foo.c remote:/tmp/ 在远端产生/tmp/foo/bar/foo.c 档案 
-R, --relative 不使用相对路径 
-b, --backup 目的地端先前已经存在的档案在传输或删除前会被备份 
--backup-dir=DIR 设定备份的资料夹 
--suffix=SUFFIX 指定备份的档案名称字尾形式(预设为~) 
-K, --keep-dirlinks 接收方将连接到资料夹的档案视为资料夹处理 
-l, --links 复制所有的连接 
-H, --hard-links 保留硬式连结 
-p, --perms 保留档案权限 
-o, --owner 保留档案所有者(root only) 
-g, --group 保留档案群组 
-D, --devices 保留device资讯(root only) 
-t, --times 保留时间点 
-n, --dry-run 不实际执行传送, 只显示将会有的传输动作 
-S, --sparse 尝试去处理稀疏的档案, 让这些档案在目的端占去较少的磁碟空间 
-W, --whole-file 复制所有的档案, 不额外作检查 
--no-whole-file 关闭 --whole-file 参数 
-x, --one-file-system 不要跨越档案系统分界(只在一个档案系统处理) 
-B, --block-size=SIZE 强制透过rsync程式去比对修复block-sizeforce 
-e --rsh=COMMAND 定义所试用的remote shell 
--rsync-path=PATH 定义rsync在远端机器存放资料的路径 
--existing 只对比更新目的端已经存在的档案 
--ignore-existing 忽略目的断已经存在的档案(也就是不更新) 
--delete 删除传送断已经不存在,而目的端存在的档案 
--delete-excluded 除了把传送端已经不存在, 而目的端存在的档案删除之外, 也删除 --exclude 参数所包含的档案 
--delete-after rsync预设会在档案传送前进行相关删除动作确保接收端有足够的档案空间, 
单可以透过 --delete-after 让删除动作在档案传送后在进行删除 
--ignore-errors 忽略任何错误即使是I/O error 也进行 --delete 删除动作 
--max-delete=NUM 定义rsync不要删除超过NUM个档案 
--partial rsync若遇到传输过程中断时, 会把那些已经传输的档案删除. 
在某种状况下保留那些部分传送的档案是令人高兴的; 
你可以透过 --partial 参数达到这个目的. 
--partial-dir=DIR 在 --partial 参数启动时, 你还是可以定义rsync把那些部分传送的档案 
写入定义的资料夹, 而非直接写入目的端,需要注意的是, 
此资料夹不应该被其他试用者可以写入.(如:/tmp) 
--force 当目的端资料夹被传送端非资料夹名称覆盖时, 强制rsync删除资料夹, 即使该资料夹不是空的. 
--numeric-ids 不将传送端档案的uid及gid值, 与目的端的使用者/群组进行配对, 
若传送端并没有uid及gid的对应名称(如:原帐号群组被删除的遗留档案), 
或目的端没有相对应的帐号/群组, 保留数字型式的uid/gid 
--timeout=TIMEOUT 设定I/O 超时的时间(秒). 超过这个秒数而没有资料传送, rsync将会结束. 预设为0,也就是没有定义超时时间 
-T, --temp-dir=DIR 定义rsync在接收端产生暂时性的复制档案时使用资料夹暂存, 预设时直接在接收端资料夹直接产生暂存档案 
--compare-dest=DIR 定义rsync在目的端建立资料夹来比对传送过来的档案. 
--link-dest=DIR 与 --compare-dest 相同,但同时会针对无法改变的档案建立硬式连结. 
-z, --compress 压缩模式, 当资料在传送到目的端进行档案压缩. 
-P -P参数和 --partial --progress 相同.只是为了把参数简单化. 
-C, --cvs-exclude 排除那些通常不希望传送的档案, 定义的方式与CVS传送相同: 
RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make.state 
.nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej 
.del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core .svn/ 
符合以上条件的都会被忽略不传送. 
--exclude=PATTER 符合PATTERN(规则表示式)样式的档案不仅行传送 
--exclude-from=FILE 和 --exclude 参数相同, 不过是把不进行传送的档案事先写入某一档案. 
执行时, 透过此参数让rsync读取. 
(; #开头的行列或者空白会被rsync忽略) 
--include=PATTERN 定义rsync不要排除符合pattern样式的档案 
--include-from=FILE 和--include参数相同,只不过把要包含的档案写到某一档案. 
--files-from=FILE 把要传送的档案名称都精确的写入某一档案, 让rsync读取. 
如: rsync -a --files-from=/tmp/foo /usr remote:/backup 
-0 --from0 定义档案所要读取的档案时null字元结尾. 
--version 现四版本信息. 
--daemon 定义rsync以daemon型态执行 
--no-detach 当以daemon形态执行时,不要进行分裂且变成背景程序. 
--address=ADDRESS 定义所要连接(bind)的ip位置或者是host名称(daemon限定) 
--config=FILE 定义所要读取的设定档rsyncd.conf位置(daemon限定) 
预设值为 /usr/local/etc/rsyncd.conf 
--port=PORT 定义rsyncd(daemon)要旨行的port(预设为tcp 873) 
--blocking-io 使用blocking I/O连结远端的shell, 如rsh, remsh 
--no-blocking-io 使用non-blocking连结远端的shell, 如ssh(预设值) 
--stats 显示档案传送时的资讯状态 
--progress 显示传送的进度.(给档案传送时,怕无聊的人用的..) 
--log-format=FORMAT 定义log的格式(在rsyncd.conf设定) 
--password-file=FILE 从档案读取与远端rsync伺服务连结的密码 
--bwlimit=KBPS 定义传输频宽的大小(KBytes/秒) 
--write-batch=FILE 把记录资料写入一个档案(给其他相同环境且相同需求的机器试用) 
--read-batch=FILE 透过读取记录档案来进行传输.(档案由 --write-batch 参数产生) 
--checksum-seed=NUM 定义档案 checksum-seed 的大小(byte) 
-4 --ipv4 使用IPv4协定 
-6 --ipv6 使用IPv6协定 


posted @ 2011-11-02 10:32 小马歌 阅读(3236) | 评论 (0)编辑 收藏
 
     摘要: 介绍  memcached是一个高性能分布式内存对象缓存系统, 通常用于在动态web应用上减缓数据库加载压力以提高速度.  这个扩展使用libmemcached库提供的api和memcached服务端进行交互, 它也同样提供了一个session处理器(memcached)  关于libmemcached的信息参见htt...  阅读全文
posted @ 2011-10-26 18:40 小马歌 阅读(491) | 评论 (0)编辑 收藏
 
from:http://www.cnblogs.com/scotoma/archive/2011/02/15/1955573.html

用了段时间的memcache和memcached总结下认识,看很多人在用cache的时候,刚刚都没有搞清楚memcache和 memcached的区别,还有就是使用的时候基本都是 get/set  用了memcached之后其实可以发现getMulti/setMulti 是多么好用,这篇写个那些刚刚使用memcache缓存的新人,老鸟请略过。

关于memcached就不用多说了,就是a distributed memory object  caching system 。既然是一个用来存东西的系统,那么一定要有个存放的地方吧,我们就叫它服务器端吧,然后谁把东西存放在上面就叫它客户端吧,那怎么放呢,肯定是 客户端 -- 连接服务器端 -- 把东西发送给服务器端 -- 实现了东西的存放么,要去取的时候也是一样的,先连接,在取东西回来了。所有就有了memcached的服务器端,安装请见 http://www.cnblogs.com/scotoma/archive/2010/05/27/1745011.html 这个是WIN下的,*unix下的请到 http://memcached.org/ 去下载然后编译安装了,这里我就不多说安装的配置了,网上已经有很多了。

安装完成后看下自己的进程里面memcached的服务是否在跑着的? 好了进程在跑着呢,那就看看客户端吧

我是做PHP开发的,所有就安装了PHP的客户端扩展,有memcache和memcached扩展2种,安装我也不说了自己去动手,安装完成后查看phpinfo会发现如下页面就说明你的扩展安装成功了,如果不成功请自己检查php.ini里面的配置是否正确

服务器端和客户端都弄好了看看示例代码可以跑起来的么,如图

结果如图:

都跑起来了,看看memcache和memcached的使用的区别,那就好好的翻看下PHP手册吧,其实手册是最好的东西了

memcache扩展的方法

memcached扩展的方法

完成了,其实2个可以理解成2个扩展历史原因也不想多说了,就是尽量使用memcached就好了,不过也会出现一些很奇怪的Bug,比如使用memcached扩展的适合设置的session(session存放到memcached中,使用的是memcached扩展存放的就会发现不会过期)。

在实践中用了之后才会知道什么和什么的,动手是最好的学习方式.

posted @ 2011-10-26 17:25 小马歌 阅读(287) | 评论 (0)编辑 收藏
 

【小小财神】给我挚爱的支持我、信任我的UIONPM兄弟姐妹

 

5年多了,准确的说是1527天,或者5年零66天,或者5年两个月零5天。我有的时候不能想象人生有这样的几个5年让我重新一遍,可能只有2-3个机会。为此我非常感恩百度,感谢大家。感谢团队、各位领导及朋友们一路上的厚爱及支持。

今天我最想给大家交流主要有两件事,如何面对失败和到一线去。

如何面对失败?

产品经理是这世界上最痛苦的工作之一,因为产品失败的概率远远高于成功的概率。对于很多人而言,失败带来的恐惧,压力,有些时候是绝望。对于我而言,在网盟最惨淡的时候,面临最大挑战对自我的彻底否定,我经常会问自己“是不是因为我没有做产品的能力”,“是不是因为我的决策错了?其他人会更好”。这种对自信的打击对我而言是空前的,但是在失败中我收获了什么呢?

"当我最大的失败已降临时,我发现我还活着,我还有我很爱的女儿,一台打字机和我伟大的思想,我还怕什么?"——罗琳

罗琳的话一直激励这我,在这个过程中,你可以收获的是什么?当我回头看,和罗琳一样。有两个收获将使我终身受益。

朋友,在那么痛苦和无助的环境中,还有一群人和我一起不离不弃,我们一起走过那些艰难的日子,如同VIDEO一样,我们每晚坚持这讨论,开会,寻找方向,很多次失败后又重新站起来,这些人,这个TEAM对你而言,还有什么不可以信任和托付的呢?还有一大批人,在网盟很弱小的时候,无私的帮助了它,滴水之恩当涌泉相报,在最困难的时候,你交到了真正的朋友。

Back to Basics,对事物真正的认知。当你失败了多次之后,你才回到最根本的思考,广告主的利益和需求一直是网盟的核心,当经历了多次的失败之后,终于回到最根本的思考上,人群定向、北斗星和创意专家就是在这样的背景出线了。我其实一开始没有对人群定向报以这么大的期待,但是当你解决了广告主最根本的需求的时候,你发现你的收获是如此之大。

各位都是来自各个学校的精英,顺利伴随着你们的过去,但是从你选择产品经理职位的这一刻起,就意味着失败可能会时时的伴随着你们,在失败的时候,有RD的质疑和抱怨,有销售的压力和挑战,也会出现像我一样的自我否定,希望大家能够坚持下来,只要可以坚持,成功一定会伴随着你。想获得成功和幸福,想过得快乐和欢欣,首先要把失败、不幸、挫折和痛苦读懂。

 

到一线去

商业产品经理最难最难的一点是自己不是用户,你用测试账户的时候,永远也体会不了广告主花钱时候那种谨慎和胆战心惊。产品团队对自己的产品总过于自信,只顾埋头开发,却忽视了用户。

所以,我发现了一个规律,到一线去。无论是beidou,STR和OPT,做产品市场、策略、还是WEB端,都要走到一线去,和销售、客服、和客户好好的沟通,你才能理解客户,做的策略才有针对性,做的系统才有人使用,做的优化方案才可以贯彻执行。在这两年中,我一直保持着多到一线去,每个周六坚持在两个客服HI群的习惯,这些习惯对我做产品有莫大的好处,希望大家在今后的日子里面,可以坚持去一线,保持和一线伙伴的紧密沟通。

 

感谢大家听我啰嗦这麽多,我非常希望UNIONPM团队可以成为最好的一只PM团队。

posted @ 2011-10-11 11:16 小马歌 阅读(173) | 评论 (0)编辑 收藏
仅列出标题
共95页: First 上一页 47 48 49 50 51 52 53 54 55 下一页 Last