mirror of
https://github.com/openimsdk/open-im-server.git
synced 2026-01-11 23:57:12 +08:00
52 lines
1.3 KiB
Bash
Executable File
52 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
trap 'onCtrlC' INT
|
||
function onCtrlC () {
|
||
#捕获CTRL+C,当脚本被ctrl+c的形式终止时同时终止程序的后台进程
|
||
kill -9 ${do_sth_pid} ${progress_pid}
|
||
echo
|
||
echo 'Ctrl+C is captured'
|
||
exit 1
|
||
}
|
||
|
||
do_sth() {
|
||
#运行的主程序
|
||
echo "++++++++++++++++++++++++"
|
||
sleep 5
|
||
echo "++++++++++++++++++++++++"
|
||
|
||
sleep 10
|
||
}
|
||
|
||
progress() {
|
||
#进度条程序
|
||
local main_pid=$1
|
||
local length=20
|
||
local ratio=1
|
||
while [ "$(ps -p ${main_pid} | wc -l)" -ne "1" ] ; do
|
||
mark='>'
|
||
progress_bar=
|
||
for i in $(seq 1 "${length}"); do
|
||
if [ "$i" -gt "${ratio}" ] ; then
|
||
mark='-'
|
||
fi
|
||
progress_bar="${progress_bar}${mark}"
|
||
done
|
||
printf "Progress: ${progress_bar}\r"
|
||
ratio=$((ratio+1))
|
||
#ratio=`expr ${ratio} + 1`
|
||
if [ "${ratio}" -gt "${length}" ] ; then
|
||
ratio=1
|
||
fi
|
||
sleep 0.1
|
||
done
|
||
}
|
||
|
||
do_sth &
|
||
do_sth_pid=$(jobs -p | tail -1)
|
||
|
||
progress "${do_sth_pid}" &
|
||
progress_pid=$(jobs -p | tail -1)
|
||
|
||
wait "${do_sth_pid}"
|
||
printf "Progress: done \n" |