Files
snltty 6fd0758bf7 197
2025-12-09 11:33:37 +08:00

108 lines
2.4 KiB
Bash

#!/bin/bash
LOG_FILE="${TRIM_PKGVAR}/info.log"
PID_FILE="${TRIM_PKGVAR}/app.pid"
# write the command to start your program here
CMD="chmod +x ${TRIM_APPDEST}/server/linker;${TRIM_APPDEST}/server/linker"
log_msg() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> ${LOG_FILE}
}
start_process() {
if status; then
return 0
fi
log_msg "Starting process ..."
# run cmd to start process
bash -c "${CMD}" >> ${LOG_FILE} 2>&1 &
# write pid to pidfile
printf "%s" "$!" > ${PID_FILE}
# log_msg "CMD = ${CMD}"
# log_msg "pid = $!"
return 0
}
stop_process() {
log_msg "Stopping process ..."
if [ -r "${PID_FILE}" ]; then
pid=$(head -n 1 "${PID_FILE}" | tr -d '[:space:]')
log_msg "pid=${pid}"
if ! check_process "${pid}"; then
# process not exist, delete pidfile
rm -f "${PID_FILE}"
log_msg "remove pid file 1"
return
fi
log_msg "send TERM signal to PID:${pid}..."
kill -TERM ${pid} >> ${LOG_FILE} 2>&1
local count=0
while check_process "${pid}" && [ $count -lt 10 ]; do
sleep 1
count=$((count + 1))
log_msg "waiting process terminal... (${count}s/10s)"
done
if check_process "${pid}"; then
log_msg "send KILL signal to PID:${pid}..."
kill -KILL "${pid}"
sleep 1
rm -f "${PID_FILE}"
else
log_msg "process killed... "
fi
fi
return 0
}
check_process() {
local pid=$1
if kill -0 "${pid}" 2>/dev/null; then
return 0 # process exist
else
return 1 # process not exist
fi
}
status() {
if [ -f "${PID_FILE}" ]; then
pid=$(head -n 1 "${PID_FILE}" | tr -d '[:space:]')
if check_process "${pid}"; then
return 0
else
# Process is not running but pidfile exists - clean it up
rm -f "${PID_FILE}"
fi
fi
return 1
}
case $1 in
start)
# run start command. exit 0 if success, exit 1 if failed
start_process
;;
stop)
# run stop command. exit 0 if success, exit 1 if failed
stop_process
;;
status)
# check application status command. exit 0 if running, exit 3 if not running
if status; then
exit 0
else
exit 3
fi
;;
*)
exit 1
;;
esac