1. sed口令
sed -i "/method/s/manual/simple/g" decomposeParDict
是不是指:将文件decomposeParDict内method那一行的manual换成simple
sed -i 就是直接对文本文件进行操作的
sed -i 's/原字符串/新字符串/' /home/1.txt
sed -i 's/原字符串/新字符串/g' /home/1.txt
这两条命令的区别就是,看示例吧
这是1.txt的内容
#cat 1.txt
d
ddd
#ff
再看执行这两条命令的区别吧
只换了每一行的第一个d
sed -i 's/d/7523/' /home/1.txt
执行结果
7523
7523dd
#ff
全换了
sed -i 's/d/7523/g' /home/1.txt
执行结果
7523
752375237523
#ff
更多sed
https://blog.csdn.net/qq_33468857/article/details/84324609
需要学习更多正则化表达
https://www.runoob.com/regexp/regexp-rule.html
https://www.freesion.com/article/3158625799/
2. mpirun口令 ls -1口令 wc -l口令 grep口令 xargs口令 awk口令
mpirun -np $(ls -1 | grep processor | wc -l) ./$EXE -parallel
意思是不是:参数-parallel并行计算./$EXE程序(可执行程序,如icoFoam),进程数(核心数量)为(ls -1 | grep processor | wc -l)
ls -1将文件全列出来,然后grep processor查找含有processor的文件按行列出来,然后wc -l数行数
mpirun --hostfile <machines> -np <nProcs> <foamExec> <otherArgs> -parallel > log &
>log& 输出日志文件log
ls -1 -d processor* | grep -v ini | xargs rm
意思是不是:将当前文件夹下前缀为processor的文件按一个文件一行地列出来,然后找出不含ini的文件,然后全部删掉
-d指当前文件夹,processor*指processor为前缀的文件名,xargs rm删掉
mpirun
基本格式
mpirun [mpirun-options…] [options…]
其中 [mpirun-options…], 主要选项如下:
-np 要加载的进程个数。
-p4pg 按照pgfile文件中的要求加载用户进程。pgfile文件描述用户在那些结点上加载什么样的用户进程。
ls
ls 则一行空格全列出来
ls -1 list one file per line,也就是只列出文件名
ls -l是Linux和unix命令,意思指以长格式的形式查看当前目录下所有可见文件的详细属性。
举例:
ls -1
apache-maven-2.2.1-bin.tar.gz
apache-tomcat-6.0.30
apache-tomcat-6.0.30.zip
jdk-6u5-linux-x64.bin
jetty-6.1.14-fgw-aps.zip
jetty-distribution-7.3.0.v20110203.zip
moni2.tar.gz
ouput.log
status.sh
ls -l
total 149780
-rw-r--r-- 1 root root 2840961 Aug 7 2009 apache-maven-2.2.1-bin.tar.gz
drwxr-xr-- 2 root root 4096 Jul 5 10:45 apache-tomcat-6.0.30
-rw-r--r-- 1 root root 6908320 Jun 30 17:51 apache-tomcat-6.0.30.zip
-rwxr-xr-- 1 root root 63724381 Jun 30 17:51 jdk-6u5-linux-x64.bin
-rw-r--r-- 1 root root 24942637 Jul 11 16:59 jetty-6.1.14-fgw-aps.zip
-rw-r--r-- 1 root root 5910895 Apr 3 2011 jetty-distribution-7.3.0.v20110203.zip
-rw-r--r-- 1 root root 48835553 Jun 30 17:51 moni2.tar.gz
-rw-r--r-- 1 root root 211 Nov 14 16:35 ouput.log
-rw-r--r-- 1 root root 164 Oct 18 15:19 status.sh
wc
Linux wc命令用于计算字数。
利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
语法:
wc [-clw][--help][--version][文件...]
参数:
- -c或--bytes或--chars 只显示Bytes数。
- -l或--lines 显示行数。
- -w或--words 只显示字数。
- --help 在线帮助。
- --version 显示版本信息.
ls|wc -l与ls -l|wc -l的区别就是ls-l|wc -l多了显示total的一行。
ls|wc -l的结果是文件个数,ls -l|wc -l的结果是文件个数+1,也就是它计算的是行数
grep processor 查看逻辑CPU
grep -v 命令排除输出
cat test.log | grep "login"|grep -v "deviceType"
上面的命令的意思是:找出test.log
中包含login
信息的,且没有deviceType
这个字段的。
xargs口令
xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。xargs是给命令传递参数的一个过滤器,可以将前一个命令产生的输出作为后一个命令的参数
用 rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用 xargs 去避免这个问题。xargs将产生的长串文件列表拆散成多个子串,然后对每个子串调用rm。
linux中,&和&&,|和||
在linux中,&和&&,|和||介绍如下:
& 表示任务在后台执行,如要在后台运行redis-server,则有 redis-server &
&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo '1‘ && echo '2'
| 表示管道,上一条命令的输出,作为下一条命令参数,如 echo 'yes' | wc -l
|| 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo "fail"
\ 表示下一行继续
$1在shell中称为“位置参数”,表示传入的第1个参数(第1个入参)
其他变量说明:
Linux——$1、$#、$@、$0、$1、$2_u012114090的博客-CSDN博客
并行计算mpi总结
并行计算:MPI总结_JacksonKim的博客-CSDN博客_mpi
awk口令
Linux awk 命令 | 菜鸟教程 (runoob.com)
awk '{[pattern] action}' {filenames} # 行匹配语句 awk '' 只能用单引号
例子:log.txt
2 this is a test 3 Are you like awk This's a test 10 There are orange,apple,mongo
# 每行按空格或TAB分割,输出文本中的1、4项
$ awk '{print $1,$4}' log.txt
---------------------------------------------
2 a
3 like
This's
10 orange,apple,mongo
# 格式化输出
$ awk '{printf "%-8s %-10s\n",$1,$4}' log.txt
---------------------------------------------
2 a
3 like
This's
10 orange,apple,mongo
3. decomposePar工具
decomposePar -force -cellDist
It decomposes a case to be run in parallel. The syntax of the command is the following
decomposePar <root> <case> [-cellDist] [-fields] [-filterPatches] [-copyUniform]
It requires a dictionary named decomposeParDict is present in the system subdirectory of the case. 分解求解域,decomposePar程序相关的字典文件:decomposeParDict
OpenFOAM采用的并行计算方法是区域分解法
decomposeParDict文件中四种分解方法(simple, hierarchical, scotch, manual)都需要指定一些参数Coeffs,method来指定用哪种方法。
decomposePar会在算例文件的目录下为每一个核产生一个子文件夹,processorN(N为0, 1, ...)
4. reconstructPar工具
将分割后的场和网格重新合并,简单地以命令行来运行它即可
reconstructPar <root> <case> [-constant] [-latestTime] [-time time]
也可以单独对分割后的求解域的一部分进行后处理,即将各处理器文件夹看作一个独立的算例
paraFoam -case processor1
5. 编译
g++编译:
g++ rewrite.cpp -o rewrite
意思是不是:用g++将rewrite.cpp编译成文件名为rewrite的文件
-o:指定生成可执行文件的名称。使用方法为:g++ -o afile file.cpp file.h ... (可执行文件不可与待编译或链接文件同名,否则会生成相应可执行文件且覆盖原编译或链接文件),如果不使用-o选项,则会生成默认可执行文件a.out。
-c:只编译不链接,只生成目标文件。
-g:添加gdb调试选项。
C/C++完整编译过程详解
【转载】C/C++完整编译过程详解 - ericling - 博客园
gcc/g++常用编译选项: