blob: 8013112be0d16e22dd622e8dd608da1fdf551890 [file] [log] [blame]
xf.li335dd322025-09-08 00:22:56 -07001#!/bin/sh
2#
xf.liffccc8b2025-09-08 01:20:15 -07003# Run the daemon with CPU cgroup limitation
xf.li335dd322025-09-08 00:22:56 -07004#
5
6DAEMON="lynq-fota-backup-service"
7PIDFILE="/var/run/$DAEMON.pid"
8EXEC="/usr/bin/lynq-fota-backup"
9EXEC_ARGS=""
10
xf.liffccc8b2025-09-08 01:20:15 -070011# Cgroup配置
12CGROUP_NAME="fota_backup"
13CGROUP_PATH="/sys/fs/cgroup/cpu/$CGROUP_NAME"
14CPU_LIMIT="20000" # 20% CPU (100000 = 100%)
15
16# 创建Cgroup并设置CPU限制
17setup_cgroup() {
18 if [ ! -d "$CGROUP_PATH" ]; then
19 mkdir -p "$CGROUP_PATH"
20 echo "$CPU_LIMIT" > "$CGROUP_PATH/cpu.cfs_quota_us"
21 echo "100000" > "$CGROUP_PATH/cpu.cfs_period_us"
22 echo "Cgroup $CGROUP_NAME created with 20% CPU limit"
23 else
24 echo "Cgroup $CGROUP_NAME already exists, updating limit"
25 echo "$CPU_LIMIT" > "$CGROUP_PATH/cpu.cfs_quota_us"
26 fi
27}
28
29# 将进程添加到Cgroup
30add_to_cgroup() {
31 PID=$1
32 if [ -d "$CGROUP_PATH" ]; then
33 echo "$PID" > "$CGROUP_PATH/tasks"
34 echo -n "Process $PID added to Cgroup $CGROUP_NAME"
35 else
36 echo -n "ERROR: Cgroup $CGROUP_PATH does not exist!"
37 fi
38}
xf.li335dd322025-09-08 00:22:56 -070039
40start() {
xf.liffccc8b2025-09-08 01:20:15 -070041 sleep 600
42 echo "Starting $DAEMON with 20% CPU limit... "
43 setup_cgroup
44 start-stop-daemon --no-close -S -b -m -p $PIDFILE -x $EXEC -- $EXEC_ARGS
45 RETVAL=$?
46 if [ $RETVAL -eq 0 ]; then
47 PID=$(cat $PIDFILE 2>/dev/null)
48 if [ -n "$PID" ]; then
49 add_to_cgroup "$PID"
50 else
51 echo "WARNING: Failed to read PID from $PIDFILE"
52 fi
53 echo "OK"
54 else
55 echo "ERROR"
56 fi
xf.li335dd322025-09-08 00:22:56 -070057}
58
59stop() {
60 echo -n "Stopping $DAEMON... "
61 start-stop-daemon -K -p $PIDFILE
62 [ $? -eq 0 ] && echo "OK" || echo "ERROR"
63}
64
65restart() {
xf.liffccc8b2025-09-08 01:20:15 -070066 stop
67 start &
xf.li335dd322025-09-08 00:22:56 -070068}
69
70case "$1" in
xf.liffccc8b2025-09-08 01:20:15 -070071 start)
72 start &
73 ;;
74 stop|restart)
xf.li335dd322025-09-08 00:22:56 -070075 "$1"
76 ;;
xf.liffccc8b2025-09-08 01:20:15 -070077 *)
xf.li335dd322025-09-08 00:22:56 -070078 echo "Usage: $0 {start|stop|restart}"
79 exit 1
80esac
81
82exit $?
83
xf.liffccc8b2025-09-08 01:20:15 -070084