魏长东

weichangdong

正在查看: linux 分类下的文章(第 2 页 / 共 76 篇)

elastic search小知识

curl  localhost:9200/wcdweather/_count?pretty
curl -XGET localhost:9200/_mapping?pretty
几个es默认的分词器
curl -XPOST localhost:9200/_analyze?analyzer=standard -d '{"text":"New York"}'
curl -XPOST localhost:9200/_analyze?analyzer=whitespace -d '{"text":"New York"}'
curl -XPOST localhost:9200/_analyze?analyzer=simple -d '{"text":"New York"}'

简单的shell

#开始了一个任务,入库20160907的数据,但是这个任务需要执行很久,结束时间得到晚上的10点到凌晨3点之间。想入库完了接着入库20160908的
#,因为开始没有想到这个事情,所以只能是后补了。
#这个脚本的思路是,查询20160908的任务,如果有,证明开始跑08号的数据了,就直接退出。查询如果有20160907的任务,证明07的还没执行完,就
#在等等。等07的任务完了,就开始08的任务。
#脚本半小时跑一次。
re=$(ps  axf|grep  php|grep  'task_date=20160907')
re2=$(ps  axf|grep  php|grep  'task_date=20160908')
if [[ -z $re2 ]]
then
 echo  'no start'
else
 exit
fi
#echo $re
if [[ -z $re ]]
then
 echo 'ok'
 nohup /usr/bin/php xxx/wcd.sh md_data_import daily_task --time_types=day --task_date=20160908 >> log-import-20160908 & 
else
 echo "no ok"
 exit
fi

Linux下区分物理CPU、逻辑CPU和CPU核数

㈠ 概念
           ① 物理CPU
               
              实际Server中插槽上的CPU个数
              物理cpu数量,可以数不重复的 physical id 有几个           
           ② 逻辑CPU               
              Linux用户对 /proc/cpuinfo 这个文件肯定不陌生. 它是用来存储cpu硬件信息的
              信息内容分别列出了processor 0 – n 的规格。这里需要注意,如果你认为n就是真实的cpu数的话, 就大错特错了
              一般情况,我们认为一颗cpu可以有多核,加上intel的超线程技术(HT), 可以在逻辑上再分一倍数量的cpu core出来
              逻辑CPU数量=物理cpu数量 x cpu cores 这个规格值 x 2(如果支持并开启ht)
              备注一下:Linux下top查看的CPU也是逻辑CPU个数              
           ③ CPU核数           
              一块CPU上面能处理数据的芯片组的数量、比如现在的i5 760,是双核心四线程的CPU、而 i5 2250 是四核心四线程的CPU              
              一般来说,物理CPU个数×每颗核数就应该等于逻辑CPU的个数,如果不相等的话,则表示服务器的CPU支持超线程技术 
   

㈡ 查看CPU信息          

          vendor id     如果处理器为英特尔处理器,则字符串是 GenuineIntel。
          processor     包括这一逻辑处理器的唯一标识符。
          physical id   包括每个物理封装的唯一标识符。
          core id       保存每个内核的唯一标识符。
          siblings      列出了位于相同物理封装中的逻辑处理器的数量。
          cpu cores     包含位于相同物理封装中的内核数量。

         1. 拥有相同 physical id 的所有逻辑处理器共享同一个物理插座,每个 physical id 代表一个唯一的物理封装。

         2. Siblings 表示位于这一物理封装上的逻辑处理器的数量,它们可能支持也可能不支持超线程(HT)技术。
         3. 每个 core id 均代表一个唯一的处理器内核,所有带有相同 core id 的逻辑处理器均位于同一个处理器内核上。简单的说:“siblings”指的是一个物理CPU有几个逻辑                      CPU,”cpu cores“指的是一个物理CPU有几个核。
         4. 如果有一个以上逻辑处理器拥有相同的 core id 和 physical id,则说明系统支持超线程(HT)技术。
         5. 如果有两个或两个以上的逻辑处理器拥有相同的 physical id,但是 core id不同,则说明这是一个多内核处理器。cpu cores条目也可以表示是否支持多内核。

»»阅读全文

云主机和VPS的区别

VPS,虚拟服务器,就是在一台物理服务器(我们称之为母鸡)上根据某种虚拟方式划分出虚拟机,说白了,和你自己在你的电脑上装个Virtualbox,开几个虚拟机没啥区别。也就是说,这个VPS是依赖于这台母鸡的,一旦母鸡挂了,那你的VPS肯定会挂。另外,这台母鸡上的所有的VPS全部依赖于母鸡的资源,平分母鸡的资源(当然这要看VPS服务商如何去划分VPS了),共享母鸡的带宽,共享母鸡的CPU、硬盘、内存等等资源。也就是说,你在VPS里面看到的硬盘,就是存放在母鸡的硬盘上的某个很大的文件,所以VPS的磁盘IO是要看母鸡的硬盘好坏的,母鸡的磁盘越好,比如SSD,那么你的VPS的磁盘IO速度越高。同理,其他的资源,如带宽、CPU、内存也类似。那么,如果你在VPS里面写入一个文件,就是写到了母鸡的硬盘上,和你自己用台式机新建一个文件到你的硬盘上,基本没有区别。

»»阅读全文

谈应用环境下的TIME_WAIT和CLOSE_WAIT

在服务器的日常维护过程中,会经常用到下面的命令:

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'    

它会显示例如下面的信息:

TIME_WAIT 814
CLOSE_WAIT 1
FIN_WAIT1 1
ESTABLISHED 634
SYN_RECV 2
LAST_ACK 1

常用的三个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭。

 

具体每种状态什么意思,其实无需多说,看看下面这种图就明白了,注意这里提到的服务器应该是业务请求接受处理的一方:

0822-netstat.gif

»»阅读全文

svn创建仓库

mkdir /data/svn
svnserve -d -r /data/svn
svnadmin create /data/svn/testpush
cd /data/svn/testpush/conf

svn co --username weichangdong svn://xxx/testpush testpush2
svn co --username weichangdong svn://xxx/pushAdmin pushAdmin2

svnadmin create /data/svn/pushAdmin
cd /data/svn/pushAdmin/conf

来张美女

329399.jpg

编译安装的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.
 

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

»»阅读全文

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元素是否在数组中

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