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;
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
add a comment |
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
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
add a comment |
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
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
systemd systemd-journald
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
add a comment |
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
add a comment |
2 Answers
2
active
oldest
votes
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
add a comment |
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'.
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 likeEnvironment=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
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%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
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
add a comment |
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
add a comment |
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
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
edited Mar 27 at 15:36
Peter Hansen
1054
1054
answered Jun 13 '16 at 18:31
mwpmwp
1868
1868
add a comment |
add a comment |
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'.
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 likeEnvironment=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
add a comment |
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'.
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 likeEnvironment=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
add a comment |
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'.
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'.
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 likeEnvironment=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
add a comment |
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 likeEnvironment=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
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
-systemd, systemd-journald
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