از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش استفاده از Nohup در لینوکس
سرفصلهای مطلب
تصور کنید اگر انتقادی است process در حال اجراست روی سیستم شما و زمان زیادی می برد. ناگهان باید از سیستم خود خارج شوید. اگر از سیستم خارج شوید، فرآیندهای شما متوقف می شود و مطمئناً می خواهید از این کار جلوگیری کنید. اگر دویدن خود را می خواهید process برای ادامه بدون وقفه، پس به دستور nohup نیاز دارید.
Nohup (مخفف no hangup) فرمانی است که سیگنال HUP را نادیده می گیرد. ممکن است تعجب کنید که سیگنال HUP چیست. اساساً سیگنالی است که به a تحویل داده می شود process هنگامی که پوسته مرتبط با آن خاتمه می یابد. معمولاً وقتی از سیستم خارج میشویم، تمام برنامهها و فرآیندهای در حال اجرا قطع یا متوقف میشوند. اگر بخواهیم به اجرای آن ادامه دهیم process حتی پس از خروج یا قطع شدن از پوسته فعلی، می توانیم از دستور nohup استفاده کنیم. این فرآیندها را در برابر سیگنال های HUP ایمن می کند تا برنامه حتی پس از خروج از سیستم اجرا شود. با nohup، دیگر نیازی به ورود به سیستم برای مدت طولانی ندارید تا منتظر بمانید process تکمیل شود.
در این مقاله روش استفاده از دستور Nohup را در سناریوهای مختلف در لینوکس توضیح خواهیم داد.
نحو دستور Nohup
برای استفاده از دستور nohup، نحو عبارت است از:
یا
برای یافتن راهنمایی در مورد دستور nohup، از دستور زیر استفاده کنید:
برای پیدا کردن اطلاعات نسخه nohup از دستور زیر استفاده کنید:
شروع یک process با استفاده از Nohup
اگر می خواهید یک فرمان را حفظ کنید یا process در حال اجرا حتی اگر از پوسته خارج شوید، از nohup و به دنبال آن دستور برای اجرا استفاده کنید:
پس از اجرای دستور بالا، تمام خروجی ها به همراه پیام های خطا به فایل nohup.out در دایرکتوری Home یا دایرکتوری فعلی اضافه می شوند. حال اگر پوسته بسته شود یا از سیستم خارج شوید، دستور اجرا شده در بالا خاتمه نمییابد.
تغییر مسیر خروجی به فایل های مختلف
به طور پیش فرض، خروجی دستور nouhup به فایل nohup.out اضافه می شود. برای تغییر مسیر این خروجی به فایل دیگری، از عملگر > redirector و نام فایل خاص استفاده کنید. به عنوان مثال، ما از دستور زیر برای ذخیره خروجی دستور nohup در فایل جدیدی به نام myscript.sh استفاده کرده ایم.
شروع یک process در پس زمینه با استفاده از Nohup
برای شروع و قرار دادن process در پس زمینه، باید از nohup به صورت زیر استفاده کنید:
را & نماد به پوسته می گوید که دستور را در پس زمینه اجرا کند. این دستور مشابه دستور nohup بالا است با این تفاوت که وقتی جلسه به پایان می رسد، بلافاصله به اعلان پوسته باز می گردد. برای بازگرداندن آن به خط مقدم، از دستور “fg” استفاده کنید.
خروجی تمام دستوراتی که اجرا می کنید به فایل nohup.out اضافه می شود. شما می توانید این فایل را با استفاده از دستور cat nohup در ترمینال مشاهده کنید. شماره 80132 در تصویر بالا نشان می دهد process شماره شناسایی (PID) از process در حال اجرا در پس زمینه
چندین فرآیند را در پس زمینه با استفاده از Nohup شروع کنید
با استفاده از دستور nohup می توانید چندین دستور را در پس زمینه اجرا کنید. در مثال زیر دستورات mkdir، ping و ls با استفاده از دستور nohup در پس زمینه اجرا می شوند.
ping -c 1 google.com && ls’> output.txt
خاتمه دادن process در حال اجرا در پس زمینه
خاتمه دادن به الف process در حال اجرا در پس زمینه، از دستور kill به صورت زیر استفاده کنید:
PID a را پیدا خواهید کرد process هنگام استفاده از nohup با “&”. راه دیگر برای یافتن PID از طریق دستور pgrep –a است. برای مثال، اگر فرمان Ping را با nohup اجرا کرده باشید، حتی اگر پوسته را ببندید، در پسزمینه اجرا میشود. حالا در این مورد، برای پیدا کردن PID یک پینگ process در حال اجرا در پس زمینه، از این دستور استفاده کنید:
تمام فرآیندهای مرتبط با دستور Ping را فهرست می کند.
حالا برای خاتمه دادن به پینگ process در حال اجرا در پس زمینه، از دستور kill به صورت زیر استفاده کنید:$ kill -9 80928بنابراین، این معرفی کوتاه دستور nohup در لینوکس بود. دستور Nohup برای جلوگیری از موارد مهم استفاده می شود process از پایان یافتن زمانی که از سیستم خارج می شوید یا جلسه را می بندید. زمانی که در حال اجرا هستید کمک زیادی می کند processبه خصوص اسکریپت هایی که تکمیل آنها زمان زیادی می برد.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-31 05:49:04