der folgende Befehl aus:zitiert und eine ssh Befehlszeile
$ echo -e ssh -q rmthost 'bash -c "ps -ef|grep '\'''\\\<'defunct'\\\>''\''|grep -v grep|awk '\'''{print \$1}''\'' "'
ssh -q sbpsvrwm757 bash -c "ps -ef|grep '\<defunct\>'|grep -v grep|awk '{print $1}' "
aber wenn sie ausgeführt werden, was das Ergebnis ist nicht zu erwarten:
$ ssh -q rmthost 'bash -c "ps -ef|grep '\'''\\\<'defunct'\\\>''\''|grep -v grep|awk '\'''{print \$1}''\'' "'
root16986 16982 0 - ? 0:01 <defunct>
die awk didn Ich schein nicht die richtige Spalte zu finden.
Nun folgte ich den Link von Siguza zur Verfügung gestellt und kam mit:
$ echo ssh -q rmthost "'"bash -c '"ps -ef|grep '"'\<defunct\>'|grep -v grep|awk '{print \$1}'"'"'"'"
ssh -q rmthost 'bash -c "ps -ef|grep '\<defunct\>'|grep -v grep|awk '{print $1}'"'
, die zu vollkommen entgangen aussieht, aber immer noch nicht funktioniert:
$ ssh -q rmthost "'"bash -c '"ps -ef|grep '"'\<defunct\>'|grep -v grep|awk '{print \$1}'"'"'"'"
Missing }
oder
$ echo ssh -q rmthost bash -c '"ps -ef|grep '"'\<defunct\>'|grep -v grep|awk '{print \$1}'"'"'
ssh -q rmthost bash -c "ps -ef|grep '\<defunct\>'|grep -v grep|awk '{print $1}'"
$ ssh -q rmthost bash -c '"ps -ef|grep '"'\<defunct\>'|grep -v grep|awk '{print \$1}'"'"'
root 16986 16982 0 - ? 0:01 <defunct>
oder
$ echo ssh -q rmthost "bash -c \"ps -ef |grep '\<defunct\>'|grep -v grep| awk '{print \$1}'\""
ssh -q rmthost bash -c "ps -ef |grep '\<defunct\>'|grep -v grep| awk '{print $1}'"
$ ssh -q rmthost "bash -c \"ps -ef |grep '\<defunct\>'|grep -v grep| awk '{print \$1}'\""
root 16986 16982 0 - ? 0:01 <defunct>
irgendeine idee warum?
Bitte beachten Sie, dass ich bash -c benötige, um die bash-ähnliche Ausgabeumleitung wie> /var/tmp/1.ouy 2> & 1 für den Befehl zu aktivieren.
Ihre Hilfe wird geschätzt.
Danke. Ich folge dieser Regel, kann aber immer noch nicht funktionieren. Siehe das obige Update – AlexL
Was ist falsch mit 'ssh rmthost" ps -ef | grep \ "\ \" | grep -v grep | awk '{print \ $ 1}' "'- oder fehle ich hier etwas? Indem Sie das Argument in doppelte Anführungszeichen setzen, vermeiden Sie alle Unannehmlichkeiten. –
Auch 'bash -c' ist hier überflüssig. ssh wird die Befehlszeichenfolge an eine Shell selbst senden, wodurch Sie eine ganze Ebene der Entweichen sparen. –