【问题标题】:Run three shell script simultaneously同时运行三个shell脚本
【发布时间】:2012-10-16 04:52:55
【问题描述】:

我有三个运行如下的 shell 脚本-

sh -x script1.sh

sh -x script2.sh

sh -x script3.sh

所以每个脚本在前一个脚本完成执行后一次一个地依次执行。

问题陈述:-

有什么方法可以在一个窗口中同时执行以上三个脚本? 我只想同时执行script1、script2、script3。如果您想到一些 CRON JOB 调度 script1 at 3 AM, script2 at 3AM, script3 at 3AM(所有三个脚本同时,同时)。这就是我需要的,我需要同时执行所有三个脚本。

【问题讨论】:

标签: bash shell


【解决方案1】:

你想要这个吗?

$ sh -x script1.sh & sh -x script2.sh & sh -x script3.sh &

更新说明:

  • 在后台模式下运行每个脚本,以便在不等待当前命令完成的情况下运行下一个命令。
  • '&' 使脚本在后台运行,因此提示不会等待它完成
  • '&' 也可用于在一行上链接命令,类似于在命令行上逐个运行命令。

【讨论】:

  • 你能解释一下这会做什么吗?因为我对 unix 的东西不太熟悉。
  • Rohan - 你有几个错误。错误消息看起来像bash: syntax error near unexpected token ;。您应该删除两个分号。 & 本身是一个有效的命令分隔符。例如,尝试 echo a &; echo b &; echo c &echo a & echo b & echo c &
  • 仅供参考:& 是一个控制操作符,在本例中用于创建简单命令的列表 i> 在后台中执行。
  • 谢谢这工作。但是假设如果我需要在后台运行时杀死这个进程,我该怎么做呢?
【解决方案2】:

使用 GNU Parallel,您可以:

parallel sh -x ::: script1.sh script2.sh script3.sh

如果脚本是可执行的,那么你甚至可以这样做:

parallel ::: script1.sh script2.sh script3.sh

观看介绍视频以了解更多信息:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

10秒安装:

$ (wget -O - pi.dk/3 || lynx -source pi.dk/3 || curl pi.dk/3/ || \
   fetch -o - http://pi.dk/3 ) > install.sh
$ sha1sum install.sh | grep 883c667e01eed62f975ad28b6d50e22a
12345678 883c667e 01eed62f 975ad28b 6d50e22a
$ md5sum install.sh | grep cc21b4c943fd03e93ae1ae49e28573c0
cc21b4c9 43fd03e9 3ae1ae49 e28573c0
$ sha512sum install.sh | grep da012ec113b49a54e705f86d51e784ebced224fdf
79945d9d 250b42a4 2067bb00 99da012e c113b49a 54e705f8 6d51e784 ebced224
fdff3f52 ca588d64 e75f6033 61bd543f d631f592 2f87ceb2 ab034149 6df84a35
$ bash install.sh

【讨论】:

    【解决方案3】:

    & 允许进程在后台运行。

    sh -x script1.sh &
    sh -x script2.sh &
    sh -x script3.sh &
    

    【讨论】:

    • 谢谢这工作。但是假设如果我需要在后台运行时终止此任务,我该怎么做?
    • @user1419563 您可以查找PID(进程ID)。通常我所做的是输入ps -ef | grep sh 来查找所有正在运行的shell 脚本。从那里你可以输入kill PID,这并不优雅但有效。
    【解决方案4】:

    不确定您要完成什么,但您可以创建一个调用这 3 个的脚本或通过在末尾添加“&”将它们发送到后台。

    sh -x script1.sh &
    sh -x script2.sh &
    sh -x script3.sh &
    

    【讨论】:

    • 您可以使用wait 等待他们三个都完成。
    • 谢谢这工作。但是假设如果我需要在后台运行时终止此任务,我该怎么做?
    • 当您使用“&”运行它时,它会返回一个进程 ID。运行 kill
    猜你喜欢
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多