59 lines
1.5 KiB
Bash
Executable File
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
|