shell大括号参数扩展

假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt

字符串截取按分隔符截取

* ${file#*/}截取第一个/右边的字符串 dir1/dir2/dir3/my.file.txt
* ${file##*/}截取最后一个/右边的字符串 my.file.txt
* ${file%/*}截取最后一个/左边的字符串 /dir1/dir2/dir3
* ${file%%/*}截取第一个/左边的字符串 (空值)

总结

* #语法为 # * separator 截取separator右边的字符串
* %语法为 % separator *截取separator左边的字符串
* 一个#或%表示贪婪截取
* 两个#或%标示非贪婪截取

- 阅读剩余部分 -

nginx获取客户端真实IP地址

假设公司网站架构为 client ---->nginx 负载均衡--->varnish 缓存---->nginx( web)----->tomcat 请问如何从 nginx(web)这一层的访问日志日志中获取以下信息:请求发起的客户端 IP 以及经过的 nginx 负载均衡和 varnish 缓存的服务器 IP,看以下架构图:

564ad1a4-a17d-4a40-8ddb-488184b9e3c3.jpg

在nginx-web服务器安装nginx的时候需要把 --with-http_realip_module 该模块编译进去,该模块是用来从前端服务器发来的头部信息中,获取到客户端的真实IP地址

- 阅读剩余部分 -

FastDFS + Nginx 反向代理缓存 安装与配置

操作系统 CentOS release 6.5 (Final) 64

nginx相关软件

nginx-1.4.7 下载地址: http://nginx.org/en/download.html#
nginx清除缓存模块 ngx_cache_purge-2.1 http://labs.frickle.com/nginx_ngx_cache_purge/
pcre-8.36 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz
zlib库 http://zlib.net/zlib-1.2.8.tar.gz

FastDFS相关软件

FastDFS_v5.04
http://sourceforge.net/projects/fastdfs/files

FastDFS Nginx Module 1.16
http://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/

libfastcommon
https://github.com/happyfish100/libfastcommon.git

拓扑图

2dd42041-2aba-4a82-8a6b-b48dac7c0e86.jpg

- 阅读剩余部分 -

Perl来获取Linux文件的3个时间

利用Perl来获取Linux文件的3个时间


#!/usr/bin/perl

($atime,$mtime,$ctime) = &getFileAMCTime($_); 传进来一个文件名
print "Atime:$atime Mtime:$mtime Ctime:$ctime\n";

#获取文件的atime,mtime,ctime
sub getFileAMCTime {
     $filename = shift @_;
     my ($atime,$mtime ,$ctime) = (stat ($filename))[8,9,10];
     $atime = &getTime($atime);
     $mtime = &getTime($mtime);
     $ctime = &getTime($ctime);

     #将日期时间格式转换为比较友好的格式
     sub getTime {
          my $time = shift @_;
          my($sec,$min,$hour,$day,$mon,$year) = (localtime $time)[0..5];
          $time = sprintf "%4d-%02d-%02d %2d:%02d:%02d",$year + 1900,$mon + 1,$day,$hour,$min,$sec;
          return $time;
     }
     return $atime,$mtime,$ctime;
}

利用密钥来免密码登录

主机1:192.168.100.248 Linux主机
主机2:192.168.100.249 Linux主机
主机1 生成密钥(公钥和私钥),把公钥复制到主机2上

1.主机1生成密钥


[root@server3 ~]# ssh-keygen -b 1024 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):   #密钥的保存位置
Enter passphrase (empty for no passphrase):                #密钥短语
Enter same passphrase again:                                        #密钥短语
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.    #已经生成了公钥和私钥文件
The key fingerprint is:
98:ab:82:16:c9:54:f5:41:6e:74:f9:e6:ea:5a:0e:82 root@server3.com

- 阅读剩余部分 -