使用不同的参数同时并行执行单个 shell 脚本

Executing single shell script parallelly at same time with different arguments

考虑一个脚本让我们说 test.sh 它接受文件号作为参数,它根据参数处理大文件。因此,每当我以 "nohup ./test.sh 01 &" 的形式执行它时,我都会要求对 8 个文件并行执行相同的操作,我是能够通过不同的论据实现这一目标。

以下是我的主要查询:

  1. 每当我使用不同的参数并行执行相同的脚本时,一个实例是否有可能改变另一个实例变量,因为我只使用一个脚本副本?
  2. 如果不是,那么如何避免或做到这一点,如何避免这种冲突?

任何参考阅读相同的简短解释都会非常有帮助,谢谢!!

注意:我已经尝试过这种方法并且到目前为止没有发现冲突只是想知道相同背后的原因,因为我无法找到相同的任何参考。

简化了很多,只是作为一个起点。 Google 用于 (unix) 地址 space,或 (unix) 过程映像 .

大多数(所有?)现代操作系统虚拟化内存 (RAM),并将此 地址称为 space 进程映像 , 等等.

每个程序都在自己的虚拟地址space进程映像中启动,它只能访问自己地址的内存space。从内存的角度来看,这是因为每个程序 运行 在其自己不同的计算机上(请记住我正在简化事情)。

两个程序 运行 并行,无法访问彼此地址 space 中的数据,除非两个程序都同意使用特定操作系统服务进行某些共享。

回到你的问题:当你启动一个程序的多个实例(一个脚本就是一个程序)时,这个程序的一个副本被加载到它自己的地址space。由于 地址 space 的概念隔离了内存,所有程序数据也被隔离了。

因此,一个程序实例的任何数据(例如变量)不会被另一个程序实例看到或修改,除非这些程序同意某种共享(使用操作系统服务)。

HTH