cari
RumahTutorial sistemLINUXlxc exec: Terokai daya tarikannya yang unik

lxc exec: Terokai daya tarikannya yang unik

Dec 30, 2023 pm 05:25 PM
linuxtutorial linuxTopi Merahsistem linuxarahan linuxpensijilan linuxlinux topi merahvideo linux

Pengenalan
Baru-baru ini, saya telah membuat beberapa penambahbaikan pada lxc exec. Jika anda tidak mengetahuinya, izinkan saya memperkenalkannya lxc exec ialah alat klien LXD Ia menggunakan api klien LXD untuk berkomunikasi dengan daemon LXD dan melaksanakan pelbagai program yang ingin dilaksanakan oleh pengguna daripada perkara yang boleh anda gunakan:

lxc exec 的魅力特征

Salah satu matlamat utama kami adalah untuk menjadikan lxc exec serupa dengan ssh, kerana ia adalah standard untuk menjalankan arahan dari jauh, secara interaktif atau tidak interaktif. Ini menjadikan melakukan lxc exec dengan baik agak sukar.

1. Memproses tugas latar belakang

Masalah yang berlarutan sudah tentu ialah cara mengendalikan tugas latar belakang dengan betul. Berikut ialah contoh masalah dengan contoh LXD 2.7:

lxc exec 的魅力特征

Anda dapat melihat bahawa melaksanakan tugas di latar belakang akan menyebabkan lxc exec gagal untuk keluar. Banyak arahan boleh mencetuskan isu ini:

chb@conventiont|~ 
> lxc exec zest1 bash 
root@zest1:~# yes &
 y
 y 
 y 
 . 
 . 
 .

Tiada apa yang boleh menyelamatkan anda sekarang. ya akan sentiasa menulis terus ke stdout.

Punca masalah ialah stdout sentiasa terbuka, tetapi ini perlu kerana ia digunakan untuk memastikan bahawa sebarang data yang ditulis oleh proses yang dimulakan oleh pengguna sebenarnya dibaca dan dihantar semula melalui sambungan websocket yang kami sediakan.

Jika anda mahu melakukan ini, jalankan sesi shell, kemudian jalankan proses di latar belakang dan keluar dari shell dengan segera. Maaf, ia tidak berfungsi seperti yang diharapkan.

Pendekatan pertama dan primitif ialah dengan hanya menutup stdout sebaik sahaja anda mengesan program latar depan (cth. shell) telah keluar. Tetapi ini tidak sebaik yang kelihatan Masalah ini menjadi jelas apabila anda menjalankan program pelaksanaan pantas, seperti:

lxc exec -- ls -al /usr/lib

Di sini proses lxc exec (dan proses forkexec yang berkaitan. Tetapi jangan fikir tentangnya sekarang, cuma ingat bahawa Go + setns() don't interact...) akan keluar sebelum semua data buffer dalam stdout telah dibaca . Keadaan ini akan mengakibatkan keluaran terpotong, yang tiada siapa yang mahu. Selepas mencuba beberapa kaedah untuk menyelesaikan masalah, termasuk melumpuhkan penimbalan pty (biar saya beritahu anda, ia tidak cantik dan tidak berfungsi seperti yang diharapkan.) dan idea pelik lain, saya berjaya melalui beberapa poll() "helah" ( Dalam erti kata "helah") menyelesaikan masalah ini. Kini anda akhirnya boleh menjalankan tugas latar belakang dan keluar sepenuhnya. Seperti yang ditunjukkan dalam gambar:

lxc exec 的魅力特征

2. Laporkan kod keluar yang disebabkan oleh isyarat

ssh ialah alat yang hebat. Tetapi satu perkara yang saya selalu tidak suka ialah ssh sentiasa melaporkan -1, iaitu kod keluar 255, apabila arahan yang dijalankan oleh ssh menerima isyarat. Ini menjengkelkan apabila anda ingin memahami isyarat yang menyebabkan program ditamatkan. Itulah sebabnya saya baru-baru ini melaksanakan konvensyen yang digunakan oleh cengkerang standard untuk melaporkan sebarang keluar yang disebabkan oleh isyarat, 128 + n, di mana n ditakrifkan sebagai semafor yang menyebabkan pelaksana keluar. Sebagai contoh, pada isyarat SIGKILL, anda akan melihat 128 + SIGKILL = 137 (kira kod keluar untuk isyarat maut lain sebagai latihan untuk pembaca). Jadi anda boleh melakukan ini:

chb@conventiont|~ 
> lxc exec zest1 sleep 100

Sekarang, hantar SIGKILL kepada pelaksana (bukan lxc exec itu sendiri, kerana SIGKILL tidak boleh dimajukan).

kill -KILL $(pidof sleep 100)

Akhirnya semak kod keluar program anda:

chb@conventiont|~
> echo $?
137

Tengok. Ini nampaknya hanya berfungsi jika a) kod keluar tidak melebihi halangan pengiraan 8-bit, dan b) apabila pelaksana tidak menggunakan 137 untuk menunjukkan kejayaan (bagaimana...menarik?!). Tiada hujah yang kelihatan sangat meyakinkan saya. Yang pertama adalah kerana semafor maut tidak boleh melebihi julat ini. Yang terakhir kerana (i) ia adalah isu pengguna, (ii) kod keluar ini sebenarnya dikekalkan (saya fikir begitu.), dan (iii) anda akan menghadapi masalah yang sama menjalankan program secara tempatan atau di tempat lain.

