魏长东

weichangdong

正在查看: 2016年05月日志归档(第 1 页 / 共 6 篇)

判断shell元素是否在数组中

shell判断数组中是否包含某个元素:

ary=(1 2 3)

a=2

if [[ "${ary[@]}" =~ "$a" ]] ; then
    echo "a in ary"
else
    echo "a not in ary"
fi

判读字符串($str)是否包含另一个字符串($str1):

方法1:

if [  `echo $str | grep -e '$str1'`  ] ; then

    echo yes

fi

方法2(如果$str1在判断中直接使用字符串而不是变量,则不能加引号,如if [[ $str =~ ^dx ]]判读字符串$str是否以dx开头,^dx不能加引号):

if [[ $str =~ $str1 ]] ; then

    echo yes

fi

 

300个进程,如果那个进程挂掉了,则重新开启。

all_pid=$(seq 1 300)
ok_pid=($(ps  axf|grep last_step_text|grep  -v  grep |awk  '{print  $7}'|sort -n))
#echo  ${ok_pid[*]}
#echo   ${ok_pid[@]}
for pid in $all_pid
do
        if [[ ! "${ok_pid[@]}" =~ "$pid" ]]
        then
                 /usr/bin/php /work/opera/last_step_text.php $pid &
                echo "$pid ok"
        fi
done

linux奇葩现象wc -l 0行

很大的一个文件,无论是 wc -l  文件名字 还是cat 文件名字|wc -l 都显示0行。

[root@op-crawl-misc-1-us opera]# wc -l MTIwODcwOTI1OXwxNDU4NjkxMjAw
0 MTIwODcwOTI1OXwxNDU4NjkxMjAw
[root@op-crawl-misc-1-us opera]# du  -hs MTIwODcwOTI1OXwxNDU4NjkxMjAw
16K	MTIwODcwOTI1OXwxNDU4NjkxMjAw

原来是文件末尾没有换行符结尾造成的。

shell wait命令

wait我的理解是,等多个进程执行完,之后在执行wait后面的脚本。

#!/bin/bash

  for ((i=0;i<5;i++));do

  {

  sleep 3;echo 1>>aa && echo "done!"

  }

  done

  wait

  cat aa|wc -l

  rm aa

  这种情况下,程序顺序执行,每个循环3s,共需15s左右。

  $ time bash test.sh

  done!

  done!

  done!

  done!

  done!

  5

  real    0m15.030s

  user    0m0.002s

  sys     0m0.003s

»»阅读全文

jQuery选择器

jQuery 的选择器可谓之强大无比,记录下。
 
$("#myELement")    选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素 
$("div")           选择所有的div标签元素,返回div元素数组 
$(".myClass")      选择使用myClass类的css的所有元素 
$("*")             选择文档中的所有的元素,可以运用多种的选择方式进行联合选择:例如$("#myELement,div,.myclass") 
 
层叠选择器: 
$("form input")         选择所有的form元素中的input元素 
$("#main > *")          选择id值为main的所有的子元素 
$("label + input")     选择所有的label元素的下一个input元素节点,经测试选择器返回的是label标签后面直接跟一个input标签的所有input标签元素 
$("#prev ~ div")       同胞选择器,该选择器返回的为id为prev的标签元素的所有的属于同一个父元素的div标签 
 
基本过滤选择器: 
$("tr:first")               选择所有tr元素的第一个 
$("tr:last")                选择所有tr元素的最后一个 
$("input:not(:checked) + span")   
 
过滤掉:checked的选择器的所有的input元素 

»»阅读全文

编译安装的php-fpm重启

看到这个题目可能觉得小儿科,但是我觉得还是有必要记下。

编译安装的环境,没法通过service 重启,也没法通过/etc/rc.d/init.d/ 重启,只好杀了重新执行命令。

但是执行命令有不好找命令,不行nginx一样,直接就执行 /usr/local/nginx/sbin/nginx(当前我的一个机子环境上)。

所以kill -s SIGUSR2  pid 这种重启方法挺好的,kill -SIGUSR2 pid,不加-s也可以。linux man的解释是这样的:

 -s, --signal signal
              Specify the signal to send.  The signal may be given as a signal name or number.
 

使用 Nginx 和 GeoIP 模块来处理不同国家的访问

http://www.geoip.co/

安装 Nginx

因为要用到 http_geoip_module 模块,系统自带的 nginx 一般不带这个模块,所以要下载 nginx 源代码后自行编译:

# wget http://nginx.org/download/nginx-0.9.6.tar.gz
# tar zxvf nginx-0.9.6.tar.gz
# cd nginx-0.9.6
# ./configure --without-http_empty_gif_module --with-poll_module \
--with-http_stub_status_module --with-http_ssl_module \
--with-http_geoip_module
# make; make install

»»阅读全文