在SSH断开连接后执行shell脚本的最后几行



我有一个shell script,用于在bash中的linux机器上设置网络设置,它将主要用于SSH。这是剧本的最后几行。

service network stop
rm -rf $NETWORKFILE
touch $NETWORKFILE
echo NETWORKING=yes > $NETWORKFILE
echo HOSTNAME=$HOSTNAME >> $NETWORKFILE
mv $ETHFILE /etc/sysconfig/network-scripts/ifcfg-eth0
service network start

正如你所看到的,要应用网络设置,它必须停止,然后启动网络,并在网络关闭时应用设置。这将导致SSH会话在我显示的代码的第一行断开连接,脚本因此停止,并且不应用设置。在启动shell脚本的SSH会话断开后,我如何让shell脚本运行最后几行?此外,在启动脚本时,它需要在代码中完成,而不是通过screennohup命令。

尝试通过重定向所有标准流并将其置于后台来完全断开脚本与终端的连接:

nohup脚本<dev/noll>script.log 2>&1&

此外,您还可以将"sleep 2"作为脚本的第一行,这样在将脚本放在后台之后,您可以在服务器强制关闭它之前快速干净地断开连接。这只是为了方便。

如果您获得了脚本PID,然后在停止网络后取消进程,那么您的脚本将在ssh会话断开后继续运行。

/脚本&

pid=$$disown-h$pid服务网络停止rm-rf$NETWORKFILE触摸$NETWORKFILEecho NETWORK=yes>$NETWORKFILEecho HOSTNAME=$HOSTNAME>>$NETWORKFILEmv$ETHFILE/etc/sysconfig/network-scripts/ifcfg-eth0服务网络启动

最新更新