検索
ホームページシステムチュートリアルLinuxlxc exec: そのユニークな魅力を探る

lxc exec: そのユニークな魅力を探る

Dec 30, 2023 pm 05:25 PM
linuxLinuxチュートリアルレッドハットLinuxシステムLinuxコマンドLinux 認定レッドハットリナックスLinuxビデオ

###導入###

lxc exec 的魅力特征

私たちの主な目標の 1 つは、lxc exec を ssh と同様にすることです。これは、コマンドをリモートで対話的または非対話的に実行するための標準であるためです。このため、lxc exec をうまく実行するのが少し難しくなります。

1. バックグラウンドタスクの処理

長年にわたる問題は、もちろん、バックグラウンド タスクを適切に処理する方法です。 LXD 2.7 インスタンスの問題の例を次に示します:

lxc exec 的魅力特征

バックグラウンドでタスクを実行すると、lxc exec の終了に失敗することがわかります。多くのコマンドがこの問題を引き起こす可能性があります:

リーリー

今、あなたを救えるものは何もありません。 yes は常に stdout に直接書き込みます。

問題の根本は、標準出力が常に開いていることですが、これは、ユーザーが開始したプロセスによって書き込まれたデータが実際に読み取られ、確立した WebSocket 接続を通じて送り返されることを保証するために使用されるため、これが必要です。

これを行う場合は、シェル セッションを実行し、バックグラウンドでプロセスを実行して、すぐにシェルを終了します。申し訳ありませんが、期待どおりに機能しません。

最初の原始的なアプローチは、フォアグラウンド プログラム (シェルなど) が終了したことを検出したら、単純に stdout を閉じることです。しかし、これは思っているほど良いことではありません。この問題は、次のような高速実行プログラムを実行すると明らかになります。 リーリー

ここでは、lxc exec プロセス (および関連する forkexec プロセス。ただし、今は考えないでください。Go setns() は通信しないことを覚えておいてください...) は、stdout 内のバッファリングされたデータがすべて読み取られる前に終了します。 。この状況では、出力が切り捨てられることになりますが、これは誰も望んでいません。 pty バッファリングを無効にする (言っておきますが、これは見栄えがよくなく、期待どおりに動作しません) やその他の奇妙なアイデアなど、問題を解決するためにいくつかの方法を試した結果、私はなんとかいくつかの poll() の「トリック」を乗り越えることができました。ある意味、「トリック」) がこの問題を解決します。これで、最終的にバックグラウンド タスクを実行して完全に終了できるようになりました。写真に示すように:

lxc exec 的魅力特征

2. シグナルによって発生した終了コードを報告する ssh は素晴らしいツールです。しかし、私がいつも嫌いな点の 1 つは、ssh によって実行されたコマンドがシグナルを受信したときに、ssh が常に -1 (終了コード 255) を報告することです。これは、プログラムを終了させた信号を理解したい場合には面倒です。これが、シグナルによる終了を報告するために標準シェル 128 n で使用される規則を最近実装した理由です。ここで、n はエグゼキュータを終了させたセマフォとして定義されています。たとえば、SIGKILL シグナルでは、128 SIGKILL = 137 と表示されます (リーダーの演習として、他の致命的なシグナルの終了コードを計算してください)。したがって、これを行うことができます:

リーリー

次に、SIGKILL をエグゼキューターに送信します (SIGKILL は転送できないため、lxc exec 自体ではありません)。

リーリー

最後にプログラムの終了コードを確認します:

リーリー ###見て。これは明らかに、a) 終了コードが 8 ビットの計算障壁を超えない場合、および b) 実行プログラムが成功を示すために 137 を使用しない場合にのみ機能するようです (なんと...興味深い?!)。どちらの議論も私にはあまり説得力がありません。前者は、致命的なセマフォがこの範囲を超えてはいけないためです。後者の理由は、(i) これはユーザーの問題であり、(ii) これらの終了コードは実際には保持されている (私はそう思います。)、(iii) プログラムをローカルまたは他の場所で実行すると同じ問題が発生するからです。

私が考える主な利点は、実行者に詳細な終了ステータスを報告できることです。シグナルによって強制終了されたすべてのプログラム インスタンスを報告するわけではないことに注意してください。たとえば、プログラムが SIGTERM を処理して正常に終了できる場合、LXD にはこれを検出してプログラムがシグナルによって強制終了されたことを報告する簡単な方法がありません。終了コード 0 が返されるだけです。

3. 順方向信号

これはあまり面白くないかもしれません (または、誰にも分からないかもしれません) が、私は非常に便利だと思います。 SIGKILL のケースでわかるように、SIGKILL は lxc exec コマンド自体ではなくエグゼキューターに送信する必要があると明示しました。プログラム内でSIGKILLを扱えないためです。プログラムができる唯一のことは、今のように...この例のように...すぐに死ぬことです (おわかりでしょう...)。ただし、プログラムは他の多くのシグナル、SIGTERM、SIGHUP'、そしてもちろん SIGUSR1 と SIGUSR2 を処理できます。したがって、lxc exec` では処理できるがエグゼキューターでは処理できないシグナルを送信すると、新しいバージョンの LXD はシグナルをエグゼキューターに転送します。これはスクリプトで非常に便利です。

とにかく、この小さな lxc exec の記事/意味不明な内容が役に立ったことを願っています。 LXD をお楽しみください。クレイジーで美しい野獣と遊んでいます。オンライン実験を試してみてください: https://linuxcontainers.org/lxd/try-it/ 、開発者の方はこちら: https://github.com/lxc/lxd を参照してパッチを送信してください。

CLA に署名する必要はありません。「Signed-off-by」行がある限り、カーネル スタイルに従います。

最近、lxc exec にいくつかの改良を加えました。 lxc exec は LXD のクライアント ツールです。LXD クライアント API を使用して LXD デーモンと通信し、ユーザーが実行したいさまざまなプログラムを実行します。以下は例です。使用できるもの:

以上がlxc exec: そのユニークな魅力を探るの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はLinux就该这么学で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
LinuxとWindowsがデバイスドライバーを処理する方法の違いは何ですか?LinuxとWindowsがデバイスドライバーを処理する方法の違いは何ですか?Apr 25, 2025 am 12:13 AM

デバイスドライバーの取り扱いにおけるLinuxとWindowsの違いは、主にドライバー管理と開発環境の柔軟性に反映されています。 1。Linuxはモジュラー設計を採用し、ドライバーを動的にロードしてアンインストールできます。開発者は、カーネルメカニズムを深く理解する必要があります。 2。WindowsはMicrosoftエコシステムに依存しており、ドライバーはWDKを通じて開発して署名および認定される必要があります。開発は比較的複雑ですが、システムの安定性とセキュリティを保証します。

LinuxとWindowsのセキュリティモデルを比較対照します。LinuxとWindowsのセキュリティモデルを比較対照します。Apr 24, 2025 am 12:03 AM

LinuxとWindowsのセキュリティモデルには、それぞれ独自の利点があります。 Linuxは、柔軟性とカスタマイズ可能性を提供し、ユーザーの権限、ファイルシステム許可、Selinux/Apparmorを通じてセキュリティを可能にします。 Windowsはユーザーフレンドリーに焦点を当てており、WindowsDefender、UAC、Firewall、BitLockerに依存してセキュリティを確保しています。

ハードウェアの互換性は、LinuxとWindowsの間でどのように異なりますか?ハードウェアの互換性は、LinuxとWindowsの間でどのように異なりますか?Apr 23, 2025 am 12:15 AM

LinuxとWindowsはハードウェアの互換性が異なります。Windowsには広範なドライバーサポートがあり、Linuxはコミュニティとベンダーに依存します。 Linux互換性の問題を解決するために、RTL818888EUドライバーリポジトリのクローニング、コンパイル、インストールなど、ドライバーを手動でコンパイルできます。 Windowsユーザーは、パフォーマンスを最適化するためにドライバーを管理する必要があります。

