mirror of
https://github.com/snltty/linker.git
synced 2025-12-24 12:38:04 +08:00
108 lines
2.4 KiB
Bash
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 |