【问题标题】:Run a command without making me wait运行命令而不让我等待
【发布时间】:2016-01-04 02:40:09
【问题描述】:

我是 Shell Script Linux 的新手。
我正在使用 Android 进行自动化测试,所以我想运行一些 shell 脚本,如下所示:

  1. 通过 adb (cmd1.sh) 开始录屏
  2. 进行场景测试,然后停止/保存记录的文件 (cmd2.sh)

不幸的是,当我运行 cmd1.sh 时,我必须等待 3 分钟才能运行 cmd2.sh。
这意味着我无法录制视频 :sad:
这是我的运行命令内容:

run.sh 文件内容:

./cmd1.sh $
./cmd2.sh

cmd1.sh文件内容:

adb shell screenrecord /sdcard/file.mp4

cmd2.sh文件内容:

calabash-android 运行 app.apk

最后,我打开终端然后运行命令:

./run.sh

当然,视频不能保存,因为cmd1.sh完成后,cmd2.sh运行!!!
在这一点上有人可以帮助我吗?
太感谢了 !

@Jrican 更新
这是我可以播放视频录制的手动步骤。
1.打开终端A
2.运行命令1(开始录屏脚本)
3.打开其他终端B然后运行命令2
4.命令2完成后,返回终端A然后Ctrl C。
5.确认/sdcard/file.mp4中的视频可以正常播放

我正在开发 MAC OSX Yosemite 10.10.5

【问题讨论】:

  • 这行得通吗?$ ./cmd1.sh & ./cmd2.sh
  • 谢谢!让我试试,然后尽快更新你!
  • @Jrican:我试过了。但仍然不起作用。错误:$:找不到命令
  • 不要把$符号放在前面,那只是为了代表命令提示符。
  • ./cmd1.sh & ./cmd2.sh

标签: linux shell terminal sh calabash


【解决方案1】:

简单的解决方案: run.sh 文件内容:

./cmd1.sh &          # run this command in the background
./cmd2.sh            # run this command to completion 
kill -SIGINT %1      # send the interrupt signal to the first command (ctrl+c)

稍微更正确的解决方案: run.sh 文件内容:

./cmd1.sh &            # run this command in the background
recPID=$!              # save the PID for this process for later
./cmd2.sh              # run this command to completion 
kill -SIGINT $recPID   # send the interrupt signal to the first command (ctrl+c)

【讨论】:

  • 我正在确认保存后无法播放视频的原因。我将更新我可以播放上述视频的其他方式。
【解决方案2】:

同时运行两个命令,然后在第二个命令完成后终止第一个命令的 PID:

#!/bin/sh

# Run first command in background:
./cmd1.sh & PID="$!"

# Run second command:
./cmd2.sh

# Kill the first command:
kill "$PID"

【讨论】:

  • 我不想在这里等。 cmd1 表示开始录制。 cmd2 表示做测试用例。最重要的是,我想录制视频。希望你能解决我的问题
  • 我去掉了时间延迟。虽然我觉得这仍然不能解决你的问题。我将尝试在我的 android 上安装这些软件包,看看是否可以重现该用例。
  • 谢谢。 Jrican 的回答已得到纠正。但是我还有另一个问题,我想在 Cmd 2 完成后杀死/停止 Cmd1 ???
  • 已编辑以便在第二个进程完成后终止第一个进程。
  • 我已经试过你的命令了。我的视频仍然无法播放。如何检查我是否已经完全杀死了 PID ?因为如果我按 CTR C 停止命令 1,我可以正常播放视频。我认为问题来自无法在保存文件之前杀死 cmd1
猜你喜欢
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
  • 2014-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多