Files
aigrammar/bin/service.sh
2025-07-11 19:10:34 +08:00

59 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
# 确保脚本使用一个参数
if [ $# -ne 1 ]; then
echo "Usage: $0 {start|stop|restart}"
exit 1
fi
# 获取当前脚本所在目录
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
program_name="aigrammar"
program_path="$script_dir/$program_name"
# 配置和日志目录
config_file="$script_dir/../conf/config.toml"
log_dir="$script_dir/../log"
log_file="$log_dir/output.log"
pid_file="$script_dir/${program_name}.pid"
# 确保日志目录存在
mkdir -p "$log_dir"
case "$1" in
start)
echo "Starting $program_name..."
if [ -f "$pid_file" ] && kill -0 $(cat "$pid_file") 2>/dev/null; then
echo "$program_name is already running."
exit 1
fi
nohup "$program_path" --config="$config_file" > "$log_file" 2>&1 &
echo $! > "$pid_file"
echo "$program_name started with PID $(cat "$pid_file")."
;;
stop)
echo "Stopping $program_name..."
if [ -f "$pid_file" ]; then
kill -TERM $(cat "$pid_file") 2>/dev/null && rm -f "$pid_file"
echo "$program_name stopped."
else
echo "No PID file found, attempting pkill..."
pkill -f "$program_name" && echo "$program_name stopped."
fi
;;
restart)
echo "Restarting $program_name..."
$0 stop
sleep 2
$0 start
;;
*)
echo "Unknown command: $1"
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac