اجرای دستورات لینوکس در پسزمینه به شما امکان میدهد که برنامهها و اسکریپتها را بدون نیاز به تعامل مداوم با آنها اجرا کنید. این قابلیت به خصوص برای انجام کارهای طولانی، مانند دانلود فایلها، پردازش دادهها یا اجرای سرویسها بسیار مفید است. در این مقاله، ۸ روش برای اجرای دستورات لینوکس در پسزمینه را بررسی خواهیم کرد.
۱. استفاده از عملگر `&`
سادهترین راه برای اجرای یک دستور در پسزمینه، استفاده از عملگر `&` در انتهای دستور است. این روش باعث میشود دستور مورد نظر در پسزمینه اجرا شود و شما بتوانید به اجرای دستورات دیگر ادامه دهید.
command &
برای مثال:
sleep 60 &
پس از اجرای این دستور، شماره فرآیند (PID) به شما نمایش داده میشود و میتوانید به کارهای دیگر ادامه دهید.
۲. استفاده از `nohup`
اگر میخواهید دستوری حتی بعد از بستن ترمینال به کار خود ادامه دهد، میتوانید از `nohup` استفاده کنید. این دستور خروجی را به یک فایل به نام `nohup.out` هدایت میکند و به شما این امکان را میدهد که حتی در صورت قطع اتصال از سرور، فرآیند متوقف نشود.
nohup command &
برای مثال:
nohup python script.py &
۳. استفاده از `disown`
اگر فرآیندی را با `&` در پسزمینه اجرا کردهاید و میخواهید آن را از ترمینال جدا کنید، میتوانید از `disown` استفاده کنید. این روش به شما کمک میکند که فرآیند حتی بعد از بستن ترمینال به کار خود ادامه دهد.
command &
disown
برای مثال:
sleep 1000 &
disown
۴. استفاده از `screen`
`screen` یک ابزار قدرتمند است که به شما امکان میدهد جلسات ترمینال جداگانهای ایجاد کنید و فرآیندها را در آنها اجرا کنید. حتی اگر اتصال شما به سرور قطع شود، میتوانید مجدداً به جلسات `screen` متصل شوید.
screen
سپس دستور مورد نظر را اجرا کنید و با استفاده از کلیدهای `Ctrl + A` و `D` از جلسه خارج شوید. برای بازگشت به جلسه، از دستور زیر استفاده کنید:
screen -r
۵. استفاده از `tmux`
`tmux` مشابه `screen` است، اما دارای ویژگیهای پیشرفتهتر و مدیریت پنجرههای چندگانه است. میتوانید با `tmux` یک جلسه ایجاد کنید، فرآیندها را در پسزمینه اجرا کنید و در هر زمانی به جلسه خود بازگردید.
tmux new -s mysession
دستور خود را اجرا کنید، سپس از جلسه خارج شوید:
Ctrl + B, D
برای بازگشت به جلسه، از دستور زیر استفاده کنید:
tmux attach -t mysession
۶. استفاده از `bg` و `fg`
اگر دستوری را اجرا کردهاید و سپس با فشردن `Ctrl + Z` آن را متوقف کردهاید، میتوانید با استفاده از `bg` آن را به پسزمینه بفرستید و یا با `fg` آن را دوباره به پیشزمینه بازگردانید.
command
Ctrl + Z
bg
برای مثال:
ping google.com
Ctrl + Z
bg
۷. استفاده از `&>` و هدایت خروجیها
اگر میخواهید خروجیهای دستور خود را به یک فایل خاص هدایت کنید، میتوانید از `&>` استفاده کنید. این کار به شما کمک میکند خروجیهای استاندارد و خطاهای استاندارد را به یک فایل هدایت کنید تا ترمینال شما از پیامهای اضافی پر نشود.
command &> output.log &
۸. استفاده از `systemd` برای فرآیندهای طولانیمدت
اگر میخواهید یک سرویس یا فرآیند طولانیمدت را به طور مداوم اجرا کنید، میتوانید یک واحد (unit) `systemd` ایجاد کنید. این روش مخصوصاً برای راهاندازی سرویسهایی که نیاز به مدیریت خودکار دارند مفید است.
ابتدا یک فایل واحد جدید ایجاد کنید:
sudo nano /etc/systemd/system/myservice.service
سپس محتوای زیر را وارد کنید:
[Unit]
Description=My Background Service
[Service]
ExecStart=/usr/bin/mycommand
Restart=always
[Install]
WantedBy=multi-user.target
سپس واحد را فعال و راهاندازی کنید:
sudo systemctl enable myservice
sudo systemctl start myservice
نتیجهگیری
روشهای مختلفی برای اجرای دستورات لینوکس در پسزمینه وجود دارد که هر کدام مزایا و کاربردهای خاص خود را دارند. با انتخاب روش مناسب بر اساس نیاز خود، میتوانید به طور کارآمدتری از منابع سیستم استفاده کنید و فرآیندهای طولانی را بدون نگرانی از قطع شدن اجرا کنید.