首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要知道在bash脚本中disown命令的用途

需要知道在bash脚本中disown命令的用途
EN

Stack Overflow用户
提问于 2019-11-12 15:03:23
回答 1查看 49关注 0票数 0

下面的代码ping一组服务器,并检查它是正常运行还是停机。

如果我使用和不使用"disown“命令,我会得到不同的输出顺序。有没有人能解释一下发生了什么

111.111.111.229下跌。因此,该计算机将不会出现"server up“输出

带有Disown的代码

代码语言:javascript
复制
#set -vx
#!/bin/bash

check_server_status()
{
 printf "IP inside fun is $1 \n"
 ping -c 1 $1  > /dev/null
 [ $? -eq 0 ] && echo Server with IP $i is up
}


for i in 111.111.111.{229..230}
do
printf "IP is $i \n"
check_server_status $i & disown
done
exit

输出

代码语言:javascript
复制
IP is 111.111.111.229
IP is 111.111.111.230
IP inside fun is 111.111.111.230
IP inside fun is 111.111.111.229
Server with IP 111.111.111.230 is up

没有断绝关系的代码

代码语言:javascript
复制
#set -vx
#!/bin/bash

check_server_status()
{
 printf "IP inside fun is $1 \n"
 ping -c 1 $1  > /dev/null
 [ $? -eq 0 ] && echo Server with IP $i is up
}


for i in 111.111.111.{229..230}
do
printf "IP is $i \n"
check_server_status $i 
done
exit

输出

代码语言:javascript
复制
IP is 111.111.111.229
IP inside fun is 111.111.111.229
IP is 111.111.111.230
IP inside fun is 111.111.111.230
Server with IP 111.111.111.230 is up
EN

回答 1

Stack Overflow用户

发布于 2019-11-12 15:10:48

你有没有在没有否认的情况下尝试过,但&仍然在那一行的末尾?

我想你会发现,这种差异不是由断绝关系造成的,而是由这种性格造成的。与号告诉shell将命令放到后台,而不是等待它,这意味着两个ping操作可以并行发生。时间是不可预测的,所以完全有可能您首先启动的ping函数实际上会被第二次执行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58813571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档