دستور disown در لینوکس
در این بخش به بررسی دستور disown در لینوکس می پردازیم، در سیستمعامل لینوکس، مدیریت فرآیندها و دستورات یکی از مهارتهای کلیدی برای کاربران است. این سیستم امکان اجرای چندین دستور بهصورت همزمان و مدیریت کارهای پسزمینه را فراهم میکند. در این میان، برخی از دستورات نیاز به اجرا در پسزمینه دارند تا کاربر بتواند به فعالیتهای دیگر خود بپردازد. یکی از دستورات پرکاربرد برای مدیریت فرآیندهای پسزمینه در لینوکس، دستور disown است. این دستور به کاربران این امکان را میدهد تا فرآیندهای در حال اجرا را از ترمینال جدا کنند و آنها را بدون دخالت از سمت ترمینال به کار خود ادامه دهند.
بسیاری از کاربران لینوکس با دستورات bg و fg برای مدیریت فرآیندهای پسزمینه آشنا هستند، اما دستور disown کاربرد خاص و مهمتری دارد. استفاده از این دستور به کاربران اجازه میدهد فرآیندهای خود را بهگونهای مدیریت کنند که حتی در صورت بستن ترمینال، آن فرآیندها همچنان به کار خود ادامه دهند. در این مقاله، بهصورت جامع و کامل با دستور disown و نحوه استفاده از آن آشنا خواهیم شد.
دستور disown چیست؟
دستور disown یکی از دستورات قدرتمند در سیستمعامل لینوکس برای مدیریت فرآیندها است. این دستور به کاربران امکان میدهد تا یک یا چند فرآیند را از ترمینال جدا کرده و بدون وابستگی به ترمینال، آنها را اجرا کنند. به عبارت دیگر، وقتی فرآیندی را با دستور disown جدا میکنید، حتی اگر ترمینال بسته شود، آن فرآیند همچنان در حال اجرا خواهد بود.
این ویژگی در مواردی که کاربران نیاز دارند فرآیندهای طولانیمدت یا پیچیده را در پسزمینه اجرا کنند و نمیخواهند به بستن ترمینال یا قطع ارتباط با سرور منجر به توقف آن فرآیندها شود، بسیار مفید است.
ساختار دستور disown
دستور disown بهصورت زیر مورد استفاده قرار میگیرد:
disown <options> <job_spec>job_spec: مشخصکننده شماره یا نام فرآیندی است که میخواهید از ترمینال جدا کنید.options: شامل گزینههایی است که میتوانید برای مدیریت بهتر فرآیندها از آنها استفاده کنید. بهعنوان مثال:-h: فرآیند را نگه میدارد و از پایان دادن به آن توسط سیگنالهای مختلف جلوگیری میکند.-r: فرآیندهایی که متوقف شدهاند را مجدداً از سر میگیرد و آنها را به پسزمینه ارسال میکند.
نحوه استفاده از دستور disown
برای درک بهتر دستور disown، به یک مثال ساده توجه کنید. فرض کنید میخواهید یک فرآیند را در پسزمینه اجرا کنید و آن را از ترمینال جدا کنید:
sleep 1000 &در اینجا دستور sleep 1000 فرآیندی ایجاد میکند که به مدت 1000 ثانیه متوقف میماند. علامت & نشان میدهد که این فرآیند در پسزمینه اجرا میشود. حالا، اگر بخواهیم این فرآیند را از ترمینال جدا کنیم، میتوانیم از دستور disown استفاده کنیم:
disownبعد از اجرای این دستور، فرآیند sleep 1000 از ترمینال جدا شده و حتی در صورت بسته شدن ترمینال به کار خود ادامه میدهد.
استفاده از disown برای فرآیندهای مشخص
در بسیاری از موارد، ممکن است چندین فرآیند در پسزمینه داشته باشید و بخواهید تنها یک یا چند فرآیند خاص را از ترمینال جدا کنید. برای این کار میتوانید از شماره فرآیند یا job_spec استفاده کنید. ابتدا، با استفاده از دستور jobs، فهرستی از فرآیندهای پسزمینه را مشاهده میکنید:
jobsاین دستور لیستی از فرآیندها به همراه شماره آنها نمایش میدهد. حالا با استفاده از شماره فرآیند، میتوانید آن را از ترمینال جدا کنید:
disown %1در این مثال، فرآیند شماره 1 از ترمینال جدا میشود.
استفاده از disown با گزینه -h
گاهی اوقات لازم است که فرآیندی را از سیگنالهای مختلفی مانند SIGHUP محافظت کنید تا در صورت بستن ترمینال متوقف نشود. گزینه -h این کار را انجام میدهد:
disown -h %1این دستور فرآیند شماره 1 را از سیگنالهای SIGHUP محافظت میکند. با این کار، حتی اگر ترمینال بسته شود یا سیگنالی ارسال شود، فرآیند به کار خود ادامه میدهد.
تفاوت disown با nohup
استفادههای عملی از دستور disown
دستور disown در موارد مختلفی کاربرد دارد، بهخصوص زمانی که نیاز به اجرای فرآیندهای طولانیمدت دارید و نمیخواهید با بستن ترمینال فرآیند متوقف شود. برخی از استفادههای عملی عبارتاند از:
- اجرای برنامههای طولانیمدت: فرض کنید در حال اجرای یک برنامه سنگین یا زمانبر مانند بکاپگیری از دیتابیس هستید. با استفاده از
disown، میتوانید فرآیند را از ترمینال جدا کنید تا حتی در صورت بستن ترمینال، فرآیند به کار خود ادامه دهد. - مدیریت سرورهای ریموت: در هنگام کار با سرورهای ریموت و اتصال از طریق SSH، ممکن است به دلایلی ارتباط شما با سرور قطع شود. با استفاده از
disown، میتوانید اطمینان حاصل کنید که فرآیندهای شما متوقف نخواهند شد. - اجرای فرآیندهای طولانی در پسزمینه: اگر نیاز دارید چندین فرآیند همزمان اجرا شوند و یکی از آنها به مدت طولانی در حال اجرا است، میتوانید با
disownآن را بهصورت مستقل مدیریت کنید.
دستور disown یکی از ابزارهای مفید و قدرتمند در مدیریت فرآیندهای پسزمینه در لینوکس است. این دستور به شما امکان میدهد تا فرآیندها را از ترمینال جدا کرده و به کار خود ادامه دهید، حتی زمانی که ترمینال بسته شود. با استفاده از مثالهای عملی و کاربردی، میتوانید فرآیندهای مختلف را بهدرستی مدیریت کنید و از اجرای مداوم آنها اطمینان حاصل کنید. در کنار ابزارهایی مانند nohup و bg، دستور disown میتواند به شما کمک کند تا تجربه بهتری از مدیریت فرآیندها در لینوکس داشته باشید.
آیا این مطلب برای شما مفید بود ؟



