shell
linxxx3
CUDA,Phi,Multi-core Parallel programming
展开
-
shell脚本里赋值语句的写法
想写一个批量测试的脚本,怎么也不通过,最后归结起来一句话:等号两边不能有空格!!有空格的话shell将它理解成命令,产生“command not found”错误。C写习惯了这个真难改。。。原创 2010-04-21 15:55:00 · 2160 阅读 · 0 评论 -
scp 出现 protocol error: bad mode 错误的解决过程
刚碰到的一个诡异问题,两台配置完全相同的实验机,用scp传文件,出现“protocol error: bad mode”错误。一看基本超出我能处理的范围,首先求助google,大多数回复是基于字面的猜测,是不是TCP/IP等协议不匹配的问题。但是首先ssh登录没有问题,只是scp才出错,不太可能是真的协议问题;并且两台机器的软硬件配置是相同的,排除。直到某国外论坛上看到有一个回复是原创 2012-10-10 17:47:43 · 2640 阅读 · 1 评论 -
如何控制Linux下多个Shell脚本串行执行
当你在一个类似批处理的脚本里启动多个shell脚本的时候,可能没有意识到shell背后的调度器会将这些脚本在多个CPU上并行执行。当同时执行的脚本访问某些共享资源(通常是文件)时,可能造成执行的结果错误,而且经常让你意识不到。不同于低级语言中提供同步等机制,shell提供的逻辑执行的机制可以用于串行化执行,例如:1.sh && 2.sh && [...]不过这种方法的一个问题是原创 2012-03-27 04:40:58 · 3486 阅读 · 1 评论 -
比较两个文件中行乱序的相同行与不同行
<br />为了check多线程程序的结果,经常需要比较行乱序的两个文件中的内容。起初的想法是用perl之类的处理一下,之后发现利用grep工具本身的功能就可以完成简单的工作。<br /> <br />输出相同行:<br />$grep -wf file1 file2<br /> <br />输出不同行:<br />$grep -wvf file1 file2<br /> <br />关键是grep的参数-f,可以从文件中取得pattern;-w指定必须匹配整个word;-v输出不匹配的行原创 2011-05-06 11:40:00 · 1387 阅读 · 0 评论 -
在shell里做浮点计算
<br />如果两个变量做基本的整数运算,在shell里是很容易实现的,只需(($a+$b))就可以;但是shell本身是不支持浮点计算的,不过我们可以用变通的方法——使用常用的计算器工具bc就可以实现浮点计算:<br /> <br />#! /bin/sh<br /> <br />sum=$(echo "$1+$2" | bc )<br />echo $sum<br /> <br />下一篇要写一写怎么从文件中提取数值赋值给变量(折腾了好久 Orz)原创 2011-04-29 22:46:00 · 818 阅读 · 0 评论 -
当while遇到重定向----sh的陷阱
<br />PS:我自己的系统里sh直接指向bash,估计不存在这个问题<br /> <br />以下是我在编程时的亲身体会:<br />先看如下的程序:<br />#!/bin/sh<br /><br />count=0<br />while read LINE<br />do<br />count=`expr $count + 1`<br />done < file<br />echo $count<br />问题是这个程序能得到什么样的结果?仿佛很明显,能够统计文件file的行数,然而你若执行一下便知转载 2011-04-29 20:55:00 · 530 阅读 · 0 评论 -
linux终止其他用户会话的方法
<br />或许你也遇到这种情况,在管理或者别的时候,需要将某些用户的会话强制关闭。一般大家可能熟知的方法是查找该用户会话的所有进程,然后kill掉。这种方法大部分情况下是可以工作的。但是,若在用户会话非正常退出时,就难以达到效果了。<br /><br />本文讲述两种方法,来删除指定用户的会话。均是可以在不知道用户进程号的情况下完成的,提高了工作效率。<br /><br />使用tty命令,查看本会话的会话号。不要将自己给kill掉了,那是日本人喜欢做的事,不是我们大汉民族的所作所为:<br /><br转载 2011-04-07 11:18:00 · 3000 阅读 · 1 评论 -
传说中的fork炸弹
<br />百度知道上偶然看到的,记在这里:<br /> <br />.(){ .|.& };.<br /><br />死循环。执行这个SHELL会以2的指数次幂的速度不断产生新进程,这会导致系统资源会被迅速耗光,最终除非重新启动机器。<br /><br />1 .()<br />2 {<br />3.|.& <br />4 }<br />5 ;<br />6 .<br /><br />解释<br />第 1 行说明下面要定义一个函数,函数名为小数点,没有可选参数。 <b转载 2010-09-16 11:41:00 · 262 阅读 · 0 评论 -
shell处理参数列表
如果要写一个脚本能批量完成某种任务,又要有一定灵活性的话,就需要处理参数列表(arg list),即参数个数不固定的情况。 一个简单的思路是利用循环变量的默认取值:#! /bin/shif [$# lt 1]then echo "usage: xxxxxx/n"fifor par; do #do something for all par.done 这里par取遍所有输入参数。如果参数不能统一处理,开始有几个例外,可以用shift n(跳过n个参数):#! /bin/原创 2010-06-18 20:48:00 · 1860 阅读 · 1 评论 -
获得系统的内存页面大小page size
<br />正在测试用的一个benchmark里有一项page size的参数设置,虽然知道系统默认的页面大小是4K,还是想看一看,于是试了能想到的方法,未果,就上网搜索了下,发现了几条好用的:<br /> <br />shell下执行<br />$ /usr/bin/time -f %Z true<br />$ 4096<br />注意不是bash的time!!<br /> <br />C里可以用getpagesize();<br /> <br />其他还有一些,就不列举了,感觉也够用了。原创 2010-07-21 16:09:00 · 2191 阅读 · 0 评论 -
C程序中简单获取机器的CPU物理核数和主频(Redhat Linux系统)
获取这两个参数,主要的目的是计算机器的理论浮点峰值。言归正传,问题有两个部分,一个是如何获取这两个值,另一个是怎么传递到C程序中。1. 获取(以下内容在非Redhat 系统上需要变通以下,不能用是正常的)先看一个cpuinfo的例子:$cat /proc/cpuinfoprocessor : 0vendor_id :GenuineIntelcpu family原创 2013-03-26 18:56:37 · 849 阅读 · 0 评论