关于多线程调用shell脚本时出现的文件占用问题

前几天在工作中,使用java程序多线程去调用shell脚本,shell脚本大概的逻辑是:

1,判断aa.exe时候存在,不存在则从某个路径下cp过来到当前目录下;

2,执行aa.exe;

3,执行完毕后删除当前目录下的aa.exe。

如果是单线程调用,这个脚本完全不存在任何问题。

后来根据需求,改成了多线程调用,测试时发现,时不时的会有一两个进程出现执行失败。报错信息是:aa.exe is busy。

一开始以为是java多线程的代码写的有问题,再三检查后发现并没有任何问题。

然后就开始分析多线程可能出现的情况,最后发现了问题所在。分析如下:

当两个进程同步进行时,因为原本目录下没有aa.exe,所以会同时复制exe到当前目录下,导致出现问题。

因此,我做了修改,把复制exe的功能放在java代码上,在多线程之前便复制过去,然后在全部线程走完后,再把exe程序删除。

shell脚本中不在控制exe的复制和删除。

就这样,问题完美解决了。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值