How to supervise and automatically restart a process? Announcing the arrival of Valued...
Any stored/leased 737s that could substitute for grounded MAXs?
How can I list files in reverse time order by a command and pass them as arguments to another command?
Did John Wesley plagiarize Matthew Henry...?
Adapting the Chinese Remainder Theorem (CRT) for integers to polynomials
What is the proper term for etching or digging of wall to hide conduit of cables
Why did Bronn offer to be Tyrion Lannister's champion in trial by combat?
Does the universe have a fixed centre of mass?
Does the transliteration of 'Dravidian' exist in Hindu scripture? Does 'Dravida' refer to a Geographical area or an ethnic group?
Is it OK to use the testing sample to compare algorithms?
Understanding piped commands in GNU/Linux
How does TikZ render an arc?
newbie Q : How to read an output file in one command line
malloc in main() or malloc in another function: allocating memory for a struct and its members
How to make an animal which can only breed for a certain number of generations?
Why do C and C++ allow the expression (int) + 4*5;
French equivalents of おしゃれは足元から (Every good outfit starts with the shoes)
Is the time—manner—place ordering of adverbials an oversimplification?
Can the Haste spell grant both a Beast Master ranger and their animal companion extra attacks?
How do I say "this must not happen"?
An isoperimetric-type inequality inside a cube
The test team as an enemy of development? And how can this be avoided?
In musical terms, what properties are varied by the human voice to produce different words / syllables?
Besides transaction validation, are there any other uses of the Script language in Bitcoin
Should man-made satellites feature an intelligent inverted "cow catcher"?
How to supervise and automatically restart a process?
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)How to have a process automatically restartcannot get upstart to run user jobRunning PHP-CLI serverHow can I disable avahi-daemon?Why upstart documentation prevents me from using respawnHow do I stop the NetworkManager in Ubuntu 13.10 without using the service command?Daemonize process with autostartSoftware works when run manually through the terminal but not as an Upstart serviceHow to run an executable file (web app) 24/7 and restart automatically when it breaks down?Can't kill process and uninstall packageWhy does systemd stop my service but not restart it?How to enable user's systemd timers and services for Grive2?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}
I want to have a process which will be restarted if it crashes. I googled a bit and found that an easy solution is to use daemontools.
I didn't understand how to configure it.
- What is the easiest way to acomplish such a functionality?
- How to configure it?
services
add a comment |
I want to have a process which will be restarted if it crashes. I googled a bit and found that an easy solution is to use daemontools.
I didn't understand how to configure it.
- What is the easiest way to acomplish such a functionality?
- How to configure it?
services
add a comment |
I want to have a process which will be restarted if it crashes. I googled a bit and found that an easy solution is to use daemontools.
I didn't understand how to configure it.
- What is the easiest way to acomplish such a functionality?
- How to configure it?
services
I want to have a process which will be restarted if it crashes. I googled a bit and found that an easy solution is to use daemontools.
I didn't understand how to configure it.
- What is the easiest way to acomplish such a functionality?
- How to configure it?
services
services
edited Feb 5 '13 at 12:06
gertvdijk
51.5k18145240
51.5k18145240
asked Feb 5 '13 at 12:02
opc0deopc0de
2871410
2871410
add a comment |
add a comment |
6 Answers
6
active
oldest
votes
This answer applies to Ubuntu versions with Upstart (<= 14.10). Use another approach for versions with Systemd (>= 15.04).
It seems you're looking for a functionality already provided in Ubuntu with Upstart. The respawn
stanza in the configuration will do exactly what you need. I would recommend against the use of a less standard way of dealing with this.
Without more details about the process you're trying to manage with it, it's hard to say what the configuration should look like. It depends on whether it forks and puts itself in the background for example. The Upstart documentation on the respawn
stanza should give you more information.
Unfortunately, it's not yet possible to run User Jobs properly: cannot get upstart to run user job
Example
Let's assume we want to keep the Calculator app running, even when it's being killed with fire (signal 9).
Create a configuration file in
/etc/init/calculator.conf
(based on this article):
#!upstart
description "Calculator"
# Start job via the daemon control script. Replace "gert" with your username.
exec su -l gert -c 'export DISPLAY=:0; /usr/bin/gnome-calculator'
# Restart the process if it dies with a signal
# or exit code not given by the 'normal exit' stanza.
respawn
# Give up if restart occurs 10 times in 90 seconds.
respawn limit 10 90
Start it by running
sudo start calculator
It opens on your current display (
:0
) and enjoy the awesomeness by seeing it restarting after closing it.
Identify the process ID, e.g. by doing
ps aux | grep calculator
:
gert 13695 0.2 0.4 349744 16460 ? Sl 13:38 0:00 /usr/bin/gnome-calculator
Kill it with fire.
sudo kill -9 13695
Watch it reappearing:
gert 16059 4.6 0.4 349736 16448 ? Sl 13:40 0:00 /usr/bin/gnome-calculator
Note that this will be more elegant with the plans for the Ubuntu 13.04 plans with proper User Job support.
I get unknown job when i try to start it ? any ideea . i have placed the file in /etc/init
– opc0de
Feb 5 '13 at 13:19
@opc0de The name of the fileservicename.conf
has to match the command to startstart servicename
. I suspect you have chosen a different name.
– gertvdijk
Feb 5 '13 at 13:23
nope, it matches but I didn't follow your example so i think I might have an syntax error.
– opc0de
Feb 5 '13 at 13:26
@opc0de Well, start by explaining more about what you're trying to accomplish in the question: what kind of application/process and how you run it for example, as well as the details about your current attempt.
– gertvdijk
Feb 5 '13 at 15:18
Solved with your example my mistake was that i probably had a mistake into the exec statament. Thanks for your help!
– opc0de
Feb 5 '13 at 17:58
add a comment |
An extremely simple tool that can accomplish the same effect without needing configuration is immortal
: https://immortal.run/
Simply execute the command like this:
immortal <cmd>
It will run in the background and restart automatically if it exits.
immortalctl
: View the status of running jobs. There is aname
column which will be printed here, you can use this to refer to the job with other control commands.
immortalctl stop <name>
: Stops monitoring the job with the given name (it will not be automatically restarted, but the current process will continue to execute)
immortalctl -k <name>
: Sends SIGKILL to the current process.
immortalctl exit <name>
: Stops monitoring the job with the given name and removes it from the list of jobs.
1
Thanks, this worked great for my use case in 16.04. Putting this in my bag of useful tools.
– Quentin Skousen
Jun 13 '17 at 16:30
2
Indeed, this looks more lightweight than upstart/respawn.
– Sridhar-Sarnobat
Jul 26 '17 at 5:14
Is there a way to get it to displaystdout
andstderr
in the foreground?
– David S.
Aug 7 '17 at 17:24
I'm not aware of one, since it's usually used to run a process in the background. However, you can useimmortalctl -l out.log <cmd> && tail -f out.log
to achieve the same effect.
– extropic-engine
Aug 8 '17 at 18:53
@DavidS. you could get a combined log or have stdout and stderr immortal.run/post/stderr
– nbari
Nov 11 '17 at 15:20
|
show 2 more comments
There is a way without "Upstart". The keyword is "inittab" :-). Although that's a file not usually altered from default, it can be used to achieve the desired respawning on SYSV machines.
I don't understand why someone REJECTED this solution. If you don't understand it, just google it; it's pointless to cut and paste here the man pages of initttab, you can read them yourself on your system! just type "man inittab"...
– cepal67
Jun 16 '15 at 14:26
13
High quality answers detail more than "use this, figure it out on your own" :)
– Seth♦
Jun 17 '15 at 0:13
add a comment |
ps-watcher is a tool that watches which processes are running and executes an action on defined circumstances. Let’s install it:
apt-get install ps-watcher
See the bottom of Running HHVM with fallback to PHP-FPM for details - this has worked well for me.
Since it's not very long please add a summary of the code instead of the article because only a very short section applies to this question.
– derHugo
Sep 19 '17 at 5:48
add a comment |
Startup and respawning processes are managed by "systemd" since Ubuntu 15.04, a good introduction can be found here
https://www.digitalocean.com/community/tutorials/systemd-essentials-working-with-services-units-and-the-journal
an example that get you started is available on
https://www.devdungeon.com/content/creating-systemd-service-files
This approach supersedes older ones based on /etc/inittab and upstart.
add a comment |
If you don't need daemon/service/background process functionality and just want to do it in the console then create a file called autorestart.sh
:
#!/bin/bash
while [ 1 ]; do
some_command
done
Then ./autorestart.sh
will automatically restart some_command
if it exits or crashes. CTRL-C breaks the loop and quits the program cleanly.
Tested on Ubuntu 18.04.
New contributor
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "89"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f251577%2fhow-to-supervise-and-automatically-restart-a-process%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
6 Answers
6
active
oldest
votes
6 Answers
6
active
oldest
votes
active
oldest
votes
active
oldest
votes
This answer applies to Ubuntu versions with Upstart (<= 14.10). Use another approach for versions with Systemd (>= 15.04).
It seems you're looking for a functionality already provided in Ubuntu with Upstart. The respawn
stanza in the configuration will do exactly what you need. I would recommend against the use of a less standard way of dealing with this.
Without more details about the process you're trying to manage with it, it's hard to say what the configuration should look like. It depends on whether it forks and puts itself in the background for example. The Upstart documentation on the respawn
stanza should give you more information.
Unfortunately, it's not yet possible to run User Jobs properly: cannot get upstart to run user job
Example
Let's assume we want to keep the Calculator app running, even when it's being killed with fire (signal 9).
Create a configuration file in
/etc/init/calculator.conf
(based on this article):
#!upstart
description "Calculator"
# Start job via the daemon control script. Replace "gert" with your username.
exec su -l gert -c 'export DISPLAY=:0; /usr/bin/gnome-calculator'
# Restart the process if it dies with a signal
# or exit code not given by the 'normal exit' stanza.
respawn
# Give up if restart occurs 10 times in 90 seconds.
respawn limit 10 90
Start it by running
sudo start calculator
It opens on your current display (
:0
) and enjoy the awesomeness by seeing it restarting after closing it.
Identify the process ID, e.g. by doing
ps aux | grep calculator
:
gert 13695 0.2 0.4 349744 16460 ? Sl 13:38 0:00 /usr/bin/gnome-calculator
Kill it with fire.
sudo kill -9 13695
Watch it reappearing:
gert 16059 4.6 0.4 349736 16448 ? Sl 13:40 0:00 /usr/bin/gnome-calculator
Note that this will be more elegant with the plans for the Ubuntu 13.04 plans with proper User Job support.
I get unknown job when i try to start it ? any ideea . i have placed the file in /etc/init
– opc0de
Feb 5 '13 at 13:19
@opc0de The name of the fileservicename.conf
has to match the command to startstart servicename
. I suspect you have chosen a different name.
– gertvdijk
Feb 5 '13 at 13:23
nope, it matches but I didn't follow your example so i think I might have an syntax error.
– opc0de
Feb 5 '13 at 13:26
@opc0de Well, start by explaining more about what you're trying to accomplish in the question: what kind of application/process and how you run it for example, as well as the details about your current attempt.
– gertvdijk
Feb 5 '13 at 15:18
Solved with your example my mistake was that i probably had a mistake into the exec statament. Thanks for your help!
– opc0de
Feb 5 '13 at 17:58
add a comment |
This answer applies to Ubuntu versions with Upstart (<= 14.10). Use another approach for versions with Systemd (>= 15.04).
It seems you're looking for a functionality already provided in Ubuntu with Upstart. The respawn
stanza in the configuration will do exactly what you need. I would recommend against the use of a less standard way of dealing with this.
Without more details about the process you're trying to manage with it, it's hard to say what the configuration should look like. It depends on whether it forks and puts itself in the background for example. The Upstart documentation on the respawn
stanza should give you more information.
Unfortunately, it's not yet possible to run User Jobs properly: cannot get upstart to run user job
Example
Let's assume we want to keep the Calculator app running, even when it's being killed with fire (signal 9).
Create a configuration file in
/etc/init/calculator.conf
(based on this article):
#!upstart
description "Calculator"
# Start job via the daemon control script. Replace "gert" with your username.
exec su -l gert -c 'export DISPLAY=:0; /usr/bin/gnome-calculator'
# Restart the process if it dies with a signal
# or exit code not given by the 'normal exit' stanza.
respawn
# Give up if restart occurs 10 times in 90 seconds.
respawn limit 10 90
Start it by running
sudo start calculator
It opens on your current display (
:0
) and enjoy the awesomeness by seeing it restarting after closing it.
Identify the process ID, e.g. by doing
ps aux | grep calculator
:
gert 13695 0.2 0.4 349744 16460 ? Sl 13:38 0:00 /usr/bin/gnome-calculator
Kill it with fire.
sudo kill -9 13695
Watch it reappearing:
gert 16059 4.6 0.4 349736 16448 ? Sl 13:40 0:00 /usr/bin/gnome-calculator
Note that this will be more elegant with the plans for the Ubuntu 13.04 plans with proper User Job support.
I get unknown job when i try to start it ? any ideea . i have placed the file in /etc/init
– opc0de
Feb 5 '13 at 13:19
@opc0de The name of the fileservicename.conf
has to match the command to startstart servicename
. I suspect you have chosen a different name.
– gertvdijk
Feb 5 '13 at 13:23
nope, it matches but I didn't follow your example so i think I might have an syntax error.
– opc0de
Feb 5 '13 at 13:26
@opc0de Well, start by explaining more about what you're trying to accomplish in the question: what kind of application/process and how you run it for example, as well as the details about your current attempt.
– gertvdijk
Feb 5 '13 at 15:18
Solved with your example my mistake was that i probably had a mistake into the exec statament. Thanks for your help!
– opc0de
Feb 5 '13 at 17:58
add a comment |
This answer applies to Ubuntu versions with Upstart (<= 14.10). Use another approach for versions with Systemd (>= 15.04).
It seems you're looking for a functionality already provided in Ubuntu with Upstart. The respawn
stanza in the configuration will do exactly what you need. I would recommend against the use of a less standard way of dealing with this.
Without more details about the process you're trying to manage with it, it's hard to say what the configuration should look like. It depends on whether it forks and puts itself in the background for example. The Upstart documentation on the respawn
stanza should give you more information.
Unfortunately, it's not yet possible to run User Jobs properly: cannot get upstart to run user job
Example
Let's assume we want to keep the Calculator app running, even when it's being killed with fire (signal 9).
Create a configuration file in
/etc/init/calculator.conf
(based on this article):
#!upstart
description "Calculator"
# Start job via the daemon control script. Replace "gert" with your username.
exec su -l gert -c 'export DISPLAY=:0; /usr/bin/gnome-calculator'
# Restart the process if it dies with a signal
# or exit code not given by the 'normal exit' stanza.
respawn
# Give up if restart occurs 10 times in 90 seconds.
respawn limit 10 90
Start it by running
sudo start calculator
It opens on your current display (
:0
) and enjoy the awesomeness by seeing it restarting after closing it.
Identify the process ID, e.g. by doing
ps aux | grep calculator
:
gert 13695 0.2 0.4 349744 16460 ? Sl 13:38 0:00 /usr/bin/gnome-calculator
Kill it with fire.
sudo kill -9 13695
Watch it reappearing:
gert 16059 4.6 0.4 349736 16448 ? Sl 13:40 0:00 /usr/bin/gnome-calculator
Note that this will be more elegant with the plans for the Ubuntu 13.04 plans with proper User Job support.
This answer applies to Ubuntu versions with Upstart (<= 14.10). Use another approach for versions with Systemd (>= 15.04).
It seems you're looking for a functionality already provided in Ubuntu with Upstart. The respawn
stanza in the configuration will do exactly what you need. I would recommend against the use of a less standard way of dealing with this.
Without more details about the process you're trying to manage with it, it's hard to say what the configuration should look like. It depends on whether it forks and puts itself in the background for example. The Upstart documentation on the respawn
stanza should give you more information.
Unfortunately, it's not yet possible to run User Jobs properly: cannot get upstart to run user job
Example
Let's assume we want to keep the Calculator app running, even when it's being killed with fire (signal 9).
Create a configuration file in
/etc/init/calculator.conf
(based on this article):
#!upstart
description "Calculator"
# Start job via the daemon control script. Replace "gert" with your username.
exec su -l gert -c 'export DISPLAY=:0; /usr/bin/gnome-calculator'
# Restart the process if it dies with a signal
# or exit code not given by the 'normal exit' stanza.
respawn
# Give up if restart occurs 10 times in 90 seconds.
respawn limit 10 90
Start it by running
sudo start calculator
It opens on your current display (
:0
) and enjoy the awesomeness by seeing it restarting after closing it.
Identify the process ID, e.g. by doing
ps aux | grep calculator
:
gert 13695 0.2 0.4 349744 16460 ? Sl 13:38 0:00 /usr/bin/gnome-calculator
Kill it with fire.
sudo kill -9 13695
Watch it reappearing:
gert 16059 4.6 0.4 349736 16448 ? Sl 13:40 0:00 /usr/bin/gnome-calculator
Note that this will be more elegant with the plans for the Ubuntu 13.04 plans with proper User Job support.
edited Apr 13 '17 at 12:24
Community♦
1
1
answered Feb 5 '13 at 12:11
gertvdijkgertvdijk
51.5k18145240
51.5k18145240
I get unknown job when i try to start it ? any ideea . i have placed the file in /etc/init
– opc0de
Feb 5 '13 at 13:19
@opc0de The name of the fileservicename.conf
has to match the command to startstart servicename
. I suspect you have chosen a different name.
– gertvdijk
Feb 5 '13 at 13:23
nope, it matches but I didn't follow your example so i think I might have an syntax error.
– opc0de
Feb 5 '13 at 13:26
@opc0de Well, start by explaining more about what you're trying to accomplish in the question: what kind of application/process and how you run it for example, as well as the details about your current attempt.
– gertvdijk
Feb 5 '13 at 15:18
Solved with your example my mistake was that i probably had a mistake into the exec statament. Thanks for your help!
– opc0de
Feb 5 '13 at 17:58
add a comment |
I get unknown job when i try to start it ? any ideea . i have placed the file in /etc/init
– opc0de
Feb 5 '13 at 13:19
@opc0de The name of the fileservicename.conf
has to match the command to startstart servicename
. I suspect you have chosen a different name.
– gertvdijk
Feb 5 '13 at 13:23
nope, it matches but I didn't follow your example so i think I might have an syntax error.
– opc0de
Feb 5 '13 at 13:26
@opc0de Well, start by explaining more about what you're trying to accomplish in the question: what kind of application/process and how you run it for example, as well as the details about your current attempt.
– gertvdijk
Feb 5 '13 at 15:18
Solved with your example my mistake was that i probably had a mistake into the exec statament. Thanks for your help!
– opc0de
Feb 5 '13 at 17:58
I get unknown job when i try to start it ? any ideea . i have placed the file in /etc/init
– opc0de
Feb 5 '13 at 13:19
I get unknown job when i try to start it ? any ideea . i have placed the file in /etc/init
– opc0de
Feb 5 '13 at 13:19
@opc0de The name of the file
servicename.conf
has to match the command to start start servicename
. I suspect you have chosen a different name.– gertvdijk
Feb 5 '13 at 13:23
@opc0de The name of the file
servicename.conf
has to match the command to start start servicename
. I suspect you have chosen a different name.– gertvdijk
Feb 5 '13 at 13:23
nope, it matches but I didn't follow your example so i think I might have an syntax error.
– opc0de
Feb 5 '13 at 13:26
nope, it matches but I didn't follow your example so i think I might have an syntax error.
– opc0de
Feb 5 '13 at 13:26
@opc0de Well, start by explaining more about what you're trying to accomplish in the question: what kind of application/process and how you run it for example, as well as the details about your current attempt.
– gertvdijk
Feb 5 '13 at 15:18
@opc0de Well, start by explaining more about what you're trying to accomplish in the question: what kind of application/process and how you run it for example, as well as the details about your current attempt.
– gertvdijk
Feb 5 '13 at 15:18
Solved with your example my mistake was that i probably had a mistake into the exec statament. Thanks for your help!
– opc0de
Feb 5 '13 at 17:58
Solved with your example my mistake was that i probably had a mistake into the exec statament. Thanks for your help!
– opc0de
Feb 5 '13 at 17:58
add a comment |
An extremely simple tool that can accomplish the same effect without needing configuration is immortal
: https://immortal.run/
Simply execute the command like this:
immortal <cmd>
It will run in the background and restart automatically if it exits.
immortalctl
: View the status of running jobs. There is aname
column which will be printed here, you can use this to refer to the job with other control commands.
immortalctl stop <name>
: Stops monitoring the job with the given name (it will not be automatically restarted, but the current process will continue to execute)
immortalctl -k <name>
: Sends SIGKILL to the current process.
immortalctl exit <name>
: Stops monitoring the job with the given name and removes it from the list of jobs.
1
Thanks, this worked great for my use case in 16.04. Putting this in my bag of useful tools.
– Quentin Skousen
Jun 13 '17 at 16:30
2
Indeed, this looks more lightweight than upstart/respawn.
– Sridhar-Sarnobat
Jul 26 '17 at 5:14
Is there a way to get it to displaystdout
andstderr
in the foreground?
– David S.
Aug 7 '17 at 17:24
I'm not aware of one, since it's usually used to run a process in the background. However, you can useimmortalctl -l out.log <cmd> && tail -f out.log
to achieve the same effect.
– extropic-engine
Aug 8 '17 at 18:53
@DavidS. you could get a combined log or have stdout and stderr immortal.run/post/stderr
– nbari
Nov 11 '17 at 15:20
|
show 2 more comments
An extremely simple tool that can accomplish the same effect without needing configuration is immortal
: https://immortal.run/
Simply execute the command like this:
immortal <cmd>
It will run in the background and restart automatically if it exits.
immortalctl
: View the status of running jobs. There is aname
column which will be printed here, you can use this to refer to the job with other control commands.
immortalctl stop <name>
: Stops monitoring the job with the given name (it will not be automatically restarted, but the current process will continue to execute)
immortalctl -k <name>
: Sends SIGKILL to the current process.
immortalctl exit <name>
: Stops monitoring the job with the given name and removes it from the list of jobs.
1
Thanks, this worked great for my use case in 16.04. Putting this in my bag of useful tools.
– Quentin Skousen
Jun 13 '17 at 16:30
2
Indeed, this looks more lightweight than upstart/respawn.
– Sridhar-Sarnobat
Jul 26 '17 at 5:14
Is there a way to get it to displaystdout
andstderr
in the foreground?
– David S.
Aug 7 '17 at 17:24
I'm not aware of one, since it's usually used to run a process in the background. However, you can useimmortalctl -l out.log <cmd> && tail -f out.log
to achieve the same effect.
– extropic-engine
Aug 8 '17 at 18:53
@DavidS. you could get a combined log or have stdout and stderr immortal.run/post/stderr
– nbari
Nov 11 '17 at 15:20
|
show 2 more comments
An extremely simple tool that can accomplish the same effect without needing configuration is immortal
: https://immortal.run/
Simply execute the command like this:
immortal <cmd>
It will run in the background and restart automatically if it exits.
immortalctl
: View the status of running jobs. There is aname
column which will be printed here, you can use this to refer to the job with other control commands.
immortalctl stop <name>
: Stops monitoring the job with the given name (it will not be automatically restarted, but the current process will continue to execute)
immortalctl -k <name>
: Sends SIGKILL to the current process.
immortalctl exit <name>
: Stops monitoring the job with the given name and removes it from the list of jobs.
An extremely simple tool that can accomplish the same effect without needing configuration is immortal
: https://immortal.run/
Simply execute the command like this:
immortal <cmd>
It will run in the background and restart automatically if it exits.
immortalctl
: View the status of running jobs. There is aname
column which will be printed here, you can use this to refer to the job with other control commands.
immortalctl stop <name>
: Stops monitoring the job with the given name (it will not be automatically restarted, but the current process will continue to execute)
immortalctl -k <name>
: Sends SIGKILL to the current process.
immortalctl exit <name>
: Stops monitoring the job with the given name and removes it from the list of jobs.
edited May 17 '17 at 23:38
answered May 16 '17 at 18:58
extropic-engineextropic-engine
23127
23127
1
Thanks, this worked great for my use case in 16.04. Putting this in my bag of useful tools.
– Quentin Skousen
Jun 13 '17 at 16:30
2
Indeed, this looks more lightweight than upstart/respawn.
– Sridhar-Sarnobat
Jul 26 '17 at 5:14
Is there a way to get it to displaystdout
andstderr
in the foreground?
– David S.
Aug 7 '17 at 17:24
I'm not aware of one, since it's usually used to run a process in the background. However, you can useimmortalctl -l out.log <cmd> && tail -f out.log
to achieve the same effect.
– extropic-engine
Aug 8 '17 at 18:53
@DavidS. you could get a combined log or have stdout and stderr immortal.run/post/stderr
– nbari
Nov 11 '17 at 15:20
|
show 2 more comments
1
Thanks, this worked great for my use case in 16.04. Putting this in my bag of useful tools.
– Quentin Skousen
Jun 13 '17 at 16:30
2
Indeed, this looks more lightweight than upstart/respawn.
– Sridhar-Sarnobat
Jul 26 '17 at 5:14
Is there a way to get it to displaystdout
andstderr
in the foreground?
– David S.
Aug 7 '17 at 17:24
I'm not aware of one, since it's usually used to run a process in the background. However, you can useimmortalctl -l out.log <cmd> && tail -f out.log
to achieve the same effect.
– extropic-engine
Aug 8 '17 at 18:53
@DavidS. you could get a combined log or have stdout and stderr immortal.run/post/stderr
– nbari
Nov 11 '17 at 15:20
1
1
Thanks, this worked great for my use case in 16.04. Putting this in my bag of useful tools.
– Quentin Skousen
Jun 13 '17 at 16:30
Thanks, this worked great for my use case in 16.04. Putting this in my bag of useful tools.
– Quentin Skousen
Jun 13 '17 at 16:30
2
2
Indeed, this looks more lightweight than upstart/respawn.
– Sridhar-Sarnobat
Jul 26 '17 at 5:14
Indeed, this looks more lightweight than upstart/respawn.
– Sridhar-Sarnobat
Jul 26 '17 at 5:14
Is there a way to get it to display
stdout
and stderr
in the foreground?– David S.
Aug 7 '17 at 17:24
Is there a way to get it to display
stdout
and stderr
in the foreground?– David S.
Aug 7 '17 at 17:24
I'm not aware of one, since it's usually used to run a process in the background. However, you can use
immortalctl -l out.log <cmd> && tail -f out.log
to achieve the same effect.– extropic-engine
Aug 8 '17 at 18:53
I'm not aware of one, since it's usually used to run a process in the background. However, you can use
immortalctl -l out.log <cmd> && tail -f out.log
to achieve the same effect.– extropic-engine
Aug 8 '17 at 18:53
@DavidS. you could get a combined log or have stdout and stderr immortal.run/post/stderr
– nbari
Nov 11 '17 at 15:20
@DavidS. you could get a combined log or have stdout and stderr immortal.run/post/stderr
– nbari
Nov 11 '17 at 15:20
|
show 2 more comments
There is a way without "Upstart". The keyword is "inittab" :-). Although that's a file not usually altered from default, it can be used to achieve the desired respawning on SYSV machines.
I don't understand why someone REJECTED this solution. If you don't understand it, just google it; it's pointless to cut and paste here the man pages of initttab, you can read them yourself on your system! just type "man inittab"...
– cepal67
Jun 16 '15 at 14:26
13
High quality answers detail more than "use this, figure it out on your own" :)
– Seth♦
Jun 17 '15 at 0:13
add a comment |
There is a way without "Upstart". The keyword is "inittab" :-). Although that's a file not usually altered from default, it can be used to achieve the desired respawning on SYSV machines.
I don't understand why someone REJECTED this solution. If you don't understand it, just google it; it's pointless to cut and paste here the man pages of initttab, you can read them yourself on your system! just type "man inittab"...
– cepal67
Jun 16 '15 at 14:26
13
High quality answers detail more than "use this, figure it out on your own" :)
– Seth♦
Jun 17 '15 at 0:13
add a comment |
There is a way without "Upstart". The keyword is "inittab" :-). Although that's a file not usually altered from default, it can be used to achieve the desired respawning on SYSV machines.
There is a way without "Upstart". The keyword is "inittab" :-). Although that's a file not usually altered from default, it can be used to achieve the desired respawning on SYSV machines.
answered Jun 15 '15 at 16:08
cepal67cepal67
271
271
I don't understand why someone REJECTED this solution. If you don't understand it, just google it; it's pointless to cut and paste here the man pages of initttab, you can read them yourself on your system! just type "man inittab"...
– cepal67
Jun 16 '15 at 14:26
13
High quality answers detail more than "use this, figure it out on your own" :)
– Seth♦
Jun 17 '15 at 0:13
add a comment |
I don't understand why someone REJECTED this solution. If you don't understand it, just google it; it's pointless to cut and paste here the man pages of initttab, you can read them yourself on your system! just type "man inittab"...
– cepal67
Jun 16 '15 at 14:26
13
High quality answers detail more than "use this, figure it out on your own" :)
– Seth♦
Jun 17 '15 at 0:13
I don't understand why someone REJECTED this solution. If you don't understand it, just google it; it's pointless to cut and paste here the man pages of initttab, you can read them yourself on your system! just type "man inittab"...
– cepal67
Jun 16 '15 at 14:26
I don't understand why someone REJECTED this solution. If you don't understand it, just google it; it's pointless to cut and paste here the man pages of initttab, you can read them yourself on your system! just type "man inittab"...
– cepal67
Jun 16 '15 at 14:26
13
13
High quality answers detail more than "use this, figure it out on your own" :)
– Seth♦
Jun 17 '15 at 0:13
High quality answers detail more than "use this, figure it out on your own" :)
– Seth♦
Jun 17 '15 at 0:13
add a comment |
ps-watcher is a tool that watches which processes are running and executes an action on defined circumstances. Let’s install it:
apt-get install ps-watcher
See the bottom of Running HHVM with fallback to PHP-FPM for details - this has worked well for me.
Since it's not very long please add a summary of the code instead of the article because only a very short section applies to this question.
– derHugo
Sep 19 '17 at 5:48
add a comment |
ps-watcher is a tool that watches which processes are running and executes an action on defined circumstances. Let’s install it:
apt-get install ps-watcher
See the bottom of Running HHVM with fallback to PHP-FPM for details - this has worked well for me.
Since it's not very long please add a summary of the code instead of the article because only a very short section applies to this question.
– derHugo
Sep 19 '17 at 5:48
add a comment |
ps-watcher is a tool that watches which processes are running and executes an action on defined circumstances. Let’s install it:
apt-get install ps-watcher
See the bottom of Running HHVM with fallback to PHP-FPM for details - this has worked well for me.
ps-watcher is a tool that watches which processes are running and executes an action on defined circumstances. Let’s install it:
apt-get install ps-watcher
See the bottom of Running HHVM with fallback to PHP-FPM for details - this has worked well for me.
edited Sep 19 '17 at 6:56
Eliah Kagan
83.5k22229369
83.5k22229369
answered Sep 19 '17 at 1:33
FiregardenFiregarden
1011
1011
Since it's not very long please add a summary of the code instead of the article because only a very short section applies to this question.
– derHugo
Sep 19 '17 at 5:48
add a comment |
Since it's not very long please add a summary of the code instead of the article because only a very short section applies to this question.
– derHugo
Sep 19 '17 at 5:48
Since it's not very long please add a summary of the code instead of the article because only a very short section applies to this question.
– derHugo
Sep 19 '17 at 5:48
Since it's not very long please add a summary of the code instead of the article because only a very short section applies to this question.
– derHugo
Sep 19 '17 at 5:48
add a comment |
Startup and respawning processes are managed by "systemd" since Ubuntu 15.04, a good introduction can be found here
https://www.digitalocean.com/community/tutorials/systemd-essentials-working-with-services-units-and-the-journal
an example that get you started is available on
https://www.devdungeon.com/content/creating-systemd-service-files
This approach supersedes older ones based on /etc/inittab and upstart.
add a comment |
Startup and respawning processes are managed by "systemd" since Ubuntu 15.04, a good introduction can be found here
https://www.digitalocean.com/community/tutorials/systemd-essentials-working-with-services-units-and-the-journal
an example that get you started is available on
https://www.devdungeon.com/content/creating-systemd-service-files
This approach supersedes older ones based on /etc/inittab and upstart.
add a comment |
Startup and respawning processes are managed by "systemd" since Ubuntu 15.04, a good introduction can be found here
https://www.digitalocean.com/community/tutorials/systemd-essentials-working-with-services-units-and-the-journal
an example that get you started is available on
https://www.devdungeon.com/content/creating-systemd-service-files
This approach supersedes older ones based on /etc/inittab and upstart.
Startup and respawning processes are managed by "systemd" since Ubuntu 15.04, a good introduction can be found here
https://www.digitalocean.com/community/tutorials/systemd-essentials-working-with-services-units-and-the-journal
an example that get you started is available on
https://www.devdungeon.com/content/creating-systemd-service-files
This approach supersedes older ones based on /etc/inittab and upstart.
edited Jul 4 '18 at 20:31
answered Jul 4 '18 at 15:24
Nikolaus CorrellNikolaus Correll
11
11
add a comment |
add a comment |
If you don't need daemon/service/background process functionality and just want to do it in the console then create a file called autorestart.sh
:
#!/bin/bash
while [ 1 ]; do
some_command
done
Then ./autorestart.sh
will automatically restart some_command
if it exits or crashes. CTRL-C breaks the loop and quits the program cleanly.
Tested on Ubuntu 18.04.
New contributor
add a comment |
If you don't need daemon/service/background process functionality and just want to do it in the console then create a file called autorestart.sh
:
#!/bin/bash
while [ 1 ]; do
some_command
done
Then ./autorestart.sh
will automatically restart some_command
if it exits or crashes. CTRL-C breaks the loop and quits the program cleanly.
Tested on Ubuntu 18.04.
New contributor
add a comment |
If you don't need daemon/service/background process functionality and just want to do it in the console then create a file called autorestart.sh
:
#!/bin/bash
while [ 1 ]; do
some_command
done
Then ./autorestart.sh
will automatically restart some_command
if it exits or crashes. CTRL-C breaks the loop and quits the program cleanly.
Tested on Ubuntu 18.04.
New contributor
If you don't need daemon/service/background process functionality and just want to do it in the console then create a file called autorestart.sh
:
#!/bin/bash
while [ 1 ]; do
some_command
done
Then ./autorestart.sh
will automatically restart some_command
if it exits or crashes. CTRL-C breaks the loop and quits the program cleanly.
Tested on Ubuntu 18.04.
New contributor
New contributor
answered 2 hours ago
Jan ŚwięckiJan Święcki
101
101
New contributor
New contributor
add a comment |
add a comment |
Thanks for contributing an answer to Ask Ubuntu!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f251577%2fhow-to-supervise-and-automatically-restart-a-process%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown