TypechoJoeTheme

MetMan's Blog

网站页面
2024-05-21

GNU Parallel并行加速脚本运行

GNU Parallel并行加速脚本运行
GNU Parallel是xargs和shell循环的替代品,可以利用多核CPU并行执行任务(jobs),加快命令行脚本的运行速度。这里的任务(job)可以是单个命令或者一个shell小脚本。并行执行有一个任务池,将任务池中任务分发给每个进程单独执行,这里的任务池指输入源列表。一般输入源包括文件列表、主机列表、用户列表等等,每一个列表项就是一个任务的参数。本质上,parallel工具是一个perl脚本。安装如果机器上没有parallel命令,可以自行安装。$ (wget -O - pi.dk/3 || lynx -source pi.dk/3 || curl pi.dk/3/ || \ fetch -o - http://pi.dk/3 ) > install.sh $ bash install.sh并行执行paralle可以替代xargs -P功能# sleep 1+2+3+4+5 = 15秒 $ time echo {1..5} | xargs -n 1 sleep #使用5个进程,最长的需要5秒 $ time echo {1..5} | xargs -n 1 -P ...
2024年05月21日
411 阅读
0 评论
2024-05-21

美国能源部E级超算

美国能源部E级超算
最新一期TOP500超算榜单(202311)发布,相比于6月份榜单,排名第一的仍是美国能源部(DOE)的橡树岭国家实验室(ORNL)的Frontier,但第2名变成DOE的Argonne国家实验室的Aurora,第3名是微软的Eagle。原先第2名的Fugaku排名降至第4。Frontier目前仍是唯一的E级超算。Aurora超算设计的计算性能为2 EFlop/s,但目前没有完成整体建设,只测试了一半系统,计算能力为585.34 PFlop/s。根据“NERSC GPU for Science Day"报告整理了美国能源部旗下三个机构的E级超算建设情况。三家E级超算都是CPU+GPU异构超算,但GPU来自不同的厂商,包括NVIDIA/AMD/Intel。下面是DOE的E级超算路线图。不同厂商的GPU支持不同的编程模型,这给应用可移植性带来了巨大挑战。下面介绍三家E级超算情况。Frontier (ORNL)Frontier计算节点组成:1颗CPU + 4颗GPU。Aurora (ANL)Argonne Leadership Computing Facility(ALCF)Auror...
2024年05月21日
193 阅读
0 评论
2024-05-21

BASH脚本获得自身路径方法

BASH脚本获得自身路径方法
Shell中有一个命令叫pwd(记忆:Print Working Directory的单词首字母)可以获得当前工作目录。如果该脚本在其所在目录下执行,使用pwd命令可以得到脚本的当前目录。    # /home/user/scripts/getmydir.sh     MYDIR=`pwd`     echo $MYDIR 在/home/user/scripts目录下执行./getmydir.sh得到脚本所在的绝对路径。问题:但如果该脚本在其他目录下执行,比如在/home/user下执行scripts/getmydir.sh得到的路径却是/home/user/。 原因在于pwd命令返回路径与脚本执行时的路径有关。解决方法可以看出pwd命令获取脚本自身路径有一定限制,那么如何更加通用的获取执行脚本所在路径?思路:我们需要先将工作目录切换到脚本所在目录,通过pwd获取脚本目录,同时保证切换目录操作不影响shell当前目录。BASH有两个内置变量可以帮忙:FUNCNAME  bash内置变量,包含目前执行调用堆栈中所有shell函数名称的数组变量。FUNCNAME[0]是当前...
2024年05月21日
437 阅读
0 评论
2024-04-19

Linux canonical pathname概念

Linux canonical pathname概念
POSIX定义了绝对/相对路径名,还有一种canonical pathname,它不是POSIX定义的,但在Linux命令介绍中常用到这个概念。下面介绍三种文件名概念。absolute pathname (绝对路径名)以单个或两个以上/字符开头的路径名。 比如/root /../usr/bin //opt/intelrelative pathname不以/字符开头的路径名。比如:foo ../data/a.txtCanonical pathname路径名中每个部分都是实际存在的目录或文件(不是符号链接),不包括.和..,并且其斜杠不重复。这意味着对于同一个文件系统对象,其canonical路径名是唯一的,从而是可比较的。假如以下路径名是canonical pathname,/home/user/data/a.txt # 路径中每一部分都是真实存在的如果cd ~; ln -sf /home/user/data mydata,那么下面几个路径名都不是canonical pathname。/home/user/mydata/b.txt /home/other/../user/d...
2024年04月19日
210 阅读
0 评论
2024-04-19

Shell if和case语法

Shell if和case语法
在学习完前面Shell退出状态和test命令内容后,再来学习if语句就简单了。if语法如下if pipeline then statements1 [ elif pipeline #方括号表示可选部分 then statements2 ] [ else statements3 ] fiif结构中使用pipeline,可以是简单的命令组合test命令管道命令根据命令的退出状态决定if执行分支。示例:if [ -f oldfile ] # 如果存在文件oldfile then mv oldfile newfile fiif语句退出状态整个if/fi结构退出状态是真正执行的语句statements最后一个命令执行退出状态。如果没有命令执行,退出状态为0.Shell脚本中可以使用:冒号作为占位命令,实际不做任何事。case语句判断一个变量可能是多个值情况时,可以使用if/elif/elif/../fi结构来完成,但也可以使用case语句实现,更加简单明了。题外话:在C语言中switch case语句一般比if语句效率更高,编译器可能会使用表...
2024年04月19日
198 阅读
0 评论
2024-04-19

Shell循环

Shell循环
每一种编程语言中循环结构都是一个重要的语法,shell也不例外。shell中循环结构包括:for循环、while循环以及until循环。这里只介绍常用的for循环和while循环。for循环for循环用于对一个对象列表中每个元素重复执行操作,其中对象列表可以是数值列表、文件名列表或者命令行参数列表等。for循环语法for var in 对象列表 do statements done可以使用;将多行语句写到一行:for var in 对象列表; do statements done 或者 for var in 对象列表; do statements; doneshell还支持C语言风格的for循环for ((exp1; exp2; exp3)) do statements done常见用法:数值列表for i in 1 2 3 4 5 6 # 循环6次 do echo $i done可以使用花括号展开生成数值列表for i in {1..6} do echo $i done还可以使用seq生成数值列表for i in `...
2024年04月19日
189 阅读
0 评论
2024-02-16

frp设置Windows远程桌面连接

frp设置Windows远程桌面连接
Windowns远程桌面RDP访问客户端frpc配置方法与以上ssh访问设置基本一致,区别在于其中localPort需要设为3389,因为Microsoft RDP(Remote Desktop)协议是通过TCP,其默认端口是3389.[[proxies]] name = "rdp" type = "tcp" localIP = "127.0.0.1" localPort = 3389 remotePort = 7200为了能够在外部机器使用远程连接访问,还需要确保:内部机器的远程登录权限打开在系统->远程桌面中设置以上设置的remotePort端口号7200在公网服务器中防火墙允许TCP访问RDP登录在Windows搜索框中搜索“远程桌面连接”,点击打开,在“计算机”框中输入公网服务器IP:remotePort,这里远程端口号是7200。输入内网机器账号和密码
2024年02月16日
303 阅读
0 评论
2024-02-16

frp工具使用介绍

frp工具使用介绍
简介frp是一个非常有名的内网穿透工具,功能就不多介绍了。frp项目地址:https://github.com/fatedier/frp 本次测试使用以下版本和机器。使用0.52.3frps服务器端为Linux(centos)frpc客户端为WindowsLinux服务端配置下载软件包并解压缩wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz tar -zxvf frp_0.52.3_linux_amd64.tar.gz cd frp_0.52.3_linux_amd64 配置服务器端文件frps.toml# frps.toml bindPort = 7000 # frps与frpc通信端口 auth.method = "token" # 开启token验证方式 auth.token = "xxxxxxx" # 一长串字符串,frps.toml与frpc.toml要一致配置...
2024年02月16日
360 阅读
0 评论
登录
X
用户名
密码