در توزیع های لینوکسی که از systemd به عنوان init system استفاده می كنند (مانند RHEL/CentOS 7 و یا Ubuntu 15.10 به بعد و بسیاری دیگر). برای متوقف نمودن یک سرویس کافی است unit مربوط به آن سرویس را "stop" کنیم. به این صورت :
اما اگر قصد داریم در بوت بعدی سیستم عامل این سرویس استارت نشود باید آن را به این ترتیب "disable" کنیم :
اما شاید شنيده باشید که در systemd موضوعی وجود دارد به نام Unit Dependencies. به طور مثال می توانيد برای httpd.service لیست Dependency ها را ببینید :
حال اگر شما یکی از این unit ها را که httpd در حالت اجرا به آن نیاز دارد را disable کنید عملا systemd متوجه نیاز httpd به آن خواهد شد و بدون توجه به تصمیم شما برای disable و یا stop بودن unit آن را استارت می کند. در برخی موارد که ما از سرویس هايي با نقش هاي مشابه (مانند firewalld و iptables) استفاده میکنیم و قصد سوییج بین آن ها را داریم این موضوع ما را دچار سردرگمی می کند. برای جلوگیری از بروز این مشکل بهترین پیشنهاد این است که unit مورد نظر را mask نمایید :
همانطور که از خروجی دستور فوق هم مشخص است عمل mask شبیه به ساخت یک لینک به /dev/null کار میکند. حال اگر نسبت به استارت سرویس اقدام کنید با این پیام مواجه می شوید :
اگر قصد داشتید یک سرویس را از حالت mask خارج کنید از دستور زیر استفاده نمایید :
با آرزوی موفقیت
کد PHP:
# systemctl stop httpd.service
کد PHP:
# systemctl disable httpd.service
کد PHP:
# systemctl list-dependencies httpd.service
httpd.service
● ├─-.mount
● ├─system.slice
● ├─tmp.mount
● ├─var.mount
● └─basic.target
● └─-.mount
● ├─alsa-restore.service
کد PHP:
# systemctl mask httpd.service
Created symlink from /etc/systemd/system/httpd.service to /dev/null.
کد PHP:
# systemctl start httpd.service
Failed to start httpd.service: Unit httpd.service is masked
کد PHP:
# systemctl unmask httpd.service