LinuxとWindowsの間の仮想化サポートの違いは何ですか?LinuxとWindowsの間の仮想化サポートの違いは何ですか?Apr 22, 2025 pm 06:09 PM

仮想化サポートのLinuxとWindowsの主な違いは次のとおりです。1)LinuxはKVMとXenを提供し、優れたパフォーマンスと柔軟性を備えており、高いカスタマイズ環境に適しています。 2)Windowsは、友好的なインターフェイスを備えたHyper-Vを介した仮想化をサポートし、Microsoftソフトウェアに依存する企業に適したMicrosoft Ecosystemと密接に統合されています。

Linuxシステム管理者の主なタスクは何ですか?Linuxシステム管理者の主なタスクは何ですか?Apr 19, 2025 am 12:23 AM

Linuxシステム管理者の主なタスクには、システムの監視とパフォーマンスチューニング、ユーザー管理、ソフトウェアパッケージ管理、セキュリティ管理とバックアップ、トラブルシューティングと解像度、パフォーマンスの最適化、ベストプラクティスが含まれます。 1. TOP、HTOP、その他のツールを使用して、システムのパフォーマンスを監視し、チューニングします。 2。ユーザーADDコマンドおよびその他のコマンドを介して、ユーザーアカウントとアクセス許可を管理します。 3. APTとYUMを使用してソフトウェアパッケージを管理し、システムの更新とセキュリティを確保します。 4.ファイアウォールを構成し、ログを監視し、データバックアップを実行して、システムセキュリティを確保します。 5.ログ分析とツールの使用を通じてトラブルシューティングと解決。 6.カーネルパラメーターとアプリケーションの構成を最適化し、ベストプラクティスに従ってシステムのパフォーマンスと安定性を向上させます。

Linuxを学ぶのは難しいですか?Linuxを学ぶのは難しいですか?Apr 18, 2025 am 12:23 AM

Linuxの学習は難しくありません。 1.Linuxは、UNIXに基づいたオープンソースオペレーティングシステムであり、サーバー、組み込みシステム、およびパーソナルコンピューターで広く使用されています。 2。ファイルシステムと許可管理を理解することが重要です。ファイルシステムは階層的であり、許可には読み取り、書き込み、実行が含まれます。 3。APTやDNFなどのパッケージ管理システムは、ソフトウェア管理を便利にします。 4。プロセス管理は、PSおよびTOPコマンドを通じて実装されます。 5. MKDIR、CD、Touch、Nanoなどの基本的なコマンドから学習を開始し、シェルスクリプトやテキスト処理などの高度な使用法を試してください。 6.許可問題などの一般的なエラーは、SudoとChmodを通じて解決できます。 7.パフォーマンスの最適化の提案には、HTOPを使用してリソースを監視すること、不要なファイルのクリーニング、SYの使用が含まれます

Linux管理者の給与はいくらですか?Linux管理者の給与はいくらですか?Apr 17, 2025 am 12:24 AM

Linux管理者の平均年salは、米国で75,000〜95,000ドル、ヨーロッパでは40,000〜60,000ユーロです。給与を増やすには、次のことができます。1。クラウドコンピューティングやコンテナテクノロジーなどの新しいテクノロジーを継続的に学習します。 2。プロジェクトの経験を蓄積し、ポートフォリオを確立します。 3.プロフェッショナルネットワークを確立し、ネットワークを拡大します。

Linuxの主な目的は何ですか?Linuxの主な目的は何ですか?Apr 16, 2025 am 12:19 AM

Linuxの主な用途には、1。Serverオペレーティングシステム、2。EmbeddedSystem、3。Desktopオペレーティングシステム、4。開発およびテスト環境。 Linuxはこれらの分野で優れており、安定性、セキュリティ、効率的な開発ツールを提供します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター