CentOS 7 sytemctl 配置及相關命令
文章目錄
systemctl簡介
CentOS 7繼承了RHEL 7的新的特性,例如強大的systemctl,而systemctl的使用也使得系統服務的/etc/init.d的啟動指令碼的方式發生重大改變,也大幅提高了系統服務的執行效率。但服務的配置和以往也發生了極大的不同,變的簡單而易用了許多(仁者見仁)。
systemd提供更優秀的框架以表示系統服務間的依賴關係,實現系統初始化時服務的並行啟動,同時達到降低Shell的系統開銷的效果。
systemd 目標是:儘可能啟動更少程序;儘可能將更多程序並行啟動,systemd儘可能減少對shell指令碼的依賴。
檢視後臺服務
systemctl --type=單位型別,用來過濾單位
alpstudy(root)system systemctl --type=service UNIT LOAD ACTIVE SUB DESCRIPTION aegis.service loaded active running LSB: aegis update. agentwatch.service loaded active exited SYSV: Starts and stops guest aliyun.service loaded active running auto run aliyunservice or ag atd.service loaded active running Job spooling tools auditd.service loaded active running Security Auditing Service cloud-config.service loaded active exited Apply the settings specified cloud-final.service loaded active exited Execute cloud user/final scr cloud-init-local.service loaded active exited Initial cloud-init job (pre- cloud-init-upgrade.service loaded active exited cloud-init upgrade service cloud-init.service loaded active exited Initial cloud-init job (meta crond.service loaded active running Command Scheduler dbus.service loaded active running D-Bus System Message Bus
[email protected] loaded active running Getty on tty1 irqbalance.service loaded active running irqbalance daemon kdump.service loaded active exited Crash recovery kernel arming kmod-static-nodes.service loaded active exited Create list of required stat network.service loaded active running LSB: Bring up/down networkin ntpd.service loaded active running Network Time Service polkit.service loaded active running Authorization Manager ● postfix.service loaded failed failed Postfix Mail Transport Agent redis.service loaded active running Redis persistent key-value d rhel-dmesg.service loaded active exited Dump dmesg to /var/log/dmesg rhel-domainname.service loaded active exited Read and set NIS domainname
服務(service):管理著後臺服務;
掛載(mount)自動掛載(automount):用來掛載檔案系統;
目票(target):執行級別;
套接字(socket):用來建立套接字,並在訪問套接字後,立即利用依賴關係間接地啟動另一單位
開機服務管理
CentOS 7的服務systemctl指令碼存放在:/usr/lib/systemd/,有系統(system)和使用者(user)之分,
/usr/lib/systemd/system/
/usr/lib/systemd/user/
像需要開機不登陸就能執行的程式,存在系統服務,即:/usr/lib/systemd/system/ 目錄下
每一個服務以.service結尾,一般會分為3部分:[Unit]、[Service]、[Install]
[Unit] 主要是對這個服務的說明,內容包括Description和After,Description用於描述服務,After用於描述服務類別
[Service] 是服務的關鍵,是服務的一些具體執行引數的設定,
Type=forking是後臺執行的形式,
PIDFile為存放PID的檔案路徑,
ExecStart為服務的具體執行命令,
ExecReload為重啟命令,
ExecStop為停止命令,
PrivateTmp=True表示給服務分配獨立的臨時空間
注意:[Service]部分的啟動、重啟、停止命令全部要求使用絕對路徑,使用相對路徑則會報錯!
[Install] 是服務安裝的相關設定,可設定為多使用者的
服務指令碼按照上面編寫完成後,以754的許可權儲存在/usr/lib/systemd/system/目錄下,這時就可以利用systemctl進行配置
示例-自定義 mongodb 開機啟動
vim /usr/lib/systemd/system/mongodb.service
[Unit]
Description=mongodb
After=auditd.service systemd-user-sessions.service time-sync.target network.target
[Service]
Type=forking
PIDFile=/var/run/mongodb/mongod.pid
ExecStart=/root/script/mongo_server_start.sh
ExecStop=/root/script/mongo_server_stop.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[Unit]:服務的說明
Description:描述服務
After:描述服務類別
[Service]服務執行引數的設定
Type=forking是後臺執行的形式
ExecStart為服務的具體執行命令
ExecReload為重啟命令
ExecStop為停止命令
PrivateTmp=True表示給服務分配獨立的臨時空間
注意:[Service]的啟動、重啟、停止命令全部要求使用絕對路徑
[Install]執行級別下服務安裝的相關設定,可設定為多使用者,即系統執行級別為3
systemctl 配置命令
systemctl status mongodb.service // 檢視mongodb啟動狀態
systemctl start mongodb.service // 啟動 mongodb
systemctl stop mongodb.service // 關閉 mongodb
systemctl enable mongodb.service // 開機啟動 mongodb 服務
systemctl disable mongodb.service // 開機關閉 mongodb 服務
systemctl list-units --type=service // 檢視所有已啟動的服務