分类 "shell" 的存档.

make时自动更新-v输出的build版本

其实也没啥神奇的,无非就是脚本和C宏定义。

首先,是脚本部分,Subversion包中有个svnversion命令,有了它就好办了,
在Makefile中将去版本命令写好后作为参数传给gcc/g++/cl等等之类,用-D在编译器参数中定义版本宏。
阅读更多…

脚本自动削减gearman任务存量

用gearman总是难免遇到client提交量大增或者worker或者网络出问题导致jobs大量积压。
作为一个懒人,总是要惦记着这事是绝不能接受的。
所以万能的shell啊,请赐予我力量吧~!

阅读更多…

shell集合计算命令uniq用法

1、取file1 file2的并集

cat  file1 file2 |sort  -u |uniq

2、取file1 file2的交集

cat file1 file2|sort -u |uniq -d

3、去掉file1 file2的交集

cat file1 file2|sort -u |uniq -u

Linux内核参数-共享内存信号量semaphore设置

共享内存

可以通过ipcs -lm命令查看目前系统共享内存的参数限制:

# ipcs -lm

—— Shared Memory Limits ——–
max number of segments = 4096
max seg size (kbytes) = 1048576
max total shared memory (pages) = 2097152
min seg size (bytes) = 1

这里涉及到3个于共享内存相关的参数:SHMMAX,SHMMNI,SHMALL
阅读更多…

shell编程控制结构

1、expr计算整数变量值

格式 :expr arg

例子:计算(2+3)×4的值
1、分步计算,即先计算2+3,再对其和乘
4
s=`expr 2 + 3`
expr $s \* 4
2
、一步完成计算:
expr  `expr 2 + 3 `  \* 4
说明:
运算符号和参数之间要有空格分开;
通配符号(*),在作为乘法运算符时要用\、“”、‘’符号修饰
:expr 3 \* 2         expr 3 “*” 2       expr 3 ‘*’ 2 
 `(反引号)与键盘上的~同一个键上的符号 
[fsy@localhost ~]$ s=`expr 2 + 3`
[fsy@localhost ~]$ echo $s
5
[fsy@localhost ~]$ expr $s \* 4
20
[fsy@localhost ~]$ expr `expr 2 + 3` \* 4
20
[fsy@localhost ~]$ expr 2 \* 3
6
[fsy@localhost ~]$ expr 2 “*” 3
6
[fsy@localhost ~]$ expr 2 ‘*’ 3
6
[fsy@localhost ~]$ expr 2 * 3
expr: 语法错误
[fsy@localhost ~]$

阅读更多…

shell:读取文件的每一行内容并输出

昨天写了一个脚本,只是做简单的表插入和表删除,写shell脚本的时候,死死的卡在shell读文件内容这块,所以写出来跟大家分享下。

num=`cat ptest.txt|wc -l`
echo $num
if [ $num -gt 0 ];then
while read feemobile
do
echo "insert into mms_subscribe_pause (packageid,businessid,packageidsmc,sendnum,recnum,booktime,subscribetime,subscribetype,subscribeip,mobiletypeid,suspendtime,suspendtyp
e,suspendip,suspendname,suspendreason,pidsmt,bidsmt,smcstatus,pidmianfei,bidmianfei,gateway,area,usertype,leagueid,status,Pcode,FeeCode,contenttype,isrelated) select packageid,b
usinessid,packageidsmc,sendnum,recnum,booktime,subscribetime,subscribetype,subscribeip,mobiletypeid,now(),'42','MISC_PAUSE','','',pidsmt,bidsmt,smcstatus,pidmianfei,bidmianfei,g
ateway,area,usertype,leagueid,status,Pcode,FeeCode,contenttype,isrelated from mms_subscribe where recnum='$feemobile';" |$mmsdb
echo "delete from mms_subscribe where recnum='$feemobile';" |$mmsdb
done < ptest.txt
fi

看,是不是很简单,问题来了,我是逐行逐行读取ptest.txt里的内容,那它怎么可能自动实现读取一行行文件内容的呢?done < ptest.txt起的作用就是把待读取的文件内容准备好。那逐行读取文件写法只有这一种吗?答案是否定的。 阅读更多…