我们遇到了各种可以做任何事情的客户 bash 脚本。我不关心它的作用,但我需要一种简单的方法来确定 .sh 脚本是否已完成,或者它是否仍在执行可能需要很多分钟的操作。脚本无法修改、重命名或移动。我们还需要能够将脚本输出的任何内容输出到 stdout;所以我们也不能 > null 。
我找到了有关此问题的各种帖子,但没有解决方案有效。我尝试创建一个简单的test.sh
脚本,其中仅包含 echo“Hello World”和 for do 循环,以便脚本永远不会停止,但我找不到一个工作解决方案来告诉我是的,脚本仍在运行。解决方案需要尽可能简单,例如单衬。我尝试了一些简单的事情
if $? -eq 0 then script finished successfully
但$?
总会返回一些数字,但这不会告诉您它是否已完成运行。
pgrep -l ./test.sh or pgrep -x ./test.sh
被发布为其他人的解决方案,但这对我不起作用。它只是转到命令提示符而不打印任何输出。
我创建的脚本test.sh
也不显示为进程。似乎只是显示-bash
而已。需要在 Unix/Linux 上工作。
我还能做什么来确定脚本仍在运行并且尚未返回命令提示符?
更新:也许这更好地解释了我的问题。当您打开 ssh 终端会话并运行可能需要 2 分钟或 20 分钟才能完成的脚本时,当您再次看到命令提示符时,您就知道它已完成。因此,在看到提示之前不要键入下一个命令。简单的。
但如果没有任何人工帮助,你怎么能做同样的事情呢?我怎样才能告诉Linux
- 从 Windows PC 打开到远程 PC 的 SSH 会话,然后
- 运行
./script.sh
并 whoami
仅当 2) 成功完成时才运行该命令?
所有这一切都无需编写和执行单独的脚本,或在步骤 2) 中对脚本进行更改?换句话说,只能从命令提示符处进行。那么你仍然可以使用多个 linux 命令,;
或者如果可能的话,在命令行上编写一个脚本而不保存它,然后执行这个命令(按 ENTER)?解释这一点有点困难,但希望现在更有意义。