在远程服务器上触发作业时阻止nohup输出

时间:2018-03-12 22:19:13

标签: linux ssh remote-server nohup

在远程服务器上运行脚本时,我需要阻止远程服务器的nohup输出显示在ssh服务器上。

我在命令行下面运行以在远程服务器上运行脚本。

ssh user@server.com "cd /cpmapps/soa/operations/bin/; ./restart_soa.sh stop"

但是当它运行时,它会在“远程服务器脚本”中无法预测地显示命令的nohup输出。以下是脚本的摘录,您可以看到该命令应该在后台运行。

  echo " Starting the weblogic Managed Server SOA"
nohup ./startManagedWebLogic.sh soa_server1 https://server:7002 & > soa.out 1>&2&
sleep 180
ps_count=`netstat -an | grep 7002 | egrep "LISTEN" |grep -v grep|wc -l`
echo ps_count $ps_count
if [ "$ps_count" -ne "0" ];then
echo "managed server is up"
echo "proceeding with starting BAM"
else
echo "Failed to start weblogic"
exit 1
fi

但是,当我在脚本所在的服务器上运行脚本时,它会按预期运行。如下图所示。

家庭服务器 Home Server

当我从远程服务器运行它时,它也显示命令的输出。如下图所示。

远程服务器 enter image description here

如何让它在远程服务器上运行的方式与在家庭服务器上运行的方式相同? 真的很感激任何帮助。

2 个答案:

答案 0 :(得分:1)

以这种方式调用您的脚本:

nohup ./startManagedWebLogic.sh soa_server1 https://server:7002 > soa.out 2>&1 &

这会将输出写入文件soa.out,而2>&1将所有STDERR作为STDOUT将其写入soa.out,最后&将在后台运行该作业。

同时检查此答案:https://stackoverflow.com/a/10408906/1135424

答案 1 :(得分:0)

另一种方法是将nohup重定向到null设备。 例如:nohup ./script.py> / dev / null&