#!/bin/bash

# 1. /usr/bin/start_log 생성 및 실행 권한 부여
cat << 'EOF' > /usr/bin/start_log
#!/bin/bash

export HOME=/root
export XDG_CACHE_HOME=/root/.cache

TRACE_DIR=/sys/kernel/debug/tracing
LOG_FILE="/var/log/ftrace.log"
LOGROTATE_DIR="/etc/logrotate.d"

CRON_JOB_FTRACE="* * * * * /usr/sbin/logrotate -f /etc/logrotate.d/ftrace"

echo 0 > $TRACE_DIR/tracing_on
echo > $TRACE_DIR/trace

echo function_graph > $TRACE_DIR/current_tracer
echo '*aries*' > $TRACE_DIR/set_graph_function
echo 1 > $TRACE_DIR/tracing_on

mkdir -p "$(dirname "$LOG_FILE")"

while read -r line; do
    echo "$(date '+%Y-%m-%d %H:%M:%S') $line" >> "$LOG_FILE"
done < $TRACE_DIR/trace_pipe &

cat <<EOL > "$LOGROTATE_DIR/ftrace"
/var/log/ftrace.log {
    rotate 4
    maxsize 10M
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    create 0644 root root
    postrotate
        /usr/bin/pkill -HUP rsyslogd 2> /dev/null || true
    endscript
}
EOL

(crontab -l 2>/dev/null | grep -F "$CRON_JOB_FTRACE") || (crontab -l 2>/dev/null; echo "$CRON_JOB_FTRACE") | crontab -
EOF

chmod +x /usr/bin/start_log

# 2. /usr/bin/end_log 생성 및 실행 권한 부여
cat << 'EOF' > /usr/bin/end_log
#!/bin/bash

TRACE_DIR=/sys/kernel/debug/tracing
LOGROTATE_DIR="/etc/logrotate.d"

echo 0 > $TRACE_DIR/tracing_on
echo > $TRACE_DIR/trace

pkill -f "cat $TRACE_DIR/trace_pipe"

rm -f $LOGROTATE_DIR/ftrace
EOF

chmod +x /usr/bin/end_log

# 3. /etc/systemd/system/aries-logging.service 생성
cat << 'EOF' > /etc/systemd/system/aries-logging.service
[Unit]
Description=Start Aries Logging Scripts

[Service]
Type=oneshot
ExecStart=/usr/bin/start_log
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
EOF

# 4. /etc/systemd/system/aries-end-logging.service 생성
cat << 'EOF' > /etc/systemd/system/aries-end-logging.service
[Unit]
Description=End Aries Logging Scripts before shutdown/restart
Before=shutdown.target reboot.target halt.target
DefaultDependencies=no

[Service]
Type=oneshot
ExecStart=/usr/bin/end_log
RemainAfterExit=yes

[Install]
WantedBy=shutdown.target reboot.target halt.target
EOF

# 5. systemd 서비스 등록 및 실행
systemctl daemon-reload
systemctl enable aries-logging
systemctl enable aries-end-logging

