Kill remote process via ssh
Clash Royale CLAN TAG#URR8PPP
I have a process that I want to kill remotely. I tried
ssh remotehost "kill -9 $(ps -aux | grep foo | grep bar | awk 'print $2')"
but this returns the error
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
However if I run the command within the quotation marks
kill -9 $(ps -aux | grep foo | grep bar | awk 'print $2')
on the remote host it works fine. Am I missing something here?
ssh process quoting kill remote
add a comment |
I have a process that I want to kill remotely. I tried
ssh remotehost "kill -9 $(ps -aux | grep foo | grep bar | awk 'print $2')"
but this returns the error
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
However if I run the command within the quotation marks
kill -9 $(ps -aux | grep foo | grep bar | awk 'print $2')
on the remote host it works fine. Am I missing something here?
ssh process quoting kill remote
add a comment |
I have a process that I want to kill remotely. I tried
ssh remotehost "kill -9 $(ps -aux | grep foo | grep bar | awk 'print $2')"
but this returns the error
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
However if I run the command within the quotation marks
kill -9 $(ps -aux | grep foo | grep bar | awk 'print $2')
on the remote host it works fine. Am I missing something here?
ssh process quoting kill remote
I have a process that I want to kill remotely. I tried
ssh remotehost "kill -9 $(ps -aux | grep foo | grep bar | awk 'print $2')"
but this returns the error
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
However if I run the command within the quotation marks
kill -9 $(ps -aux | grep foo | grep bar | awk 'print $2')
on the remote host it works fine. Am I missing something here?
ssh process quoting kill remote
ssh process quoting kill remote
edited Jan 24 at 10:29
Jeff Schaller
41.3k1056131
41.3k1056131
asked Jan 24 at 6:15
chrisechrise
1313
1313
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
The $(..)
command substitution would fail as the $
is expanded by the local shell even before it is passed to the stdin
of the ssh
command. You either need to escape it or use here-strings.
Also the command inside the awk
that prints $2
gets interpolated as a command-line argument. So we escape it to defer its expansion until the command is executed remotely.
With escaping,
ssh remotehost "kill -9 $(ps -aux | grep foo | grep bar | awk 'print $2')"
or with here-doc
ssh remotehost <<'EOF'
kill -9 $(ps -aux | grep foo | grep bar | awk 'print $2')
EOF
Also note that grep .. | grep .. | awk
is superfluous. You can do the whole operation with awk
alone. Or even better use pkill
to get the process to kill directly by name.
ah, interesting. I thought it would ship the complete expression within the quotation marks just as it is. So the $ will be evaluated immediately?
– chrise
Jan 24 at 6:26
@chrise: In that case, it is preferred to use the second approach involving here-doc
– Inian
Jan 24 at 6:28
either way I try seems to not return. So if I run it from command line, it doesnt go back to the prompt. If I run it from a script it doesnt go to the next line. Do I need to somehow explicitly exit this?
– chrise
Jan 24 at 6:48
@chrise: You should use the here-docs carefully. There shouldn't be any leading spaces in the line after'EOF'
, any leading spaces should be removed
– Inian
Jan 24 at 6:49
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%2f496381%2fkill-remote-process-via-ssh%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
The $(..)
command substitution would fail as the $
is expanded by the local shell even before it is passed to the stdin
of the ssh
command. You either need to escape it or use here-strings.
Also the command inside the awk
that prints $2
gets interpolated as a command-line argument. So we escape it to defer its expansion until the command is executed remotely.
With escaping,
ssh remotehost "kill -9 $(ps -aux | grep foo | grep bar | awk 'print $2')"
or with here-doc
ssh remotehost <<'EOF'
kill -9 $(ps -aux | grep foo | grep bar | awk 'print $2')
EOF
Also note that grep .. | grep .. | awk
is superfluous. You can do the whole operation with awk
alone. Or even better use pkill
to get the process to kill directly by name.
ah, interesting. I thought it would ship the complete expression within the quotation marks just as it is. So the $ will be evaluated immediately?
– chrise
Jan 24 at 6:26
@chrise: In that case, it is preferred to use the second approach involving here-doc
– Inian
Jan 24 at 6:28
either way I try seems to not return. So if I run it from command line, it doesnt go back to the prompt. If I run it from a script it doesnt go to the next line. Do I need to somehow explicitly exit this?
– chrise
Jan 24 at 6:48
@chrise: You should use the here-docs carefully. There shouldn't be any leading spaces in the line after'EOF'
, any leading spaces should be removed
– Inian
Jan 24 at 6:49
add a comment |
The $(..)
command substitution would fail as the $
is expanded by the local shell even before it is passed to the stdin
of the ssh
command. You either need to escape it or use here-strings.
Also the command inside the awk
that prints $2
gets interpolated as a command-line argument. So we escape it to defer its expansion until the command is executed remotely.
With escaping,
ssh remotehost "kill -9 $(ps -aux | grep foo | grep bar | awk 'print $2')"
or with here-doc
ssh remotehost <<'EOF'
kill -9 $(ps -aux | grep foo | grep bar | awk 'print $2')
EOF
Also note that grep .. | grep .. | awk
is superfluous. You can do the whole operation with awk
alone. Or even better use pkill
to get the process to kill directly by name.
ah, interesting. I thought it would ship the complete expression within the quotation marks just as it is. So the $ will be evaluated immediately?
– chrise
Jan 24 at 6:26
@chrise: In that case, it is preferred to use the second approach involving here-doc
– Inian
Jan 24 at 6:28
either way I try seems to not return. So if I run it from command line, it doesnt go back to the prompt. If I run it from a script it doesnt go to the next line. Do I need to somehow explicitly exit this?
– chrise
Jan 24 at 6:48
@chrise: You should use the here-docs carefully. There shouldn't be any leading spaces in the line after'EOF'
, any leading spaces should be removed
– Inian
Jan 24 at 6:49
add a comment |
The $(..)
command substitution would fail as the $
is expanded by the local shell even before it is passed to the stdin
of the ssh
command. You either need to escape it or use here-strings.
Also the command inside the awk
that prints $2
gets interpolated as a command-line argument. So we escape it to defer its expansion until the command is executed remotely.
With escaping,
ssh remotehost "kill -9 $(ps -aux | grep foo | grep bar | awk 'print $2')"
or with here-doc
ssh remotehost <<'EOF'
kill -9 $(ps -aux | grep foo | grep bar | awk 'print $2')
EOF
Also note that grep .. | grep .. | awk
is superfluous. You can do the whole operation with awk
alone. Or even better use pkill
to get the process to kill directly by name.
The $(..)
command substitution would fail as the $
is expanded by the local shell even before it is passed to the stdin
of the ssh
command. You either need to escape it or use here-strings.
Also the command inside the awk
that prints $2
gets interpolated as a command-line argument. So we escape it to defer its expansion until the command is executed remotely.
With escaping,
ssh remotehost "kill -9 $(ps -aux | grep foo | grep bar | awk 'print $2')"
or with here-doc
ssh remotehost <<'EOF'
kill -9 $(ps -aux | grep foo | grep bar | awk 'print $2')
EOF
Also note that grep .. | grep .. | awk
is superfluous. You can do the whole operation with awk
alone. Or even better use pkill
to get the process to kill directly by name.
edited Jan 24 at 6:32
answered Jan 24 at 6:18
InianInian
4,355925
4,355925
ah, interesting. I thought it would ship the complete expression within the quotation marks just as it is. So the $ will be evaluated immediately?
– chrise
Jan 24 at 6:26
@chrise: In that case, it is preferred to use the second approach involving here-doc
– Inian
Jan 24 at 6:28
either way I try seems to not return. So if I run it from command line, it doesnt go back to the prompt. If I run it from a script it doesnt go to the next line. Do I need to somehow explicitly exit this?
– chrise
Jan 24 at 6:48
@chrise: You should use the here-docs carefully. There shouldn't be any leading spaces in the line after'EOF'
, any leading spaces should be removed
– Inian
Jan 24 at 6:49
add a comment |
ah, interesting. I thought it would ship the complete expression within the quotation marks just as it is. So the $ will be evaluated immediately?
– chrise
Jan 24 at 6:26
@chrise: In that case, it is preferred to use the second approach involving here-doc
– Inian
Jan 24 at 6:28
either way I try seems to not return. So if I run it from command line, it doesnt go back to the prompt. If I run it from a script it doesnt go to the next line. Do I need to somehow explicitly exit this?
– chrise
Jan 24 at 6:48
@chrise: You should use the here-docs carefully. There shouldn't be any leading spaces in the line after'EOF'
, any leading spaces should be removed
– Inian
Jan 24 at 6:49
ah, interesting. I thought it would ship the complete expression within the quotation marks just as it is. So the $ will be evaluated immediately?
– chrise
Jan 24 at 6:26
ah, interesting. I thought it would ship the complete expression within the quotation marks just as it is. So the $ will be evaluated immediately?
– chrise
Jan 24 at 6:26
@chrise: In that case, it is preferred to use the second approach involving here-doc
– Inian
Jan 24 at 6:28
@chrise: In that case, it is preferred to use the second approach involving here-doc
– Inian
Jan 24 at 6:28
either way I try seems to not return. So if I run it from command line, it doesnt go back to the prompt. If I run it from a script it doesnt go to the next line. Do I need to somehow explicitly exit this?
– chrise
Jan 24 at 6:48
either way I try seems to not return. So if I run it from command line, it doesnt go back to the prompt. If I run it from a script it doesnt go to the next line. Do I need to somehow explicitly exit this?
– chrise
Jan 24 at 6:48
@chrise: You should use the here-docs carefully. There shouldn't be any leading spaces in the line after
'EOF'
, any leading spaces should be removed– Inian
Jan 24 at 6:49
@chrise: You should use the here-docs carefully. There shouldn't be any leading spaces in the line after
'EOF'
, any leading spaces should be removed– Inian
Jan 24 at 6:49
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%2f496381%2fkill-remote-process-via-ssh%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