Terminating a --detached elixir (OS)-process

With a server running on MIX_ENV=prod PORT=4000 elixir --detached -S mix do compile, phx.server using the --detached flag, what command do I use to terminate the process to stop or restart it?

Assuming a UNIX-like system:

$ ps aux | grep elixir

to find the process-id of the OS-process that runs the Erlang VM that has loaded elixir and your phoenix application, and then

kill number

to stop it. number is the number in the second column of the output of ps aux (the first column containing the name of the unix-user that owns, i.e. started, the process).
Afterwards you can try ps aux | grep elixir again to make sure it is no longer there :slight_smile:.

In an actual production environment, it is advisable that you instead set up e.g. a systemd entry that manages the process, which makes it a lot easier to start/stop/restart/autostart-at-boot and monitor it.

3 Likes

If you give the node a name then you can connect to it from another node and send commands to it, that is actually how distillery’s release script works. :slight_smile:

2 Likes

do you have any sources for doing something like this? :slight_smile:

You just add a --name ...@... or --sname ... to expose it, then in an iex session you just Node.connect(...) the remote node, you can then even switch your shell to it instead of needing to rpc commands over, but in general just :rpc.whatever, call, cast, etc… You can check the erlang docs on the :rpc module for details. :slight_smile:

Or just look at the script distillery creates for you when you make a release. ^.^

1 Like