systemd restart service automatically only after crash

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP

up vote
2
down vote

favorite

Is it possible to make systemd automatically restart a service only if the service did not return 0? As far as I have understood, a service returns 0, when a correct end occured- say when a user terminates the service actively like closing a program. I would love to tell systemd not to restart the service, when it was terminated by hand. Is that possible?

share|improve this question

    up vote
    2
    down vote

    favorite

    Is it possible to make systemd automatically restart a service only if the service did not return 0? As far as I have understood, a service returns 0, when a correct end occured- say when a user terminates the service actively like closing a program. I would love to tell systemd not to restart the service, when it was terminated by hand. Is that possible?

    share|improve this question

      up vote
      2
      down vote

      favorite

      up vote
      2
      down vote

      favorite

      Is it possible to make systemd automatically restart a service only if the service did not return 0? As far as I have understood, a service returns 0, when a correct end occured- say when a user terminates the service actively like closing a program. I would love to tell systemd not to restart the service, when it was terminated by hand. Is that possible?

      share|improve this question

      Is it possible to make systemd automatically restart a service only if the service did not return 0? As far as I have understood, a service returns 0, when a correct end occured- say when a user terminates the service actively like closing a program. I would love to tell systemd not to restart the service, when it was terminated by hand. Is that possible?

      linux systemd

      share|improve this question

      share|improve this question

      share|improve this question

      share|improve this question

      edited Dec 6 at 17:37

      Rui F Ribeiro

      38.6k1479128

      38.6k1479128

      asked Dec 6 at 17:25

      bejo

      254

      254

          1 Answer
          1

          active

          oldest

          votes

          up vote
          2
          down vote

          accepted

          Yes, you can use Restart=on-failure inside the unit’s Service section.

          From systemd’s documentation (also available at man 5 systemd.service):

          Restart=

          […]

          If set to on-failure, the service will be restarted when the process exits with a non-zero exit code, is terminated by a signal (including on core dump, but excluding the aforementioned four signals), when an operation (such as service reload) times out, and when the configured watchdog timeout is triggered. If set to on-abnormal, the service will be restarted when the process is terminated by a signal (including on core dump, excluding the aforementioned four signals), when an operation times out, or when the watchdog timeout is triggered.

          […]

          Setting this to on-failure is the recommended choice for long-running services, in order to increase reliability by attempting automatic recovery from errors. For services that shall be able to terminate on their own choice (and avoid immediate restarting), on-abnormal is an alternative choice.

          As an aside, instead of your current method of terminating the process by hand, you can explicitly tell systemd to stop the service with systemctl stop, which will bypass any Restart= settings.

          share|improve this answer

            Your Answer

            StackExchange.ready(function() {
            var channelOptions = {
            tags: “”.split(” “),
            id: “106”
            };
            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’,
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            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%2funix.stackexchange.com%2fquestions%2f486417%2fsystemd-restart-service-automatically-only-after-crash%23new-answer’, ‘question_page’);
            }
            );

            Post as a guest

            Required, but never shown

            1 Answer
            1

            active

            oldest

            votes

            1 Answer
            1

            active

            oldest

            votes

            active

            oldest

            votes

            active

            oldest

            votes

            up vote
            2
            down vote

            accepted

            Yes, you can use Restart=on-failure inside the unit’s Service section.

            From systemd’s documentation (also available at man 5 systemd.service):

            Restart=

            […]

            If set to on-failure, the service will be restarted when the process exits with a non-zero exit code, is terminated by a signal (including on core dump, but excluding the aforementioned four signals), when an operation (such as service reload) times out, and when the configured watchdog timeout is triggered. If set to on-abnormal, the service will be restarted when the process is terminated by a signal (including on core dump, excluding the aforementioned four signals), when an operation times out, or when the watchdog timeout is triggered.

            […]

            Setting this to on-failure is the recommended choice for long-running services, in order to increase reliability by attempting automatic recovery from errors. For services that shall be able to terminate on their own choice (and avoid immediate restarting), on-abnormal is an alternative choice.

            As an aside, instead of your current method of terminating the process by hand, you can explicitly tell systemd to stop the service with systemctl stop, which will bypass any Restart= settings.

            share|improve this answer

              up vote
              2
              down vote

              accepted

              Yes, you can use Restart=on-failure inside the unit’s Service section.

              From systemd’s documentation (also available at man 5 systemd.service):

              Restart=

              […]

              If set to on-failure, the service will be restarted when the process exits with a non-zero exit code, is terminated by a signal (including on core dump, but excluding the aforementioned four signals), when an operation (such as service reload) times out, and when the configured watchdog timeout is triggered. If set to on-abnormal, the service will be restarted when the process is terminated by a signal (including on core dump, excluding the aforementioned four signals), when an operation times out, or when the watchdog timeout is triggered.

              […]

              Setting this to on-failure is the recommended choice for long-running services, in order to increase reliability by attempting automatic recovery from errors. For services that shall be able to terminate on their own choice (and avoid immediate restarting), on-abnormal is an alternative choice.

              As an aside, instead of your current method of terminating the process by hand, you can explicitly tell systemd to stop the service with systemctl stop, which will bypass any Restart= settings.

              share|improve this answer

                up vote
                2
                down vote

                accepted

                up vote
                2
                down vote

                accepted

                Yes, you can use Restart=on-failure inside the unit’s Service section.

                From systemd’s documentation (also available at man 5 systemd.service):

                Restart=

                […]

                If set to on-failure, the service will be restarted when the process exits with a non-zero exit code, is terminated by a signal (including on core dump, but excluding the aforementioned four signals), when an operation (such as service reload) times out, and when the configured watchdog timeout is triggered. If set to on-abnormal, the service will be restarted when the process is terminated by a signal (including on core dump, excluding the aforementioned four signals), when an operation times out, or when the watchdog timeout is triggered.

                […]

                Setting this to on-failure is the recommended choice for long-running services, in order to increase reliability by attempting automatic recovery from errors. For services that shall be able to terminate on their own choice (and avoid immediate restarting), on-abnormal is an alternative choice.

                As an aside, instead of your current method of terminating the process by hand, you can explicitly tell systemd to stop the service with systemctl stop, which will bypass any Restart= settings.

                share|improve this answer

                Yes, you can use Restart=on-failure inside the unit’s Service section.

                From systemd’s documentation (also available at man 5 systemd.service):

                Restart=

                […]

                If set to on-failure, the service will be restarted when the process exits with a non-zero exit code, is terminated by a signal (including on core dump, but excluding the aforementioned four signals), when an operation (such as service reload) times out, and when the configured watchdog timeout is triggered. If set to on-abnormal, the service will be restarted when the process is terminated by a signal (including on core dump, excluding the aforementioned four signals), when an operation times out, or when the watchdog timeout is triggered.

                […]

                Setting this to on-failure is the recommended choice for long-running services, in order to increase reliability by attempting automatic recovery from errors. For services that shall be able to terminate on their own choice (and avoid immediate restarting), on-abnormal is an alternative choice.

                As an aside, instead of your current method of terminating the process by hand, you can explicitly tell systemd to stop the service with systemctl stop, which will bypass any Restart= settings.

                share|improve this answer

                share|improve this answer

                share|improve this answer

                edited Dec 6 at 17:38

                answered Dec 6 at 17:28

                Chris Down

                78.7k13188201

                78.7k13188201

                    draft saved
                    draft discarded

                    Thanks for contributing an answer to Unix & Linux Stack Exchange!

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

                    Some of your past answers have not been well-received, and you’re in danger of being blocked from answering.

                    Please pay close attention to the following guidance:

                    • 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%2funix.stackexchange.com%2fquestions%2f486417%2fsystemd-restart-service-automatically-only-after-crash%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

                    Related Post

                    Leave a Reply

                    Your email address will not be published. Required fields are marked *