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?

Problem with display of presentation

Vertical ranges of Column Plots in 12

Centre cell vertically in tabularx

Sally's older brother

Is this Half dragon Quaggoth Balanced

First paper to introduce the "principal-agent problem"

Did pre-Columbian Americans know the spherical shape of the Earth?

How to resize main filesystem

2018 MacBook Pro won't let me install macOS High Sierra 10.13 from USB installer

How to make an animal which can only breed for a certain number of generations?

Found this skink in my tomato plant bucket. Is he trapped? Or could he leave if he wanted?

The test team as an enemy of development? And how can this be avoided?

Weaponising the Grasp-at-a-Distance spell

malloc in main() or malloc in another function: allocating memory for a struct and its members

Find general formula for the terms

My mentor says to set image to Fine instead of RAW — how is this different from JPG?

Was the pager message from Nick Fury to Captain Marvel unnecessary?

Why did Bronn offer to be Tyrion Lannister's champion in trial by combat?

Does the main washing effect of soap come from foam?

The Nth Gryphon Number

Inverse square law not accurate for non-point masses?

Why not use the yoke to control yaw, as well as pitch and roll?

Are there any irrational/transcendental numbers for which the distribution of decimal digits is not uniform?

What is a more techy Technical Writer job title that isn't cutesy or confusing?



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;








34















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.



  1. What is the easiest way to acomplish such a functionality?

  2. How to configure it?









share|improve this question






























    34















    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.



    1. What is the easiest way to acomplish such a functionality?

    2. How to configure it?









    share|improve this question


























      34












      34








      34


      16






      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.



      1. What is the easiest way to acomplish such a functionality?

      2. How to configure it?









      share|improve this question
















      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.



      1. What is the easiest way to acomplish such a functionality?

      2. How to configure it?






      services






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Feb 5 '13 at 12:06









      gertvdijk

      51.5k18145240




      51.5k18145240










      asked Feb 5 '13 at 12:02









      opc0deopc0de

      2871410




      2871410




















          6 Answers
          6






          active

          oldest

          votes


















          28














          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).




          1. 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



          2. Start it by running



            sudo start calculator



          3. 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.






          share|improve this answer

























          • 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












          • 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


















          13














          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 a name 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.





          share|improve this answer




















          • 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 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











          • @DavidS. you could get a combined log or have stdout and stderr immortal.run/post/stderr

            – nbari
            Nov 11 '17 at 15:20


















          0














          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.






          share|improve this answer























          • 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


















          0














          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.






          share|improve this answer

























          • 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


















          0














          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.






          share|improve this answer
































            0














            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.






            share|improve this answer








            New contributor




            Jan Święcki is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
            Check out our Code of Conduct.




















              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
              );



              );













              draft saved

              draft discarded


















              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









              28














              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).




              1. 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



              2. Start it by running



                sudo start calculator



              3. 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.






              share|improve this answer

























              • 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












              • 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















              28














              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).




              1. 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



              2. Start it by running



                sudo start calculator



              3. 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.






              share|improve this answer

























              • 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












              • 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













              28












              28








              28







              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).




              1. 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



              2. Start it by running



                sudo start calculator



              3. 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.






              share|improve this answer















              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).




              1. 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



              2. Start it by running



                sudo start calculator



              3. 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.







              share|improve this answer














              share|improve this answer



              share|improve this answer








              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 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











              • @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












              • @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











              • @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













              13














              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 a name 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.





              share|improve this answer




















              • 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 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











              • @DavidS. you could get a combined log or have stdout and stderr immortal.run/post/stderr

                – nbari
                Nov 11 '17 at 15:20















              13














              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 a name 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.





              share|improve this answer




















              • 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 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











              • @DavidS. you could get a combined log or have stdout and stderr immortal.run/post/stderr

                – nbari
                Nov 11 '17 at 15:20













              13












              13








              13







              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 a name 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.





              share|improve this answer















              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 a name 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.






              share|improve this answer














              share|improve this answer



              share|improve this answer








              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 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











              • @DavidS. you could get a combined log or have stdout and stderr immortal.run/post/stderr

                – nbari
                Nov 11 '17 at 15:20












              • 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 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











              • @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











              0














              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.






              share|improve this answer























              • 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















              0














              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.






              share|improve this answer























              • 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













              0












              0








              0







              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.






              share|improve this answer













              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.







              share|improve this answer












              share|improve this answer



              share|improve this answer










              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

















              • 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











              0














              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.






              share|improve this answer

























              • 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















              0














              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.






              share|improve this answer

























              • 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













              0












              0








              0







              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.






              share|improve this answer















              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.







              share|improve this answer














              share|improve this answer



              share|improve this answer








              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

















              • 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











              0














              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.






              share|improve this answer





























                0














                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.






                share|improve this answer



























                  0












                  0








                  0







                  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.






                  share|improve this answer















                  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.







                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Jul 4 '18 at 20:31

























                  answered Jul 4 '18 at 15:24









                  Nikolaus CorrellNikolaus Correll

                  11




                  11





















                      0














                      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.






                      share|improve this answer








                      New contributor




                      Jan Święcki is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                      Check out our Code of Conduct.
























                        0














                        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.






                        share|improve this answer








                        New contributor




                        Jan Święcki is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                        Check out our Code of Conduct.






















                          0












                          0








                          0







                          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.






                          share|improve this answer








                          New contributor




                          Jan Święcki is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.










                          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.







                          share|improve this answer








                          New contributor




                          Jan Święcki is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.









                          share|improve this answer



                          share|improve this answer






                          New contributor




                          Jan Święcki is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.









                          answered 15 mins ago









                          Jan ŚwięckiJan Święcki

                          101




                          101




                          New contributor




                          Jan Święcki is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.





                          New contributor





                          Jan Święcki is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.






                          Jan Święcki is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.



























                              draft saved

                              draft discarded
















































                              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.




                              draft saved


                              draft discarded














                              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





















































                              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







                              Popular posts from this blog

                              Are there any comparative studies done between Ashtavakra Gita and Buddhim?How is it wrong to believe that a self exists, or that it doesn't?Can you criticise or improve Ven. Bodhi's description of MahayanaWas the doctrine of 'Anatta', accepted as doctrine by modern Buddhism, actually taught by the Buddha?Relationship between Buddhism, Hinduism and Yoga?Comparison of Nirvana, Tao and Brahman/AtmaIs there a distinction between “ego identity” and “craving/hating”?Are there many differences between Taoism and Buddhism?Loss of “faith” in buddhismSimilarity between creation in Abrahamic religions and beginning of life in Earth mentioned Agganna Sutta?Are there studies about the difference between meditating in the morning versus in the evening?Can one follow Hinduism and Buddhism at the same time?Are there any prohibitions on participating in other religion's practices?Psychology of 'flow'

                              Where else does the Shulchan Aruch quote an authority by name?Parashat Metzora+HagadolPesach/PassoverShulchan Aruch UTF-8Anonymous glosses in the Shulchan AruchWhy is the Shulchan Aruch definitive?Siman 32, Kitzur Shulchan Aruch: UntranslatedLitvaks/Yeshivish and Shulchan AruchBuying a Shulchan AruchEnglish version of SHULCHAN ARUCHIs there any place where Shulchan Aruch rules with the Rosh against the Rif and Rambam?Are there practices where Sepharadim do not hold by Shulchan Aruch?5th part of the shulchan aruch

                              fallocate: fallocate failed: Text file busy in Ubuntu 17.04? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)defragmenting and increasing performance of old lubuntu system with swap partitionIssue with increasing the root partition from the swapthis /usr/bin/dpkg returned error || ubuntu-16.04, 64bitDefault 17.04 swap file locationHow to Resize Ubuntu 17.04 Zesty Swap file size?Ubuntu freezes from online formsMy Laptop is not starting after upgrade ubuntu 16.04 (Kernel 4.8.0-38 to 04.10.0-36)hcp: ERROR: FALLOCATE FAILED!Not sure my swap is being usedWine 3.0 asking for more virtual free swap