linux多进程课设,Linux Shell实现模拟多进程并发执行

本次实验的内容较多,从创建文件 ,代码解读和实验结果三个方面来进行记录

创建文件

touch test.sh #在根目录下创建名为test.sh的文件

vim test.sh #使用vim打开文件进行编辑

#进入vim模式后,按i进入编辑模式

#输入:

#!/bin/bash

for((i=0;i<5;i++));do

{

sleep 1; echo 1>>a && echo "done!"

}

done

cat aa|wc -l

rm aa

#输入完成后按Esc退出编辑模式,然后输入 :wq

#保存并退出

代码解读

先简单介绍一下啊shell,shell也可以理解为命令解释器,是用来解决用户如何与操作系统通信的问题。

#!/bin/bash

这行代码代表脚本声明,即告诉系统使用哪种命令解释器执行这个脚本。

for((i=0;i<5;i++));do

{

sleep 1; echo 1>>a && echo "done!"

}

done

for循环和do就不讲了,具体讲一下内层代码的含义

-sleep 1 就是暂停疫苗一秒,看字面意思就知道睡了一秒,也就是工作暂停了一秒,睡醒了继续

-echo 1>>a 将1添加在a的后面

-echo “done!” 输出done!

cat aa|wc -l

rm aa

第一行意思是打开aa并统计行数

第二行是删除aa

实验结果

保存并退出文件后,先通过 ll 查看文件权限,user是否有运行权限,若没有

chomd u+x test.sh #添加用户可执行权限

然后输入命令

time bash test.sh

这是第一个实验的结果

926eed9d020dd0a32818226c052eb039.png

可以看到最后一行的结果显示,运行完毕总共用了5.074秒

下面的这个运行结果是

#!/bin/bash

for((i=0;i<5;i++));do

{

sleep 1; echo 1>>a && echo "done!"

}&

done

wait

cat aa|wc -l

rm aa

的运行结果,他以第一个代码的区别在于done之前多了一个&,之后多了一个wait,是什么意思呢?

&的作用是将此进程放到后台执行,也就是幕后工作,就算关闭了这个终端,这个进程也不会被终止,要想要终止这个进程,那就是用jobs找到他然后kill!!!与&相对应的就是%,它的功能与&相反,%是将进程移到台前。

wait是用来阻塞当前进程的执行,直至指定的子进程执行结束后,才继续执行。使用wait可以在bash脚本“多进程”执行模式下,起到一些特殊控制的作用。(此解释来源于网络,wait的功能我还不是很了解,还在学习)

我们也可以明显的看到运行时间,确实有极大的差距!5秒到1秒差距还是很大的!!!这背后的缘由,还得在进一步探究。

e176624b146e61772c2a6e3a37f0d413.png

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值