centos7的systemd命令對比mysql
http://www.linuxidc.com/Linux/2014-09/106490p2.htm
http://www.linuxidc.com/Linux/2016-09/135464p2.htm
http://www.linuxidc.com/Linux/2014-09/106455.htmlinux
http://www.linuxidc.com/Linux/2015-04/115937.htmnginx
systemd的核心概念:unit
unit由其相關的配置文件進行標識、識別和配置,也就是說一個unit到底定義與否,由其配置文件進行標識。這類配置文件中主要包含了幾個類別:系統服務,監聽的socket、保存的快照以及其餘與init相關的信息,這些配置文件中主要保存在:
/usr/lib/systemd/system/ 每一個服務最主要的啓動腳本設置,相似於以前的/etc/init.d/
/run/systemd/system/ 系統執行過程當中所產生的服務腳本,比上面目錄優先運行
/etc/systemd/system/ 管理員創建的執行腳本,相似於/etc/rc.d/rcN.d/Sxx類的功能,比上面目錄優先運行redis
/etc/rc.d/rc3.d/ |grep mysql lrwxrwxrwx 1 root root 16 Dec 22 2016 /etc/rc.d/rc3.d/K36mysqld -> /etc/init.d/mysqld
關係sql
/etc/systemd/system/K36mysqld -> /usr/lib/systemd/system/mysqld
unit的常見類型:
service unit:這類unit的文件擴展名爲.service,主要用於定義系統服務(其扮演了在centos6上/etc/init.d/目錄下的服務腳本的做用)
target unit:這類unit的文件擴展名爲.target,主要用於模擬實現"運行級別"的概念
device unit:這類unit文件擴展名爲.device,用於定義內核識別的設備,而後udev利用systemd識別的硬件,完成建立設備文件名
mount unit:這類unit文件擴展名爲.mount,主要用於定義文件系統掛載點
socket unit:這類unit文件擴展名爲.socket,用於標識進程間通訊用到的socket文件
snapshot unit:這類unit文件擴展名爲.snapshot,主要用於實現管理系統快照
swap unit:這類unit文件擴展名爲.swap,主要用於標識管理swap設備
automount unit:這類unit文件擴展名爲.automount,主要用於文件系統自動掛載設備
path unit:這類unit文件擴展名爲.path,主要用於定義文件系統中的文件或目錄
systemd對target類unit的管理(相似於運行級別的管理)
unit配置文件:.target
運行級別的對應關係:
0 --> runlevel0.target,poweroff.target
1 --> runlevel1.target,rescue.target
2 --> runlevel2.target,multi-user.target
3 --> runlevel3.target,multi-user.target
4 --> runlevel4.target,multi-user.target
5 --> runlevel5.target,graphical.target
6 --> runlevel6.target,reboot.target
vim
systemd如何管理系統上的各個服務
systemd對服務的管理(service類unit的管理)
主要是依靠service類型的unit文件進行管控的完成的
systemctl命令:
語法:systemctl [OPTIONS…] COMMAND [SERVICE_NAME.service…]
centos7裏面狀態信息裏顯示的loaded 表示是否加入到systemctl可管理的列表中(相似centos6中chkconfig –add的概念,若是是loaded,表示已經添加到列表中,後面disabled表示沒有開機自動啓動)
查看全部的服務,也就是全部已經裝載load的服務,包含已激活和未激活的:
chkconfig –-list ==> systemctl list-units -t service -a
顯示出來的信息的含義:
loaded:Unit配置文件已處理
active(running):一次或屢次持續處理的運行
active(exited):成功完成一次性的配置
active(waiting):運行中,等待一個事件
inactive:不在運行
enabled:開機啓動
disabled:開機不啓動
static:開機不啓動,但可被另外一個啓用的服務激活
centos7-》centos6
服務啓動centos
systemctl start servicename.service -> service servicename start
服務中止ssh
systemctl stop servicename.service -> service servicename stop
服務重啓socket
systemctl restart servicename.service -> service servicename restart
服務狀態函數
systemctl status servicename.service -> service servicename status
服務重載
systemctl reload-or-restart servicename.service -> /bin/kill -HUP servicename
服務詳細信息,只能看到enabled的服務,不徹底等價於 chkconfig --list
systemctl list-units -t service -a |grep servicename -> chkconfig --list |grep servicename
設置開機啓動/禁用
systemctl enable/disable servicename.service -> chkconfig servicename on/off
查看服務依賴關係
systemctl list-dependencies servicename.service -> 無
查看禁用的服務
systemctl is-enabled servicename.service
添加服務,不徹底等價於chkconfig --add
systemctl daemon-reload -> chkconfig --add servicename
運行級別切換
systemctl isolate name.target -> init 運行級別對應數字
查看當前運行級別
systemctl list-units -t target -> runlevel
查看全部loaded的target
systemctl list-units -t target -a -> 無
查看默認運行級別
systemctl get-default -> 查看/etc/inittab文件中的定義
設定默認運行級別
systemctl set-default name.target -> 修改/etc/inittab文件中的定義
系統引導時間分析
systemd-analyze blame
centos7新增的緊急模式和救援模式
centos7啓動項變化
系統啓動時,經過修改grub選項中的相關內核參數,實現啓動時進入不一樣的模式(緊急救援模式、emergency模式)
在啓動時,啓動菜單項按e鍵,而後在linux16行後添加:(設置內核參數,隻影響當次啓動)
按ctrl-x啓動
systemd版本
cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
systemctl --version
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN
f
f
service unit file文件的組成
如利用systemctl set-default runlevel5.target 修改默認運行級別後,原來/etc/systemd/system/default.target會從新連接到/usr/lib/systemd/system/graphical.target
service unit file文件的組成:
文件一般由三部分組成:
[Unit]:定義與Unit類型無關的通用選項,用於提供unit的描述信息,unit行爲及依賴關係等;
[Service]:與特定類型相關的專用選項,此處爲service類型
[Install]:定義由「systemctl enable」以及「systemctl disable」命令在實現服務啓用或僅用時用到的一些選項;
unit段的經常使用選項:
Description:描述信息,意義性描述
After:定義unit啓動次序,表示當前unit應該晚於哪些unit啓動,其功能與Before相反
Requies:依賴到的其餘units;強依賴,被依賴的unit沒法激活時,當前unit也沒法激活
Wants:指明依賴到的其餘units;弱依賴,被依賴的unit沒法激活時,當前unit能夠被激活
Conflicts:定義units間的衝突關係
service段的經常使用選項:
Type:用於定義ExecStart及相關參數的功能的unit進程啓動類型;
類型:
simple:默認值,表示由ExecStart啓動的進程爲主進程
forking:表示由ExecStart啓動的進程生成的其中一個子進程將成爲主進程,啓動完成後,父進程會退出
oneshot:功能相似於simple,可是在啓動後續的units進程以前,主進程將會退出
notify:相似於simple,表示後續的units,僅在經過sdnotify函數發送通知之後,才能運行該命令
idle:
常見的是notify、forking、simple
EnvironmentFile :指明環境配置文件,爲真正ExecStart執行以前提供環境配置或變量定義等文件
ExecStart:指明啓動unit要運行的命令或腳本;ExecStartPre、ExecStartPost表示啓動前或啓動後要執行的命令或腳本
ExecStop:指明中止unit要運行的命令或腳本
Restart:表示進程意外終止了,會自動重啓
install段的經常使用選項:
Alias:當前unit的別名
RequiredBy:被那些units所依賴,強依賴
WantedBy:被那些units所依賴,弱依賴
cat /usr/lib/systemd/system/sshd.service [Unit] Description=OpenSSH server daemon Documentation=man:sshd(8) man:sshd_config(5) After=network.target sshd-keygen.service Wants=sshd-keygen.service [Service] Type=forking PIDFile=/var/run/sshd.pid EnvironmentFile=/etc/sysconfig/sshd ExecStart=/usr/sbin/sshd $OPTIONS ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target
添加服務步驟
xx.service 模版
vim /usr/lib/systemd/system/xx.service #改
[Unit] Description=xx Server #改 After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] Type=forking #PIDFile=/var/run/mysqld.pid ExecStart=/usr/local/mysql/support-files/mysql.server start #改 /etc/init.d/nginx ExecStop=/usr/local/mysql/support-files/mysql.server stop #改 PrivateTmp=true
第一步:
vim /usr/lib/systemd/system/mysqld.service
[Unit] Description=MySQL Server After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] Type=forking #PIDFile=/var/run/mysqld.pid ExecStart=/usr/local/mysql/support-files/mysql.server start ExecStop=/usr/local/mysql/support-files/mysql.server stop PrivateTmp=true
第二步註冊
systemctl daemon-reload
第三步查看是否註冊成功
systemctl is-enabled mysqld.service
第四步設置開機啓動
systemctl enable mysqld.service
第五步啓動服務
systemctl start mysqld.service
------------------------------------------------------------
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
或者本身寫一個腳本啓動中止redis也能夠
ExecStart=/tmp/redisinstall.sh start
ExecStop=/tmp/redisinstall.sh stop
記錄 systemd 的日誌
journald是systemd獨有的日誌系統,替換了sysV init中的syslog守護進程。命令journalctl用來讀取日誌。
查看引導信息
journalctl -b命令來查看全部引導日誌。
journalctl -b
即時顯示引導日誌
實時顯示系統日誌(相似tail -f)。
journalctl -f
查看特定服務的日誌
運用journalctl來查看你只想看到的服務或可執行程序的日誌。
journalctl /usr/sbin/dnsmasq
f