linux + 在其他 shell 上运行脚本,因为脚本卡住了 - 不返回 linux 提示符

linux + 在其他 shell 上运行脚本,因为脚本卡住了 - 不返回 linux 提示符

在我的 Linux 机器上我有二进制脚本(称为 transferNames.bin )

问题是当我运行 transferNames.bin 时,脚本卡住了并且没有返回到 Linux 提示符“#”,即使我等待 1 天或更长时间(因此我无法继续在 Linux 上工作,因为它卡住了)示例:

  [root@linux1 tmp]# ./transferNames.bin &  
                     Transferring..

还有不同的方法:

  [root@linux1 tmp]# ( /tmp/transferNames.bin ) &  
                     Transferring..

备注 - transferNames.bin 脚本运行正常,但我无法编辑此脚本

我的问题是,请建议我是否可以在其他 shell 上运行 ./transferNames.bin &
- 如何做到这一点?

为了避免卡住的问题?或者有其他解决方案可以在其他 shell 上运行 ./transferNames.bin &?或者还有其他意见吗?

答案1

我认为您的脚本正在等待来自标准输入的某些内容,就像 stew 所说的那样,因此当您使用 & 启动它时它会暂停,因为在后台时,标准输入已被 shell 关闭。

如果您需要在服务器上启动该脚本并使用该 shell 执行其他操作,或者只是关闭 PC 然后回家,您可以尝试使用 SCREEN 程序。它包含在大多数 Linux 发行版中,您可以像这样使用它:

screen

(新壳将打开)

/tmp/transferNames.bin

脚本将照常启动。现在您可以按下以下组合键:ctrl-a + d,然后您将与 SCREEN“分离”。现在您可以注销并回家,脚本仍将运行。当您回来并想要检查脚本的输出时,您可以登录服务器并启动以下命令:

screen -r

它将重新连接到该 SCREEN 会话,就像什么都没有发生过一样。

希望这可以帮助

相关内容