خوش آمدید - امروز : شنبه ۴ خرداد ۱۳۹۸
خانه » آموزش کانفیگ سرور » بررسی تفاوت disable و mask در systemd لینوکس

بررسی تفاوت disable و mask در systemd لینوکس

در توزیع های لینوکسی که از systemd به عنوان init system استفاده می كنند (مانند RHEL/CentOS 7 و یا Ubuntu 15.10 به بعد و بسیاری دیگر). برای متوقف نمودن یک سرویس کافی است unit مربوط به آن سرویس را “stop” کنیم. به این صورت:

# systemctl stop httpd.service

اما اگر قصد داریم در بوت بعدی سیستم عامل این سرویس استارت نشود باید آن را به این ترتیب “disable” کنیم:

# systemctl disable httpd.service

اما شاید شنيده باشید که در systemd موضوعی وجود دارد به نام Unit Dependencies. به طور مثال می توانيد برای httpd.service لیست Dependencyها را ببینید:

# systemctl list-dependencies httpd.service
httpd.service
● ├─-.mount
● ├─system.slice
● ├─tmp.mount
● ├─var.mount
● └─basic.target
● └─-.mount
● ├─alsa-restore.service

حال اگر شما یکی از این unitها را که httpd در حالت اجرا به آن نیاز دارد را disable کنید عملا systemd متوجه نیاز httpd به آن خواهد شد و بدون توجه به تصمیم شما برای disable و یا stop بودن unit آن را استارت می کند. در برخی موارد که ما از سرویس هايي با نقش هاي مشابه (مانند firewalldو iptables) استفاده میکنیم و قصد سوییج بین آن ها را داریم این موضوع ما را دچار سردرگمی می کند. برای جلوگیری از بروز این مشکل بهترین پیشنهاد این است که unit مورد نظر را mask نمایید:

# systemctl mask httpd.service
Created symlink from /etc/systemd/system/httpd.service to /dev/null.

همانطور که از خروجی دستور فوق هم مشخص است عمل mask شبیه به ساخت یک لینک به /dev/null کار میکند. حال اگر نسبت به استارت سرویس اقدام کنید با این پیام مواجه می شوید:

# systemctl start httpd.service
Failed to start httpd.service: Unit httpd.service is masked

اگر قصد داشتید یک سرویس را از حالت mask خارج کنید از دستور زیر استفاده نمایید:

# systemctl unmask httpd.service
امتیاز 5.00 ( 4 رای )
اشتراک گذاری مطلب

کلیه حقوق مادی و معنوی مطالب و مقالات متعلق به وب سایت انجین ایکس وب میباشد - طراحی شده توسط پارس تمز