منبع اصلی نوشتار زیر در این لینک قرار دارد

انتقال فرایند (دستور) در حال اجرا از یک ترمینال به ترمینال دیگر

reptyr برنامه (دستوری) به زبان C است که این امکان را می دهد تا یک فرایند (دستور) در حال اجرا را از ترمینالی که در حال اجرا بر روی آن است به ترمینالی دیگر منتقل کرد. این کار بدون نیاز به قطع اجرای فرایند (دستور) و راه اندازی مجدد آن فرایند صورت می گیرد. در واقع عملیات مهاجرت فرایند یا Process Migrate بدون قطعی انجام خواهد شد.

فرض کنید با استفاده از ssh به یک ماشین لینوکسی متصل شده اید و یک دستور (فرایند) با زمان اجرای طولانی (مانند گرفتن پشتیبان) را بر روی ترمینال (tty) اختصاص داده شده به اتصال ssh اجرا خواهید کرد. به هر دلیلی امکان قطع شدن اتصال ssh وجود دارد که به طبع آن باعث پایان یافتن دستور (فرایند) در حین اجرا خواهد شد.

reptyr این امکان را می دهد که اجرای دستور (فرایند) را به یک ترمینال دیگر منتقل کنید، بدون آنکه با قطع کردن اتصال ssh اجرای آن دستور (فرایند) قطع نشود. روش کار به این صورت خواهد بود که پس از نصب reptyr، با اجرای آن بر روی یک ترمینال (مانند ترمینال های مجازی یا پنجره های ترمینال در محیط های گرافیکی)، اجرای آن دستور یا فرایند از ترمینال جاری به ترمینالی که دستور reptyr در آن اجرا شده است، منتقل می شود.

ساده ترین شکل استفاده از دستور reptyr، به این صورت است که تنها شناسه یا  PID فرایند (دستور) را به reptyr معرفی کنید. فرض کنید از طریق اتصال ssh دستور / find را اجرا کرده اید (این دستور چیز خاصی نیست و تنها برای تست استفاده شده است).

نصب reptyr در تمامی توزیع های لینوکسی توسط دستورهای زیر انجام می گیرد. ابتدا لازم است که reptyr را با دستور git دانلود و سپس با دستور cd به فایل (دایرکتوری) آن وارد شده و سپس برای کامپایل و نصب دستور make را اجرا کنید.

git clone https://github.com/nelhage/reptyr.git

cd reptyr

reptyr_1

make

reptyr_2

پس از نصب برای اجرای دستور، دستور زیر را در زیر دایرکتوری reptyr اجرا کنید. PID شناسه دستور (فرایند) است که می خواهیم آنرا به ترمینالی که دستور reptyr را اجرا کرده ایم منتقل کنیم.

reptyr/. PID_OFF_PROC_OR_CMD

با فرض آنکه شناسه دستور / find برابر 13197 باشد و مطابق شکل زیر پیش از اجرای دستور reptyr، دستور find در برگه شماره 1 در حال اجرا باشد و دستور reptyr را در ترمینال شماره 2 اجرا کنیم، ادامه اجرای دستور / find بدون توقف از برگه 1 به برگه 2 منتقل خواهد شد.

reptyr 13197/.

reptyr_3

همانطور که مشخص است اجرای دستور در ترمینال شماره 1 Stop (متوقف) شده و ادامه آن در ترمینال شماره 2 انجام خواهد شد.



برچسب ها : , , ,