systemd: lie about process name using sh -c exec idiomHow to avoid /usr/bin/env being marked in systemd logs as the executablesystemd: default value for environment variableMake systemd reload only single openvpn process and not the whole groupHow to fix unit attribution of last lines of systemd logging before exit?systemd unit files - conditional argumentsStarting services in a specific order on Red Hat?Failure to start custom service using systemdWhy x0vncserver is not starting at boot?Why is systemd stopping service immediately after it is started?Systemd irregular timing issueInstruct to execute an unit after completing another unit successfully

XeLaTeX and pdfLaTeX ignore hyphenation

What is the white spray-pattern residue inside these Falcon Heavy nozzles?

Why don't electron-positron collisions release infinite energy?

What is the meaning of "of trouble" in the following sentence?

Copenhagen passport control - US citizen

Is it possible to do 50 km distance without any previous training?

Can I interfere when another PC is about to be attacked?

How do I create uniquely male characters?

Non-Jewish family in an Orthodox Jewish Wedding

Modification to Chariots for Heavy Cavalry Analogue for 4-armed race

Could a US political party gain complete control over the government by removing checks & balances?

Circuitry of TV splitters

How is this relation reflexive?

Infinite past with a beginning?

whey we use polarized capacitor?

Can a German sentence have two subjects?

What makes Graph invariants so useful/important?

Can an x86 CPU running in real mode be considered to be basically an 8086 CPU?

I see my dog run

Is it possible to make sharp wind that can cut stuff from afar?

least quadratic residue under GRH: an EXPLICIT bound

Are tax years 2016 & 2017 back taxes deductible for tax year 2018?

Schwarzchild Radius of the Universe

How is it possible for user's password to be changed after storage was encrypted? (on OS X, Android)



systemd: lie about process name using sh -c exec idiom


How to avoid /usr/bin/env being marked in systemd logs as the executablesystemd: default value for environment variableMake systemd reload only single openvpn process and not the whole groupHow to fix unit attribution of last lines of systemd logging before exit?systemd unit files - conditional argumentsStarting services in a specific order on Red Hat?Failure to start custom service using systemdWhy x0vncserver is not starting at boot?Why is systemd stopping service immediately after it is started?Systemd irregular timing issueInstruct to execute an unit after completing another unit successfully






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








4















I'm using the sh -c exec idiom in an ExecStart statement (in a service unit file) to interpolate some shell commands. For example:



ExecStart=/bin/sh -ec "exec /usr/bin/foo $(/usr/bin/foo-config)"


It works great. However, when I look at the journal for this service, the process name is sh instead of foo. Is there a way to lie about the process name using this idiom?










share|improve this question
























  • Try adding something directly after the command argument, e.g. sh -ec "exec whatever" desired-name. It will be set as $0 for the shell. Not sure if it will carry through to where you want it but it's a good bet.

    – Wildcard
    Jun 13 '16 at 17:58











  • @Wildcard: Unfortunately, that did not work.

    – mwp
    Jun 13 '16 at 18:11

















4















I'm using the sh -c exec idiom in an ExecStart statement (in a service unit file) to interpolate some shell commands. For example:



ExecStart=/bin/sh -ec "exec /usr/bin/foo $(/usr/bin/foo-config)"


It works great. However, when I look at the journal for this service, the process name is sh instead of foo. Is there a way to lie about the process name using this idiom?










share|improve this question
























  • Try adding something directly after the command argument, e.g. sh -ec "exec whatever" desired-name. It will be set as $0 for the shell. Not sure if it will carry through to where you want it but it's a good bet.

    – Wildcard
    Jun 13 '16 at 17:58











  • @Wildcard: Unfortunately, that did not work.

    – mwp
    Jun 13 '16 at 18:11













4












4








4








I'm using the sh -c exec idiom in an ExecStart statement (in a service unit file) to interpolate some shell commands. For example:



ExecStart=/bin/sh -ec "exec /usr/bin/foo $(/usr/bin/foo-config)"


It works great. However, when I look at the journal for this service, the process name is sh instead of foo. Is there a way to lie about the process name using this idiom?










share|improve this question
















I'm using the sh -c exec idiom in an ExecStart statement (in a service unit file) to interpolate some shell commands. For example:



ExecStart=/bin/sh -ec "exec /usr/bin/foo $(/usr/bin/foo-config)"


It works great. However, when I look at the journal for this service, the process name is sh instead of foo. Is there a way to lie about the process name using this idiom?







systemd systemd-journald






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Sep 23 '17 at 19:51









sourcejedi

25.7k445113




25.7k445113










asked Jun 13 '16 at 17:51









mwpmwp

1868




1868












  • Try adding something directly after the command argument, e.g. sh -ec "exec whatever" desired-name. It will be set as $0 for the shell. Not sure if it will carry through to where you want it but it's a good bet.

    – Wildcard
    Jun 13 '16 at 17:58











  • @Wildcard: Unfortunately, that did not work.

    – mwp
    Jun 13 '16 at 18:11

















  • Try adding something directly after the command argument, e.g. sh -ec "exec whatever" desired-name. It will be set as $0 for the shell. Not sure if it will carry through to where you want it but it's a good bet.

    – Wildcard
    Jun 13 '16 at 17:58











  • @Wildcard: Unfortunately, that did not work.

    – mwp
    Jun 13 '16 at 18:11
















