Skip to content

bash 实现同样功能的蹩脚记录 #8

@clh021

Description

@clh021

使用脚本管理会有问题
脚本正常退出时
在部分系统(kylinV10)上每次都会有 root 进程残留
在 debian(KDE) 上 root 进程,每次都会被清理

#!/usr/bin/env bash 
# leehom Chen [email protected]
# 本脚本旨在启动整个检测套件服务,实现一键启动

SCRIPT_PATH=$(realpath "$0")
if [[ ${UID} == 0 ]] ; then
    sudo -E -H -u "${SUDO_USER}" "${SCRIPT_PATH}"
    exit
fi

ProjectPath="$(dirname "$SCRIPT_PATH")"
pushd "$ProjectPath" > /dev/null || return

# sudo kill -9 $(pgrep -f "${ProjectPath}/child.python" ) || :
# sudo kill -9 $(pgrep -f "${ProjectPath}/kit" ) || :

set -e

APP_DOMAIN="http://127.0.0.1:8001"
LITHIUM_BIN="$ProjectPath/lithium/lithium"

export LANG=en_US.UTF-8

sudo rm -rf ~/.cache/lithium_runtimes
sudo rm -rf ~/.cache/lithium_runtimes.xc-detection-kit/
sudo rm -rf ~/.cache/lnks.com
sudo rm -rf ~/.lnks.com

sudo "$ProjectPath/child.python" &
PID_P1=$!
"$ProjectPath/detect" &
PID_P2=$!
"$ProjectPath/main" &
PID_P3=$!
sudo "$ProjectPath/kit" &
PID_P4=$!

on_exit() {
	echo "clean on_exit, kill $PID_P1 $PID_P2 $PID_P3 $PID_P4"
	# kill -9 ${PID_P4} || :
	kill -9 ${PID_P3} || :
	kill -9 ${PID_P2} || :
	# kill -9 ${PID_P1} || :
}

trap on_exit EXIT SIGTERM SIGINT

BUS_ADDR=unix:path=/run/user/${SUDO_UID}/bus

# 启动桌面应用
export HARDINFO_BIN="$ProjectPath/hardinfo/build/hardinfo"
export LITHIUM_ENABLE_XPC_URLS="resource://;http://127;http://192"
export LITHIUM_VENDOR=".xc-detection-kit"
export LITHIUM_NAME=".xc-detection-kit"
DBUS_SESSION_BUS_ADDRESS=${BUS_ADDR} \
 ${LITHIUM_BIN} \
  "-debug" \
  "-title=检测套件" \
  "-width=1420" \
  "-height=936" \
  "-style=background:rgba(0,0,0,0); -moz-appearance: none;" \
  "-hideChrome" \
  "-winMode=normal" \
  "-positionX=250" \
  "-positionY=52" \
  "${APP_DOMAIN}"

function getcpid() {
    cpids=`pgrep -P $1|xargs`
#    echo "cpids=$cpids"
    for cpid in $cpids;
    do
        echo -n " $cpid"
        getcpid $cpid
    done
}

echo sudo kill -9"$(getcpid $PID_P4)"
echo sudo kill -9"$(getcpid $PID_P1)"
sudo kill -9"$(getcpid $PID_P4)" || :
sudo kill -9"$(getcpid $PID_P1)" || :

popd > /dev/null || return

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions