redpoll

redpoll

Production server goes down after a while in ssh

Hi,
I have an app and I start the server with _build/prod/rel/app/bin/app start (mix releases) in a remote host. Ok, but after a while my connection with the ssh goes down and the server also dies. Athought i can increase my ssh time, how do we “stick” the command to the terminal and the server to be active even if my ssh is client_loop: send disconnect: Broken pipe ?

Take care, redpoll

Most Liked

Nicd

Nicd

Usually you do not start your application from a terminal/shell session, rather you use your init system to start and monitor the application. For example with Systemd you would write a unit file and instruct Systemd to start your application at startup using that unit file.

If you really want to start your application from an SSH session, use something like tmux that keeps your command running even if you close the SSH session.

JeyHey

JeyHey

What you try to do is very easy to achieve. Instead of:

_build/prod/rel/app/bin/app start

write:

_build/prod/rel/app/bin/app daemon

On a Freebsd system it starts the server in the background as a daemon which will stay alive when you end your ssh connection. I don’t know, though, if this is also the way to go on a Linux system.

vfsoraki

vfsoraki

For the record, you should use an init system (most probably you will have systemd). This is the correct way. Go learn this and you will have a much easier life later on.

You can use tmux or screen to keep your app running. Start an SSH session, run a tmux or screen session inside it, run your app inside it and detach from the tmux or screen session.

Also, as the dirtiest way:

_build/prod/rel/app/bin/app start >/dev/null 2>&1 &
disown %1

& at the end start the command in background, and redirection to /dev/null is for safety measures. Some apps will just crash if their “output” screen is closed. You can replace /dev/null with a file name so you can see your logs.

disown makes your background app detached from your current shell, so when you close your SSH session, your background app won’t be killed.

l00ker

l00ker

Yes. It works exactly the same on Linux.

Where Next?

Popular in Questions Top

srinivasu
How to handle excepions in elixir? Suppose i have A, B, C ,D, E modules. and each module has get() function. A.get() method will call th...
New
Werner
Hi, I’m using Ubuntu 18.04 and after updating to OTP-24.0 yesterday i have this warning when I run “mix local.hex”: 14:57:30.512 [warn] ...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New
Kagamiiiii
Student & New to elixir. Nice language. I want to convert a english character, e.g. “a”, which is stored in a variable, to it’s asci...
New
lk-geimfari
What is most correct way to open, read and parse JSON file with poison? For example if we have example.json file in root of some projec...
New
Fl4m3Ph03n1x
Background Let’s assume I have a typical GenServer that receives messages as requests, does some operation in a DB and returns responses....
New
gonzofish
I’m currently trying to understand how to join three tables using Ecto. All the examples I’ve seen use 2, so maybe I’m just missing somet...
New
chewm
Hi guys, nice to meet you to the whole forum, I’m new here, I’m trying to configure visual studio code for elixir, right now the intellis...
New
Fl4m3Ph03n1x
About me? ( if you have nothing better to do than reading about some random guy in the internet :stuck_out_tongue: ) Hello all, this is ...
New
wernerlaude
In AR this is so simple @articles = current_user.articles How to do in Ecto? def index(conn, _params) do current_user = conn.assig...
New

Other popular topics Top

senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
JorisKok
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New
malloryerik
Hi, this is for people who, like me, have had some friction using .html.heex templates in VSCode. The solution seems to be, in a hyphena...
New
KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 35421 110
New
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers' Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New

We're in Beta

About us Mission Statement