gpt4 book ai didi

java - 使用java在远程Linux机器上运行bash文件并将其保留在后台

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:04 24 4
gpt4 key购买 nike

我在远程 Linux 机器上有一个 shell 脚本,其中包含以下内容:

#!/bin/sh
for i in $(seq 1 10);
do
echo "CREATE TABLE ben$i (id NUMBER NOT NULL);
! sleep 30
select * from ben$i;
! sleep 30
DROP TABLE ben$i;" | sqlplus system/password &
done
wait

该脚本的名称是 ben.sh。

在java中,我想执行这个脚本并让脚本在后台执行它所做的事情。

我有一个成功执行脚本的命令:

sshshell.execute("su - oracle -c './ben.sh'");

我希望脚本仍然在远程 Linux 计算机上运行,​​并且我想在执行上述命令后立即关闭 ssh 连接,而不干扰脚本。

我想如果我在这个命令的末尾放一个&,如下所示:

sshshell.execute("su - oracle -c './ben.sh' &");

但是 java 程序仍然卡住并等待脚本完成

非常重要的注意事项:我不想使用线程或任何其他 ssh 连接。

我有什么选择?

最佳答案

使用nohup& 在后台运行脚本。

sshshell.execute("nohup su - oracle -c './ben.sh' &");

Nohup 是“No Hangups”的缩写。Nohup 是一个补充命令,它告诉 Linux 系统在启动另一个命令后不要停止它。这意味着即使启动它的用户注销,它也会继续运行直到完成。nohup 的语法如下:

nohup sh your-script.sh &

末尾的 & 将命令移至后台,释放您正在使用的终端。

关于java - 使用java在远程Linux机器上运行bash文件并将其保留在后台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58971530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com