Skip to content

Instantly share code, notes, and snippets.

@oskapt
Last active December 13, 2023 12:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save oskapt/055d474d7bfef32c49469c1b53e8225f to your computer and use it in GitHub Desktop.
Save oskapt/055d474d7bfef32c49469c1b53e8225f to your computer and use it in GitHub Desktop.
Netdata init script for Synology DSM
#!/bin/bash
# Install this as `/etc/rc.netdata` and call it from `/etc/rc.local`
# to have it executed on boot.
NETDATA_DIR=/opt/netdata
DAEMON=$NETDATA_DIR/bin/srv/netdata
TIMEOUT=30 # seconds to wait for netdata to exit
[ -x $DAEMON ] || exit 0
function get_pid() {
pid=$( ps ax | grep -v grep | grep -m 1 $DAEMON | awk '{ print $1 }' )
}
function check_netdata() {
count=1
while [ $count -lt $TIMEOUT ]; do
get_pid
if [ -z $pid ]; then
break
else
sleep 1
count=$(( $count + 1))
fi
done
if [ $count -eq $TIMEOUT ]; then
echo "Timeout exceeded waiting for netdata to exit."
echo "Use '$0 kill' to force netdata to exit."
exit 1
fi
}
function stop_netdata() {
get_pid
if [ "x$pid" != "x" ]; then
if [ "x$1" = "xforce" ]; then
kill -9 $pid
else
kill $pid
fi
else
echo "No running netdata found."
fi
}
function start_netdata() {
get_pid
if [ "x$pid" = "x" ]; then
echo "Starting Netdata."
$DAEMON
else
echo "Netdata already running with pid $pid"
fi
}
case "$1" in
start)
start_netdata
;;
stop)
echo "Shutting down Netdata."
stop_netdata
;;
restart)
echo "Shutting down Netdata."
stop_netdata
if [ "x$pid" != "x" ]; then
echo "Waiting maximum of $TIMEOUT seconds for netdata to exit."
fi
check_netdata
start_netdata
;;
kill)
echo "Killing netdata."
stop_netdata force
;;
status)
get_pid
if [ "x$pid" != "x" ]; then
echo "Netdata running with PID $pid"
else
echo "No running netdata found."
fi
;;
*)
echo "Usage: $0 {start|stop|kill|restart|status}"
exit 1
esac
exit 0
@oskapt
Copy link
Author

oskapt commented Dec 13, 2023

I agree that it's not likely to ever happen, since it would require that the grep command had a pid lower than the running netdata process. However, placing grep -v grep first in the chain changes "unlikely to happen" to "will never happen," and that seemed reasonable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment