diff options
author | Luke Bakken <[email protected]> | 2014-12-24 12:11:32 -0800 |
---|---|---|
committer | Luke Bakken <[email protected]> | 2014-12-24 12:11:32 -0800 |
commit | 2e150d42e702fecd3b59eb97a708a53754db377b (patch) | |
tree | 674a3375efc21cc86da064eb63c175cba49fb698 | |
parent | 8a64fd860e354cd3c32b5d6471052314bdd50674 (diff) | |
download | relx-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.dtl | 28 |
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 |