观察1
logic.sh
#!/bin/bash
#get system metrics
#do stuff and echo it
echo "put metrics" | nc $ip $port
echo "Metrics $metrics"
run_logic.sh
#!/bin/bash
while true;do
sh logic.sh >> test.log 2>&1 &
sleep 60
done
start_logic.sh
#!/bin/bash
case $1 in
start)
#start the run_logic.sh
;;
stop)
#stop the run_logic.sh
;;
*)
echo "Invalid Option!"
exit 1
esac
exit0
观察2
logic.sh
#!bin/bash
while true;do
#do stuff and echo it
#get System Metrics and put it
echo $stuff
sleep 60
done
start_logic.sh
#!/bin/bash
case $1 in
start)
#do some stuff, check already started or not
sh logic.sh >> test.log 2>&1 &
;;
stop)
#do some stuff
#Kill the process
;;
*)
echo "Invalid Option!"
exit 1
esac
exit0
现在!,在观察1中,脚本在执行过程中死亡。我检查了日志,但没有看到任何错误消息。在观察 2 中,脚本运行良好(99% 良好!)。那么,观察1和观察2有什么区别,为什么脚本在第一种情况下会死掉?
答案1
在观察 1 中,您启动一个 shell,logic.sh
在后台每 60 秒执行一次 ( &
)。使用的命令netcat
应该发送数据到一个ip/端口,但是如果远程端没有人监听(默认为tcp),它将错误退出。