Kelebihan utama yang saya lihat ialah keupayaan untuk melaporkan status keluar secara terperinci kepada pelaksana. Ambil perhatian bahawa kami tidak melaporkan semua kejadian program yang dibunuh oleh isyarat. Sebagai contoh, apabila program anda dapat mengendalikan SIGTERM dan keluar dengan bersih, LXD tidak mempunyai cara mudah untuk mengesan ini dan melaporkan bahawa program itu telah dibunuh oleh isyarat. Anda hanya akan menerima kod keluar 0.

3. Isyarat hadapan

Ini mungkin tidak terlalu menyeronokkan (atau mungkin tidak, siapa tahu), tetapi saya rasa ia sangat berguna. Seperti yang anda lihat dalam kes SIGKILL, saya secara jelas menyatakan bahawa SIGKILL mesti dihantar kepada pelaksana, bukan perintah lxc exec itu sendiri. Ini kerana SIGKILL tidak boleh dikendalikan dalam program tersebut. Satu-satunya perkara yang boleh dilakukan oleh program ialah mati, seperti sekarang...seperti dalam contoh ini...segera (anda mendapat idea...). Tetapi program ini boleh mengendalikan banyak isyarat lain, SIGTERM, SIGHUP', dan sudah tentu SIGUSR1 dan SIGUSR2. Jadi apabila anda menghantar isyarat yang boleh dikendalikan oleh lxc exec` tetapi bukan oleh pelaksana, versi LXD yang lebih baharu akan memajukan isyarat kepada pelaksana. Ini sangat mudah dalam skrip.

Apa pun, saya harap anda dapati artikel kecil lxc exec ini berguna. Nikmati LXD, ia bermain dengan binatang yang cantik gila. Sila cuba percubaan dalam talian: https://linuxcontainers.org/lxd/try-it/, dan untuk pembangun lihat di sini: https://github.com/lxc/lxd dan hantarkan patch kepada kami.

Kami tidak memerlukan sebarang CLA untuk ditandatangani, kami mengikut gaya kernel selagi terdapat baris "Ditandatangani oleh" di dalamnya.


Atas ialah kandungan terperinci lxc exec: Terokai daya tarikannya yang unik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Artikel ini dikembalikan pada:Linux就该这么学. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Cara memasang dan menjalankan freedos di linux menggunakan qemuxCara memasang dan menjalankan freedos di linux menggunakan qemuxApr 29, 2025 am 10:36 AM

Panduan ini menunjukkan kepada anda bagaimana untuk menubuhkan sistem operasi yang serasi dengan DOS yang serasi dan terbuka, dalam persekitaran Linux menggunakan emulator QEMU. Ini membolehkan anda menjalankan perisian dan permainan Legacy DOS pada perkakasan moden tanpa memerlukan pemisahan

Cara Memasang Plasma KDE di Linux Mint 22Cara Memasang Plasma KDE di Linux Mint 22Apr 29, 2025 am 10:10 AM

Linux Mint, sistem operasi yang terkenal dengan kesederhanaan, kestabilan dan kemudahan penggunaannya, sangat popular dengan pengguna dan sangat sesuai untuk pemula. Ia menggunakan persekitaran desktop kayu manis secara lalai, menyediakan antara muka pengguna yang mudah dan mesra. Tetapi jika anda lebih suka melihat yang berbeza atau memerlukan lebih banyak pilihan penyesuaian, anda boleh memasang persekitaran desktop lain seperti plasma KDE. Plasma KDE adalah persekitaran desktop yang kaya dan sangat disesuaikan dengan ciri-ciri yang menyediakan pengalaman pengguna moden dan bergaya. Ia mempunyai pelbagai pilihan penyesuaian, keupayaan pengurusan tetingkap lanjutan dan estetika yang canggih, sesuai untuk pengguna yang ingin mempunyai kawalan yang lebih baik ke atas pengalaman desktop. Panduan ini akan membimbing anda langkah demi langkah untuk memasang kde pl on linux mint 22

Cara Mengurangkan Penggunaan RAM & CPU Tinggi di LinuxCara Mengurangkan Penggunaan RAM & CPU Tinggi di LinuxApr 29, 2025 am 10:05 AM

