热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

优化后的标题:在Linux/WSL环境中进行Shell任务的并行处理测试与分析

在Linux/WSL环境中,本文对Shell任务的并行处理进行了详细的测试与分析。通过多种并行处理技术,如GNUParallel和xargs,探讨了如何有效提升任务执行效率和系统资源利用率。实验结果表明,合理配置并行参数能够显著缩短任务完成时间,提高系统整体性能。此外,文章还介绍了Shell脚本编写的基本原则和最佳实践,为读者提供了实用的参考。

1 shell简介

参考来源https://www.runoob.com/linux/linux-shell.html

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。
由于习惯的原因,简洁起见,本文出现的 “shell编程” 都是指 shell 脚本编程,不是指开发 shell 自身。

Shell 编程跟 Javascript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
Linux 的 Shell 种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh)……

在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash。
告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。

2 shell入门

(1)输出函数

echo "hello"
printf "world"

(2)变量赋值和调用

class=1 #不允许中间有空格
echo ${class} #加上{}是好习惯
declare -a arr #定义数组
echo ${arr[i]} #调用数组
let "j+=1" #累加方式一
j=$(($j+1)) #累加方式二

(3)判断

num=$(cat ./a.log)
if ((${#nums}>3)) #${#nums}调用nums的长度, 双括号(())
then
echo "hello"
fi

(4)循环

for i in `seq 0 5` # while也可以
do
echo $i
done

(5)正则匹配

C_name=$(echo $file|grep -Po '[A-Z][1-2]?_[A-Za-z]+')

(6)读取时间

current_time=$(date "+%Y.%m.%d %H:%M:%S")

(7)输出文档

echo "hello" > out.txt # 覆盖
echo "hello" >> out.txt # 续写

(8)读取

cat ./a.log

3 shell并行计算控制

在linux中,常用做法是引入了任务队列的概念,类似socket举例中的消费者生产者模型,通过消息队列来调节供需的不平衡,参考https://blog.csdn.net/qq_34409701/article/details/52488964

而在windows subsystem for linux中,管道与命名管道(FIFO文件)无法使用,因为windows系统不支持管道与命名管道(FIFO文件)。找了很久也没看到其他可用的方法,因此,这里介绍一个自己想的笨方法,借助的是文件输出和读取。

#!/bin/bash
num=3 # 并行数上限
echo 0 > a.log
for i in `seq 1 12`
do {while (1)dosleep ${i}s # 任务开始时通过sleep让任务按次序进行尝试&#xff0c;同时也使得执行任务尝试降低频次cur&#61;$(cat ./a.log) # 记录当前的并行任务数if (($cur<3)) # 如果任务数未超过最大限制则可执行&#xff0c;反之则需等待thencur&#61;$(($cur&#43;1))echo $cur > a.log./out.shcur&#61;$(cat ./a.log) # 完成任务之后&#xff0c;将记录的并行任务数减1cur&#61;$(($cur-1))echo $cur > a.logecho "current: "$i", nums of processing:" $cur", completed: "$com"/"12break # 完成任务之后&#xff0c;跳出循环&#xff0c;未完成则继续尝试fidone}& # &用于并行控制
done
wait # 保证所有任务都能完成


推荐阅读
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 深入理解Shell脚本编程
    本文详细介绍了Shell脚本编程的基础概念、语法结构及其在操作系统中的应用。通过具体的示例代码,帮助读者掌握如何编写和执行Shell脚本。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 本文介绍如何通过注册表编辑器自定义和优化Windows文件右键菜单,包括删除不需要的菜单项、添加绿色版或非安装版软件以及将特定应用程序(如Sublime Text)添加到右键菜单中。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 如何使用PyCharm及常用配置详解
    对于一枚pycharm工具的使用新手,正确了解这门工具的配置及其使用,在使用过程中遇到的很多问题也可以迎刃而解,文中有非常详细的介绍, ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
author-avatar
hedongsheng
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有