mprocs - Cheatsheet تشغيل أوامر متعددة على التوازي
يشغل mprocs عدة أوامر طويلة الأجل في نفس الوقت كل منها في حقله الخاص به مع الإخراج والملخص المستقل، والتحكم من واجهة مستخدم موحدة واحدة. وهو مصمم للموقف الشائع في التطوير حيث ستفتح بخلاف ذلك طرافة متعددة أو انقسامات tmux لتشغيل خادم واجهة أمامية وخلفية ومراقب وقاعدة بيانات. تحدد العمليات مرة واحدة في ملف إعداد وتبدأها جميعًا معًا.
التثبيت
| المنصة | الأمر |
|---|
| Cargo (جميع المنصات) | cargo install mprocs |
| macOS (Homebrew) | brew install mprocs |
| npm | npm install -g mprocs |
| Arch Linux (AUR) | yay -S mprocs |
| Scoop (Windows) | scoop install mprocs |
| الملف الثنائي المُنشأ مسبقًا | التحميل من صفحة GitHub Releases |
الاستخدام الأساسي
| الأمر | الوصف |
|---|
mprocs | ابدأ باستخدام mprocs.yaml في الدليل الحالي |
mprocs "npm run dev" "npm run api" | تشغيل الأوامر المخصصة كحقول |
mprocs -c path/to/mprocs.yaml | استخدم ملف إعداد معين |
mprocs --names web,api "npm run dev" "cargo run" | اسم الحقول المخصصة |
mprocs --help | قائمة الخيارات الكاملة |
الإعداد (mprocs.yaml)
procs:
web:
shell: "npm run dev"
api:
shell: "cargo run"
db:
shell: "docker compose up postgres"
autostart: false # ابدأ به يدويًا باستخدام الواجهة
worker:
cmd: ["python", "worker.py"]
cwd: "./backend"
env:
LOG_LEVEL: debug
| الحقل | الغرض |
|---|
shell | أمر يتم تشغيله عبر shell |
cmd | أمر كقائمة argv (بدون تحليل shell) |
cwd | دليل العمل للعملية |
env | متغيرات البيئة لكل عملية |
autostart | ما إذا كانت العملية تبدأ عند الإطلاق |
stop | كيفية إيقافها (SIGTERM أو SIGKILL أو hard-kill) |
عناصر التحكم بلوحة المفاتيح
| المفتاح | الإجراء |
|---|
Ctrl+a ثم j/k | تحريك التحديد لأسفل/أعلى قائمة العملية |
Ctrl+a ثم s | ابدأ العملية المحددة |
Ctrl+a ثم x | أيقف العملية المحددة |
Ctrl+a ثم r | أعد تشغيل العملية المحددة |
Ctrl+a ثم a | تبديل التركيز بين القائمة والحقل (التفاعل مع العملية) |
Ctrl+a ثم c | نسخ الوضع / تمرير إخراج الحقل |
Ctrl+a ثم q | الخروج من mprocs (إيقاف جميع العمليات) |
| الماوس | انقر فوق عملية لاختيارها؛ مرر إخراجها |
البادئة الافتراضية هي Ctrl+a؛ وهي قابلة للتكوين. اضغط على البادئة وحررها ثم مفتاح الإجراء.
التحكم عن بعد
يمكن التحكم في mprocs بشكل برمجي وهو مفيد من البرامج النصية أو مهام المحرر.
# أرسل أمرًا إلى مثيل mprocs قيد التشغيل عبر مقبسه
mprocs --ctl '{c: restart-proc, proc: web}'
سير العمل الشائع
# أمر واحد لجلب مكدس محلي كامل محدد في mprocs.yaml
mprocs
# سريع مؤقت: مراقبة الاختبارات وخادم تطوير جنبًا إلى جنب
mprocs --names test,dev "npm test -- --watch" "npm run dev"
# الاحتفاظ بحقل قاعدة البيانات حاضرًا ولكن ابدأ به فقط عند الحاجة (autostart: false)
mprocs مقابل البدائل
| الأداة | النموذج | الأفضل لـ |
|---|
| mprocs | TUI وحقل واحد لكل عملية | مجموعات عمليات التطوير والتكوين البسيط |
| tmux | مضاعف طرفية كامل | الجلسات والانقسامات والاستقرار البعيد |
| foreman/overmind | عداءو Procfile | إدارة العمليات المستندة إلى Procfile |
| GNU parallel | توازن دفعي | تشغيل العديد من المهام القصيرة وليس الخوادم طويلة الأجل |
الموارد