2025-08-16 00:47:14 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
2025-08-18 05:01:37 +00:00
|
|
|
function p_invoke() {
|
2025-08-25 23:04:54 +00:00
|
|
|
valgrind --tool=callgrind \
|
2025-08-28 10:44:05 -07:00
|
|
|
--trace-children=yes \
|
2025-09-18 00:04:23 +00:00
|
|
|
--callgrind-out-file=/tmp/callgrind.out.%p \
|
2025-08-25 16:52:27 -07:00
|
|
|
--cache-sim=yes \
|
2025-09-18 00:04:23 +00:00
|
|
|
--instr-atstart=no \
|
2025-08-25 23:04:54 +00:00
|
|
|
/nginx/objs/nginx \
|
|
|
|
|
-e /tmp/error.log \
|
|
|
|
|
-c /nginx.conf \
|
2025-08-18 05:01:37 +00:00
|
|
|
-g "daemon off;"
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-16 00:47:14 +00:00
|
|
|
function invoke() {
|
2025-08-25 23:04:54 +00:00
|
|
|
/nginx/objs/nginx \
|
|
|
|
|
-e /tmp/error.log \
|
|
|
|
|
-c /nginx.conf \
|
|
|
|
|
-g "daemon off;" \
|
2025-08-16 00:47:14 +00:00
|
|
|
$@
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function sigint_handler() {
|
|
|
|
|
echo "sigint received. trigger again to kill."
|
|
|
|
|
invoke -s quit
|
|
|
|
|
trap - INT
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-18 04:00:32 +00:00
|
|
|
function sigcont_handler() {
|
|
|
|
|
echo "sigcont received. reloading nginx."
|
|
|
|
|
invoke -s reload
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-16 00:47:14 +00:00
|
|
|
trap 'sigint_handler' INT
|
2025-08-18 04:00:32 +00:00
|
|
|
trap 'sigcont_handler' CONT
|
2025-08-16 00:47:14 +00:00
|
|
|
|
2025-09-18 00:04:23 +00:00
|
|
|
# enable tracing
|
|
|
|
|
echo 1 > /proc/sys/kernel/yama/ptrace_scope
|
|
|
|
|
|
2025-08-18 05:01:37 +00:00
|
|
|
p_invoke &
|
2025-09-18 00:04:23 +00:00
|
|
|
|
2025-08-16 00:47:14 +00:00
|
|
|
wait
|
2025-09-18 00:04:23 +00:00
|
|
|
echo "NGINX down. waiting to find it again"
|
|
|
|
|
sleep 0.5
|
|
|
|
|
wait $(cat /tmp/pid)
|
|
|
|
|
echo "NGINX is GONE. waiting until signalled"
|
2025-08-16 00:47:14 +00:00
|
|
|
sleep infinity
|