超级

超级

我有一个脚本,它调用一个子脚本并尝试释放/放弃此脚本,以便调用该脚本的 Jenkins 可以成功完成。它似乎在命令行上释放了脚本,因此我可以在命令行(SSH)上注销或执行其他脚本,但 Jenkins 挂起等待释放的脚本完成。有办法解决这个问题吗?

超级

#!/bin/bash

/home/oracle/example/subscr.sh>temp-log.log</dev/null&
disown -h

echo "Done"
exit 0

订阅文件

#!/bin/bash

while [ false ]; do
  echo "Still Working"
  sleep "5s"
done

当执行此操作时,Jenkins 会无休止地挂起,直到我终止订阅执行。

答案1

我能想到两种方法可以做到这一点。

nohup

该命令nohup将运行一个完全脱离终端的子命令,并将其输出发送到文件:

$ nohup ls
appending output to nohup.out
$ cat nohup.out 
20111118153620
nohup.out

GNUscreen

GNU 屏幕可以在此上下文中发挥相同的功能,即运行命令并将输出发送到其他地方。它还具有额外的功能,即能够在稍后重新连接到进程的标准输入和标准输出,而无需在必要时重新启动它。(screen在文本缓冲区中很难演示。)

相关内容