Try adding something directly after the command argument, e.g. sh -ec "exec whatever" desired-name. It will be set as $0 for the shell. Not sure if it will carry through to where you want it but it's a good bet.

– Wildcard
Jun 13 '16 at 17:58





Try adding something directly after the command argument, e.g. sh -ec "exec whatever" desired-name. It will be set as $0 for the shell. Not sure if it will carry through to where you want it but it's a good bet.

– Wildcard
Jun 13 '16 at 17:58













@Wildcard: Unfortunately, that did not work.

– mwp
Jun 13 '16 at 18:11





@Wildcard: Unfortunately, that did not work.

– mwp
Jun 13 '16 at 18:11










2 Answers
2






active

oldest

votes


















4














Ah, this turned out to be much easier than I thought it would be. Found an answer here: https://unix.stackexchange.com/a/229525/11995!



 SyslogIdentifier=foo





share|improve this answer
































    0














    Have you considered using an environment file or variable to do your last-minute configuration instead of a command? Something like (untested):



    Environment= ARGS=--whatever
    EnvironmentFile=-/etc/foo/foo.config
    ExecStart=/usr/bin/foo $ARGS


    That seems more in line with the 'systemd way'.






    share|improve this answer























    • I agree that this approach would be better; unfortunately, I'm trying to wrap something that works a certain way, and I don't have much control over it. Specifically, foo-config does some critical parsing of the config file to generate command-line arguments. This parsing needs to happen at run time to capture any subsequent changes to the config file. Is there a way to do something like Environment=ARGS=$(/usr/bin/foo-config)?

      – mwp
      Jun 13 '16 at 18:15












    • In that case (still not sure I agree), you might want to create your own shell script with the same name, e.g. /usr/local/bin/foo. This script could call foo-config and then ultimately /usr/bin/foo? (Again, not tested.)

      – Lee-Man
      Jun 13 '16 at 18:18











    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',
    autoActivateHeartbeat: false,
    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%2f289516%2fsystemd-lie-about-process-name-using-sh-c-exec-idiom%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    4














    Ah, this turned out to be much easier than I thought it would be. Found an answer here: https://unix.stackexchange.com/a/229525/11995!



     SyslogIdentifier=foo





    share|improve this answer





























      4














      Ah, this turned out to be much easier than I thought it would be. Found an answer here: https://unix.stackexchange.com/a/229525/11995!



       SyslogIdentifier=foo





      share|improve this answer



























        4












        4








        4







        Ah, this turned out to be much easier than I thought it would be. Found an answer here: https://unix.stackexchange.com/a/229525/11995!



         SyslogIdentifier=foo





        share|improve this answer















        Ah, this turned out to be much easier than I thought it would be. Found an answer here: https://unix.stackexchange.com/a/229525/11995!



         SyslogIdentifier=foo






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Mar 27 at 15:36









        Peter Hansen

        1054




        1054










        answered Jun 13 '16 at 18:31









        mwpmwp

        1868




        1868























            0














            Have you considered using an environment file or variable to do your last-minute configuration instead of a command? Something like (untested):



            Environment= ARGS=--whatever
            EnvironmentFile=-/etc/foo/foo.config
            ExecStart=/usr/bin/foo $ARGS


            That seems more in line with the 'systemd way'.






            share|improve this answer























            • I agree that this approach would be better; unfortunately, I'm trying to wrap something that works a certain way, and I don't have much control over it. Specifically, foo-config does some critical parsing of the config file to generate command-line arguments. This parsing needs to happen at run time to capture any subsequent changes to the config file. Is there a way to do something like Environment=ARGS=$(/usr/bin/foo-config)?

              – mwp
              Jun 13 '16 at 18:15












            • In that case (still not sure I agree), you might want to create your own shell script with the same name, e.g. /usr/local/bin/foo. This script could call foo-config and then ultimately /usr/bin/foo? (Again, not tested.)

              – Lee-Man
              Jun 13 '16 at 18:18















            0














            Have you considered using an environment file or variable to do your last-minute configuration instead of a command? Something like (untested):



            Environment= ARGS=--whatever
            EnvironmentFile=-/etc/foo/foo.config
            ExecStart=/usr/bin/foo $ARGS


            That seems more in line with the 'systemd way'.






            share|improve this answer























            • I agree that this approach would be better; unfortunately, I'm trying to wrap something that works a certain way, and I don't have much control over it. Specifically, foo-config does some critical parsing of the config file to generate command-line arguments. This parsing needs to happen at run time to capture any subsequent changes to the config file. Is there a way to do something like Environment=ARGS=$(/usr/bin/foo-config)?

              – mwp
              Jun 13 '16 at 18:15












            • In that case (still not sure I agree), you might want to create your own shell script with the same name, e.g. /usr/local/bin/foo. This script could call foo-config and then ultimately /usr/bin/foo? (Again, not tested.)

              – Lee-Man
              Jun 13 '16 at 18:18













            0












            0








            0







            Have you considered using an environment file or variable to do your last-minute configuration instead of a command? Something like (untested):



            Environment= ARGS=--whatever
            EnvironmentFile=-/etc/foo/foo.config
            ExecStart=/usr/bin/foo $ARGS


            That seems more in line with the 'systemd way'.






            share|improve this answer













            Have you considered using an environment file or variable to do your last-minute configuration instead of a command? Something like (untested):



            Environment= ARGS=--whatever
            EnvironmentFile=-/etc/foo/foo.config
            ExecStart=/usr/bin/foo $ARGS


            That seems more in line with the 'systemd way'.







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Jun 13 '16 at 18:05









            Lee-ManLee-Man

            24715




            24715












            • I agree that this approach would be better; unfortunately, I'm trying to wrap something that works a certain way, and I don't have much control over it. Specifically, foo-config does some critical parsing of the config file to generate command-line arguments. This parsing needs to happen at run time to capture any subsequent changes to the config file. Is there a way to do something like Environment=ARGS=$(/usr/bin/foo-config)?

              – mwp
              Jun 13 '16 at 18:15












            • In that case (still not sure I agree), you might want to create your own shell script with the same name, e.g. /usr/local/bin/foo. This script could call foo-config and then ultimately /usr/bin/foo? (Again, not tested.)

              – Lee-Man
              Jun 13 '16 at 18:18

















            • I agree that this approach would be better; unfortunately, I'm trying to wrap something that works a certain way, and I don't have much control over it. Specifically, foo-config does some critical parsing of the config file to generate command-line arguments. This parsing needs to happen at run time to capture any subsequent changes to the config file. Is there a way to do something like Environment=ARGS=$(/usr/bin/foo-config)?

              – mwp
              Jun 13 '16 at 18:15












            • In that case (still not sure I agree), you might want to create your own shell script with the same name, e.g. /usr/local/bin/foo. This script could call foo-config and then ultimately /usr/bin/foo? (Again, not tested.)

              – Lee-Man
              Jun 13 '16 at 18:18
















            I agree that this approach would be better; unfortunately, I'm trying to wrap something that works a certain way, and I don't have much control over it. Specifically, foo-config does some critical parsing of the config file to generate command-line arguments. This parsing needs to happen at run time to capture any subsequent changes to the config file. Is there a way to do something like Environment=ARGS=$(/usr/bin/foo-config)?

            – mwp
            Jun 13 '16 at 18:15






            I agree that this approach would be better; unfortunately, I'm trying to wrap something that works a certain way, and I don't have much control over it. Specifically, foo-config does some critical parsing of the config file to generate command-line arguments. This parsing needs to happen at run time to capture any subsequent changes to the config file. Is there a way to do something like Environment=ARGS=$(/usr/bin/foo-config)?

            – mwp
            Jun 13 '16 at 18:15














            In that case (still not sure I agree), you might want to create your own shell script with the same name, e.g. /usr/local/bin/foo. This script could call foo-config and then ultimately /usr/bin/foo? (Again, not tested.)

            – Lee-Man
            Jun 13 '16 at 18:18





            In that case (still not sure I agree), you might want to create your own shell script with the same name, e.g. /usr/local/bin/foo. This script could call foo-config and then ultimately /usr/bin/foo? (Again, not tested.)

            – Lee-Man
            Jun 13 '16 at 18:18

















            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.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f289516%2fsystemd-lie-about-process-name-using-sh-c-exec-idiom%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







            -systemd, systemd-journald

            Popular posts from this blog

            Frič See also Navigation menuinternal link

            Identify plant with long narrow paired leaves and reddish stems Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?What is this plant with long sharp leaves? Is it a weed?What is this 3ft high, stalky plant, with mid sized narrow leaves?What is this young shrub with opposite ovate, crenate leaves and reddish stems?What is this plant with large broad serrated leaves?Identify this upright branching weed with long leaves and reddish stemsPlease help me identify this bulbous plant with long, broad leaves and white flowersWhat is this small annual with narrow gray/green leaves and rust colored daisy-type flowers?What is this chilli plant?Does anyone know what type of chilli plant this is?Help identify this plant

            fontconfig warning: “/etc/fonts/fonts.conf”, line 100: unknown “element blank” The 2019 Stack Overflow Developer Survey Results Are In“tar: unrecognized option --warning” during 'apt-get install'How to fix Fontconfig errorHow do I figure out which font file is chosen for a system generic font alias?Why are some apt-get-installed fonts being ignored by fc-list, xfontsel, etc?Reload settings in /etc/fonts/conf.dTaking 30 seconds longer to boot after upgrade from jessie to stretchHow to match multiple font names with a single <match> element?Adding a custom font to fontconfigRemoving fonts from fontconfig <match> resultsBroken fonts after upgrading Firefox ESR to latest Firefox