Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

On server A, I want to issue the following commands to Server B through ssh.

service network stop
sleep 5
service network start

The problem is because I issued a network 'stop', then my current ssh connection is lost as well. Therefore I cannot execute the succeeding commands (sleep 5 and service network start). Note that I cannot use (service network restart).

Does anyone have a workaround / solution for this?

share|improve this question

migrated from Jun 9 '11 at 17:09

This question came from our site for professional and enthusiast programmers.

why wouldn't you just use the "restart" option? why separately stop, and then start? – SpacemanSpiff Jun 10 '11 at 3:39
This is the only solution that works with modern Debian and Ubuntu versions: the service approach became "faulty" in both distros in the last years. – sorin Oct 23 '15 at 8:42

If you are doing this interactively, why not start a screen session? It would look something like this:


(scren shell starts)

service network restart

(SSH session disconnects, but the network restart continues in the screen session)

(Wait a few seconds)

(SSH back into the host once the restart finishes)

screen -r

(Reconnect to screen and check for errors)

IMHO, it's always scary to restart a network interface remotely. What happens when it doesn't come back up? Do you have a console or other means into the host if something bad happens?

share|improve this answer
I always operate through screen when working on remote machines. In case of unplanned disconnections it can be a life-saver. Also having several active shells in the same session can be handy. You might also like to look at tmux too, I've not used it myself but some prefer it to screen and its core function provides the same benefits. – David Spillett Jun 11 '11 at 14:51
Outdated: this does not work anymore: Failed to restart network.service: Unit network.service failed to load: No such file or directory. This works: – sorin Oct 23 '15 at 8:36
@sorin Which platform? This was assuming a RedHat variant. – Corey S. Feb 8 at 15:47

The exact commands available to do this vary based on Linux distribution. On option which is pretty standard is to schedule and "at" job for 5 seconds in the future to restart networking. Another one is to use the nohup command.

echo "sleep 5; /etc/init.d/networking start" | at now
nohup sh -c 'sleep 5; /etc/init.d/networking start' &

Other distributions have the daemon command to turn the resulting program into a daemon that is no longer associated with the shell.

share|improve this answer

A very simple way to do this is by using the and operator:

service network stop && sleep 5 && service network start
share|improve this answer
I'd prefer service network stop; sleep 5; service network start. If any of the commands fail it will execute the rest anyway. – ghm1014 Jun 9 '11 at 17:30
@ghm1014 Aye, that is also a very good alternate form. In fact, that is what I typically use. – Jordan S. Jones Jun 9 '11 at 18:42
What is the advantage over service network restart? – Caleb Jun 11 '11 at 14:25

Why not put it into a shell script and execute that via SSH?

share|improve this answer
If I put it in a script, then this will happen: on Server A, ssh server_B "execute_script". But won't I still lose my ssh connection from A to B? I am hoping that I can still preserve the ssh connection... – Carmen Jun 7 '11 at 23:49
You can't preserve the SSH session if you're stopping the network interface on a server. – Christopher Armstrong Jun 7 '11 at 23:55
so, it would look like my ssh session will hang while I am running that restart script. Is there a way to fake this? Eg. break out of the current ssh session and re-connect to it? – Carmen Jun 8 '11 at 0:10
Yeah, screen, as noted by today's answer. – mfinni Jun 11 '11 at 13:40
Yeah, that won't work. The "service network restart" actually calls a shell script, but internally it just runs stop then start. The ssh session gets cut off after the stop and the start never happens. Screen or nohup is the answer. Note, I've done this through screen and it actually preserved the existing ssh session for me (just a bit of lag), but it will not without screen. DANGER WILL ROBINSON: this is a good way to loose access to the remote system entirely (if you loose the connection, no debugging, you're just hosed). – Jared Jul 31 '14 at 17:57

Try this (maybe installing cron if needed):

$ at now+5min
at> service network stop
at> sleep 5
at> service network start
at> [control-D]

Then logout, wait 6 min and relogin

share|improve this answer
The at scheduler is not in the cron package on most distros, try looking for an at package directly. – Caleb Jun 11 '11 at 14:23

It sounds like you want either screen or tmux. These will allow you to preserve your session through the loss of a network connection. They're really quite useful, almost all of my terminal sessions are through screen.

share|improve this answer

This works with modern Debian and Ubuntu, while all the other answers will not work.

sudo ifdown --exclude=lo -a && sudo ifup --exclude=lo -a

Please keep in mind that it can take a little bit to get the interface back. In my case about ~15 seconds as I do have a bond.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.