Manajemen Proses
Cara LucidLines mengelola dan mengontrol proses Anda.
Siklus Hidup Proses
Memulai Proses
Ketika LucidLines dimulai, ia:
- Mengurai perintah Anda dari CLI atau file konfigurasi
- Membuat setiap proses menggunakan Node.js
child_process.spawn - Mengatur streaming output ke antarmuka web
- Memantau kesehatan proses dan kode keluar
Konfigurasi Proses
Setiap proses didefinisikan dengan nama dan perintah:
json5
{
commands: [
{
name: "web-server",
command: "npm run dev"
}
]
}Setup Lingkungan
LucidLines secara otomatis mengkonfigurasi lingkungan untuk output yang lebih baik:
FORCE_COLOR=1- Memaksa output berwarnaCLICOLOR_FORCE=1- Memaksa warna CLICOLORTERM=truecolor- Mengaktifkan dukungan warna sejati
Kontrol Proses
Kontrol Keyboard (Terminal Interaktif)
Ketika berjalan di terminal interaktif dengan perintah yang dikonfigurasi, Anda dapat mengontrol proses melalui keyboard:
- Tombol Angka (1, 2, 3...) - Mulai ulang proses tertentu
- r - Mulai ulang semua proses
- ctrl+c - Keluar aplikasi
Kontrol Programatik
Proses dapat dikontrol secara programatik melalui API.
Pemantauan Proses
Output Real-time
- Semua stdout/stderr ditangkap dan dialirkan
- Output warna dipertahankan jika memungkinkan
- Output besar ditangani secara efisien
Penyimpanan Data
Output proses disimpan menggunakan sistem DataBank:
- Penyimpanan persisten dengan LevelDB (JavaScript murni, tanpa dependensi native)
- Persistensi file sementara untuk retensi data
- Arsitektur berbasis event untuk pembaruan real-time
- Pembersihan otomatis saat keluar aplikasi
DataBank memisahkan output proses dari konsumsi antarmuka web, memungkinkan:
- Buffering pesan terbaru untuk klien baru
- Query efisien berdasarkan tipe proses dan timestamp
- Manajemen memori dengan batas yang dapat dikonfigurasi
- Persistensi data dengan keandalan LevelDB
Kesehatan Proses
- Kode keluar dipantau
- Proses yang gagal dicatat
- Kemampuan restart otomatis
Manajemen Data
Arsitektur DataBank
LucidLines menggunakan sistem manajemen data yang disebut DataBank:
typescript
interface LogEntry {
type: string; // Process name (e.g., "web-server")
data: string; // Output line
timestamp: number; // Unix timestamp
}Strategi Penyimpanan
- Utama: LevelDB untuk persistensi yang andal (JavaScript murni, tanpa dependensi native)
- Direktori sementara: Dihapus otomatis saat proses keluar
- Pembersihan: Penghapusan otomatis saat proses keluar
- Performa: Pengurutan key berbasis timestamp untuk query yang efisien
Alur Data
- Output Proses → Ditangkap oleh NodeStream
- Penyimpanan DataBank → Disimpan dengan metadata
- Emisi Event → Pembaruan real-time ke subscriber
- Streaming WebSocket → Dikirim ke klien yang terhubung
Kemampuan Query
DataBank menyediakan query yang kaya untuk berbagai kasus penggunaan:
- Pesan Terbaru: Dapatkan output terbaru untuk klien baru
- Filter Tipe: Query berdasarkan proses tertentu
- Berbasis Waktu: Ambil pesan dalam rentang waktu
- Paginasi: Penanganan efisien dataset besar
Manajemen Memori
- Batas yang Dapat Dikonfigurasi: Default 1000 pesan terbaru
- Pembersihan Otomatis: Dipicu saat proses berakhir
- Pemantauan Resource: Pelacakan penggunaan memori
- Degradasi Graceful: Performa di bawah beban