aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuke Bakken <[email protected]>2014-12-24 12:11:32 -0800
committerLuke Bakken <[email protected]>2014-12-24 12:11:32 -0800
commit2e150d42e702fecd3b59eb97a708a53754db377b (patch)
tree674a3375efc21cc86da064eb63c175cba49fb698
parent8a64fd860e354cd3c32b5d6471052314bdd50674 (diff)
downloadrelx-2e150d42e702fecd3b59eb97a708a53754db377b.tar.gz
relx-2e150d42e702fecd3b59eb97a708a53754db377b.tar.bz2
relx-2e150d42e702fecd3b59eb97a708a53754db377b.zip
Use nodetool to get VM PID
Rather than use `ps`, `grep` and `awk` to get the `beam.smp` process id, use the `os:getpid` function. Also, provide a `pid` command to facilitate retrieving the VM's process id at a later time. Useful for when running via `monit`, for instance.
-rw-r--r--priv/templates/extended_bin.dtl28
1 files changed, 12 insertions, 16 deletions
diff --git a/priv/templates/extended_bin.dtl b/priv/templates/extended_bin.dtl
index 751b01f..85030ac 100644
--- a/priv/templates/extended_bin.dtl
+++ b/priv/templates/extended_bin.dtl
@@ -26,6 +26,11 @@ find_erts_dir() {
fi
}
+# Get node pid
+relx_get_pid() {
+ relx_nodetool rpcterms os getpid | sed -e 's/"//g'
+}
+
# Connect to a remote node
relx_rem_sh() {
# Generate a unique id used to allow multiple remsh to the same node
@@ -61,6 +66,7 @@ relx_escript() {
"$ERTS_DIR/bin/escript" "$ROOTDIR/$scriptpath" $@
}
+
# Output a start command for the last argument of run_erl
relx_start_command() {
printf "exec \"%s\" \"%s\"" "$RELEASE_ROOT_DIR/bin/$REL_NAME" \
@@ -194,22 +200,7 @@ case "$1" in
stop)
# Wait for the node to completely stop...
- case $(uname -s) in
- Linux|Darwin|FreeBSD|DragonFly|NetBSD|OpenBSD)
- # PID COMMAND
- PID=$(ps ax -o pid= -o command=|
- grep "$RELEASE_ROOT_DIR/.*/[b]eam"|awk '{print $1}')
- ;;
- SunOS)
- # PID COMMAND
- PID=$(ps -ef -o pid= -o args=|
- grep "$RELEASE_ROOT_DIR/.*/[b]eam"|awk '{print $1}')
- ;;
- CYGWIN*)
- # UID PID PPID TTY STIME COMMAND
- PID=$(ps -efw|grep "$RELEASE_ROOT_DIR/.*/[b]eam"|awk '{print $2}')
- ;;
- esac
+ PID="$(relx_get_pid)"
if ! relx_nodetool "stop"; then
exit $?
fi
@@ -233,6 +224,11 @@ case "$1" in
fi
;;
+ pid)
+ ## Get the VM's pid
+ echo "$(relx_get_pid)"
+ ;;
+
ping)
## See if the VM is alive
if ! relx_nodetool "ping"; then