学点儿expect吧

几十台虚拟机需要修改root相关内容,只有一个普通账号的key,没有root的key,虽然普通账号可以sudo到root,但是脚本中的ssh使用sudo是不行的,于是,使用脚本生成一大堆命令行,手动粘贴执行,太low了

学点儿expect吧: http://www.cnblogs.com/iloveyoucc/archive/2012/05/11/2496433.html

 

 

 

nginx + fastcgi + php-fpm 配置

  1. nginx和php-fmp保持长连接的设置
    1. 参考: http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive
    2. 设置
      keepalive 8;  //数字自己定吧,只要大于0就行,但是没有就不行

      fastcgi_keep_conn on;

  2. 关于单个连接同时处理多个请求的情况:
    1. fastcgi的设计来看,单个连接是可以同时传输多个请求的;对于多线程或事件驱动型fast-cgi server 是有一定好处的
    2. 对于特定的fastcgi-server,比如: php-fpm是不会同时处理多个请求的,所以fastcgi的该特性对于php-fpm是没有用的
    3. 问题: nginx何以知道后端的fastcgi-server是不能同时处理多个请求的?没有找到相关的nginx配置来告知nginx能否同时发送多个请求给相同的后端fastcgi连接; 难道nginx只能同时在一个连接上只分发一个请求?

json in java

参考资料: http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html

测试IDE: Intelijj

坎坷:

  1. 按照文档,下载了json-lib-2.4-jdk15.jar
  2. 开始写代码 (忘记了下载其他的依赖了)
  3. 编译,没有问题
  4. 执行,类找不见
  5. 由于不熟悉,浪费了一些时间
  6. 解决办法:
    1. 把异常中找不见的类放在程序的上面import一下(当然,肯定没有该类),IDE会提示类找不见,但是提示中可以“find in web”
    2. 然后就“find in web”,下载后,继续允许,继续报“类找不见”(当然,是其它的类),继续步骤1,直到不再报错

 

输出结果:

 

MAC 上的iptable

mac上原本使用ipfw来完成类似iptable的事情,但是

The ipfw command is deprecated in OS X Mountain Lion and later, but it has not been removed from Mavericks. If you run man ipfw, a message will appear saying: This utility is DEPRECATED. Please use pfctl(8)instead. While you may want to do port forwarding with pfctl to future proof your solution, these instructions showing how to use ipfw to do port forwarding will still work on OS X Mavericks.

http://knowm.org/port-forwarding-80-to-8080-using-ipfw-on-mac-os-x/

关于pfctl的使用: https://gist.github.com/kujohn/7209628

arp命令详解

  1. arp表项中只能显示本网段的IP地址的信息(别问为什么),不要试图看到非当前网段的IP地址的mac地址信息

  1. (imcomplete) 的意思就是这个IP的mac地址获取不到(可能机器没有启动呢),所以,HWtype、HWaddress、Flags、Mask都是没有的,但是根据路由表信息可以知道Iface是p3p1

  1. arp -a   显示的更加humanable ,这里试图显示每个IP的主机名,如果查不到就显示“?”, 一般我们不关心主机名,所以可以直接arp   或 arp -n

linux 之 proc

  1. /proc/pid/fdinfo/   记录了打开的fd的信息,位置信息(pos);
    1. 如果进程正在处理一个大文件,可以通过pos信息了解进程处理到哪里了
  2. /proc/pid/io  记录了该进程读写io的信息,可以方便知道是哪个进程在频繁地写磁盘了

 

参考资料:

linux在线man: http://man7.org/linux/man-pages/

proc: http://man7.org/linux/man-pages/man5/proc.5.html

linux 之环境变量

测试

a.sh

 

b.sh

结果: 没有A=A ,也没有 a=a

 

结果: 有A=A, 没有 a=a

结论

  1. 环境变量和变量是不同的, /proc/pid/environ 中只是“环境”变量,不同变量是不会体现在该文件中的
  2. export导出的变量,在后续执行的shell进程中可以看到,不导出则看不到
  3. 尽管b.sh中export了b变量,a.sh中也是看不到的,因为b.sh是一个新的进程

脚本中执行其它脚本的几种方法:

  1. 如上面a.sh中执行b.sh ,可以理解是a.sh调起了一个新的进程来执行b.sh的
  2. 在a.sh中如果用source(或 . )来执行 b.sh ,则b.sh中将可以看到A,也可以看到a,因为这样的话b.sh并不是一个新的进程,而是在当前进程中执行的
  3. 在a.sh 中如果用exec来执行b.sh,则b.sh经在当前进程中执行,但是不同于source的是,b.sh下面的命令将不会被执行,进程将随着b.sh执行的结束而结束