gpt4 book ai didi

linux - pgrep defunct 进程重启服务

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:12 28 4
gpt4 key购买 nike

如果没有运行,我当前的 cronjob 将启动 beaver:

#!/bin/bash
pgrep -l -x beaver || /usr/sbin/service beaver start

我想修改它以在 beaver 失效时采取行动(通过重新启动 beaver 服务,如果失败则杀死它 (pkill -u beaver)

# ps -ef | grep [b]eaver
beaver 2890 1 0 Sep15 ? 00:11:27 /usr/bin/python /usr/local/bin/beaver -t sqs -c /etc/beaver/beaver.conf
beaver 2899 2890 0 Sep15 ? 00:03:01 [beaver] <defunct>
# pgrep -l -x beaver
2890 beaver
2899 beaver

建议?

最佳答案

你可以试试这个:

#!/bin/bash
START=false
readarray -t PIDS < <(exec pgrep -x beaver)

function stop_beaver {
/usr/sbin/service beaver stop
sleep 5s ## Optionally wait for processes to stop.
kill -s SIGTERM "${PIDS[@]}" ## Perhaps force another signal to them if it doesn't work with defuncts.
sleep 5s ## Optionally wait for processes to stop.
kill -s SIGKILL "${PIDS[@]}" ## Perhaps force another signal to them if it doesn't work with defuncts.
START=true
}
if [[ ${#PIDS[@]} -eq 0 ]]; then
echo "No beaver process was found."
START=true
elif [[ ${#PIDS[@]} -eq 1 ]]; then
echo "Processes found: ${PIDS[*]}"
echo "Only one beaver process found."
stop_beaver
elif ps -fp "${PIDS[@]}" | fgrep -F '<defunct>' >/dev/null; then
echo "Processes found: ${PIDS[*]}"
echo "Defunct beaver process found."
stop_beaver
else
echo "Processes found: ${PIDS[*]}"
fi
[[ $START == true ]] && /usr/sbin/service beaver start

关于linux - pgrep defunct 进程重启服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18855676/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com