Pengoptimuman Prestasi Sistem Linux: Kurangkan penggunaan RAM dan CPU Sistem Linux adalah kuat dan cekap, tetapi penggunaan RAM dan CPU yang tinggi dapat mengurangkan prestasi, melambatkan aplikasi, dan juga menyebabkan pelayan, stesen kerja, atau sistem tertanam untuk kemalangan. Oleh itu, mengoptimumkan penggunaan sumber adalah penting untuk operasi sistem lancar. Panduan ini akan meneroka cara praktikal untuk mengurangkan penggunaan RAM dan CPU dalam sistem Linux, yang meliputi alat pemantauan, pengurusan proses, penalaan kernel dan teknologi pengoptimuman sistem untuk membantu anda memastikan sistem anda berjalan dengan cekap. Kenal pasti proses intensif sumber Langkah pertama dalam mengurangkan penggunaan RAM dan CPU adalah untuk mengenal pasti proses yang menggunakan sumber yang paling banyak. Untuk melakukan ini, anda boleh menggunakan alat baris arahan berikut: a. Gunakan atas

Cara boot ke mod pengguna tunggal di Almalinux 8/9Cara boot ke mod pengguna tunggal di Almalinux 8/9Apr 29, 2025 am 09:46 AM

Panduan Mod Pengguna Tunggal (juga dikenali sebagai Mod Penyelamat) untuk Almalinux 8 dan 9 Mod pengguna tunggal adalah persekitaran Linux yang diselaraskan yang membolehkan pentadbir sistem melaksanakan tugas penyelenggaraan, menyelesaikan masalah, dan pulih dari kegagalan sistem. Mod pengguna tunggal amat berguna apabila anda perlu menetapkan semula kata laluan root anda, menetapkan ralat konfigurasi, menetapkan sistem fail rasuah, atau menyiasat kesilapan sistem yang menghalang permulaan biasa. Sebagai pengagihan berasaskan RHEL, Almalinux 8 dan 9 menyediakan cara mudah untuk memasuki mod pengguna tunggal melalui grub boot loader. Panduan ini akan menerangkan langkah demi langkah bagaimana memasuki mod pengguna tunggal pada Almalinux 8 dan 9. Apa itu penggunaan tunggal

Penyelesaian Masalah Linux: 5 Masalah Biasa & Cara MembaikinyaPenyelesaian Masalah Linux: 5 Masalah Biasa & Cara MembaikinyaApr 29, 2025 am 09:42 AM

Sistem Linux terkenal dengan kuasa dan kebolehpercayaan mereka, tetapi juga pengguna yang berpengalaman akan menghadapi masalah yang tidak dijangka. Sama ada ia adalah fail yang tidak disangka -sangka, kata laluan root yang dilupakan, atau sistem yang perlahan berjalan, kemahiran penyelesaian masalah yang cekap adalah kunci untuk menjadi pakar Linux. Panduan ini akan memperkenalkan senario penyelesaian masalah Linux biasa dan penyelesaian langkah demi langkah yang biasa di kalangan pentadbir sistem, pemaju, dan pengguna Linux setiap hari. Adegan 1: Penghapusan fail penting yang tidak dijangka Anda secara tidak sengaja memadamkan fail penting menggunakan arahan RM dan sekarang anda perlu memulihkannya. Tidak seperti Windows dan MacOS, Linux tidak mempunyai "tong kitar semula" terbina dalam untuk menyimpan fail yang dipadam dari terminal. Pilihan pemulihan bergantung pada

Cara Mengubah Kebenaran Folder Docker secara kekal di LinuxCara Mengubah Kebenaran Folder Docker secara kekal di LinuxApr 29, 2025 am 09:35 AM

Docker adalah alat yang berkuasa yang membolehkan anda menjalankan aplikasi dalam persekitaran terpencil yang dipanggil bekas. Walau bagaimanapun, kadang -kadang anda mungkin perlu mengubah kebenaran folder Docker untuk memastikan bahawa aplikasi anda mempunyai akses kepada fail dan direktori yang diperlukan. Artikel ini akan membimbing anda melalui proses keizinan folder Docker secara kekal pada sistem Linux. Fahami Kebenaran Folder Docker Secara lalai, Docker menyimpan datanya, termasuk imej, bekas, dan jumlah, dalam direktori tertentu pada sistem Linux. Direktori yang paling biasa ialah/var/lib/docker. Kebenaran folder ini menentukan siapa yang boleh membaca, menulis, atau melaksanakan fail di dalamnya. jika

Urus Docker Like A Pro: Pasang Portainer CE di LinuxUrus Docker Like A Pro: Pasang Portainer CE di LinuxApr 29, 2025 am 09:24 AM

Memudahkan Pengurusan Docker dengan Portainer CE di Linux: Panduan Langkah demi Langkah Menguruskan bekas Docker melalui baris arahan boleh menakutkan, terutamanya untuk pendatang baru. Portainer CE (Edisi Komuniti) menawarkan solutio percuma, ringan, dan intuitif

Cara Menggunakan Whisper AI Untuk Transkripsi Audio Langsung di LinuxCara Menggunakan Whisper AI Untuk Transkripsi Audio Langsung di LinuxApr 29, 2025 am 09:18 AM

Panduan ini memperincikan cara memasang dan menggunakan Whisper AI untuk transkripsi ucapan-ke-teks masa nyata pada sistem Linux. Whisper Ai, penciptaan terbuka, menawarkan transkripsi ketepatan tinggi di pelbagai bahasa. Walaupun direka terutamanya untuk proses batch

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular