CentOS仮想マシンでコマンドを実行しようとしていますが、このコマンドを実行するために使用するAPIが>、>>、または|演算子を受け入れないようです。また、コマンドへの完全修飾パス(たとえば、lsの代わりに/ bin / ls)を使用する必要があります。
特定のコマンドの出力をファイルに送信したいと思います。この場合、どうすればよいですか?理論的には、「正しい」シェルでリダイレクトを実行するスクリプトを実行できますが、これは非常に不便なオプションです。
答え1
リダイレクトはシェルによって解釈されます。 APIを使用している場合、実行されたコマンドはシェルを介して実行されず、直接(男性3システムそして人3が実行されます。)。
リダイレクトを使用するには、シェルを起動してリダイレクトを使用します。たとえば、次のようになります。
/bin/sh -c "command > redirect"
答え2
複数の仮想マシンがある場合は、pdshというプログラムを見てください。複数のリモートシステム(実際または仮想)で並列にコマンド(ssh経由)を実行するために使用できます。
これは、HPCクラスタで使用するために作成されていますが、Linux / Unixシステムのすべてのグループで使用できる便利なシステム管理ツールです。
https://computing.llnl.gov/linux/pdsh.html
たとえば、「compute」属性(openstack ディストリビューションの nova-compute ノード)として定義された複数のマシンがある場合は、次のコマンドを実行して 16 個以上のアイドルコアを持つノード数を確認できます (各ノードには 24 コア)。 )xxlarge 16コアVMを実行できます。
# pdsh -g 計算 "ps hwwu -Ckvm | sed -e 's/.*-smp //' -e 's/,.*//' | awk'{VMS+=1; CPUS += \$1} END {VMS, CPUS, 24-CPUS 印刷}'" | \ awk '$4 > 15 {印刷}' |sort-k4-n 比較 17: 6 8 16 比較 19: 6 8 16 比較 23: 6 8 16 クラス26:7 8 16 比較 51: 7 8 16 比較 56: 6 8 16 比較 71: 7 8 16 比較 78: 7 8 16 比較 81: 6 8 16 比較 11: 6 7 17 比較 47: 6 7 17 比較 79: 6 7 17 比較 09: 5 6 18 比較 29: 5 5 19 比較 27: 4 4 20
(実際の使用量の出力、匿名性のためにホスト名が編集されます)
二重引用符内のコマンドはリモートシステムで実行され(シェル引用規則が適用されるため、最初のawkの\ $ 1)、残り(2番目のawkとsort)はローカルシステムで実行されます。