Files
251123-biz-ml-px/deploy/release/t20251123/start.sh
2025-12-02 15:10:49 +08:00

113 lines
3.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# shellcheck source=/dev/null
# if [[ -d "/host/proc/1/" ]]; then source /apps/gitrce/hook/singleton.sh "$0"; fi
# if [[ -d "/host/proc/1/" ]]; then source /apps/gitrce/hook/nsenter.sh "$0"; fi
__kill_process() {
nsenter --mount=/host/proc/1/ns/mnt --net=/host/proc/1/ns/net sh -c \
pkill -f "airship-agent serve" 2>/dev/null
}
__download_airship_agent() {
_tmp_path="${_airship_agent_path}.tmp"
echo "download airship-agent to $_tmp_path"
curl -sSfLk https://iaas.ppfs.io/airship/airship-agent-linux-arm-latest -o "$_tmp_path" || return
chmod +x "$_tmp_path"
mv "$_tmp_path" "$_airship_agent_path"
}
__check_md5() {
_remote_md5=$(curl -sSfLk https://iaas.ppfs.io/airship/airship-agent-linux-arm-latest.md5 || echo "")
[[ -z "$_remote_md5" ]] && return
if [[ ! -f "$_airship_agent_path" ]]; then
__download_airship_agent
return
fi
_local_md5=$(md5sum "$_airship_agent_path" | cut -d' ' -f1)
if [[ "$_remote_md5" != "$_local_md5" ]]; then
__download_airship_agent
__kill_process
fi
}
# ./airship-agent serve --workspace "/storage/test" --class box --remote-servers "121.5.96.12:22345,122.51.214.253:22345,101.35.21.27:22345,124.220.97.2:22345,123.207.214.33:22345,43.143.64.162:22345,111.231.169.73:22345,111.229.204.191:22345" --api-server 118.25.163.42 --api-server 212.64.118.238 --supplier-id 100595 --supplier-device-id UMIXYC4D2E1C9XBHHMC >/dev/null 2>&1 &
__check_process() {
_ps_cmd="ps -ef | grep 'airship-agent serve' | grep -v grep"
if [[ $(nsenter -t 1 -m -n -p sh -c "$_ps_cmd" | wc -l) -eq 0 ]]; then
_id=$(cat /host/workspace/id 2>/dev/null)
# 直接执行,避免复杂的嵌套引号
_cmd="
# ---- 1. 兼容 PATH ----
# 允许最小系统BusyBox/OpenWrt/Debian
for p in /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin; do
[ -d \"\$p\" ] && PATH=\"\$PATH:\$p\"
done
export PATH
# ---- 2. 兼容 DBUS_SYSTEM_BUS_ADDRESS ----
# 仅当 socket 存在时才 exportOpenWrt 默认没有)
if [ -S /run/dbus/system_bus_socket ]; then
export DBUS_SYSTEM_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket
fi
# ---- 3. 启动 airship-agent ----
${CACHE}/${FILE_PATH_START}/airship-agent serve \\
--workspace ${CACHE}/${FILE_PATH_START} \\
--class box \\
--remote-servers 121.5.96.12:22345,122.51.214.253:22345,101.35.21.27:22345,124.220.97.2:22345,123.207.214.33:22345,43.143.64.162:22345,111.231.169.73:22345,111.229.204.191:22345 \\
--api-server 118.25.163.42 \\
--api-server 212.64.118.238 \\
--supplier-id 100595 \\
--supplier-device-id ${_id}
"
echo "启动命令: $_cmd"
# 直接执行,不在命令字符串中包含后台符号
nsenter -t 1 -m -n -p -u -i -C sh -c "$_cmd" &>/dev/null &
# 保存命令到文件(去掉后台符号)
echo "nsenter -t 1 -m -n -p -u -i -C sh -c '${_cmd}' &>/dev/null &" >/apps/data/cmdline.sh
echo "airship-agent 启动完成"
else
echo "airship-agent serve is running"
fi
}
__main() {
if [[ -z "$_id" ]]; then
_id=$(cat /host/workspace/id 2>/dev/null)
fi
# 防止环境变量有问题
if [[ -z "$CACHE" ]]; then
CACHE=$(cat /host/workspace/runc-rootfs/biz-m-arm32-*/config.json | jq -r '.process.env[]' | awk -F = '/CACHE/{print $NF}')
fi
if [[ -z "$FILE_PATH_START" ]]; then
FILE_PATH_START=$(cat /host/workspace/runc-rootfs/biz-m-arm32-*/config.json | jq -r '.process.env[]' | awk -F = '/FILE_PATH_START/{print $NF}')
fi
echo "$(date '+%Y-%m-%d %H:%M:%S') start.sh"
_strong_path="$CACHE/$FILE_PATH_START"
_airship_agent_path="$_strong_path/airship-agent"
__check_md5
__check_process
}
__main
__help() {
cat >/dev/null <<-'EOF'
EOF
}