centos7的systemd命令對比

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

相關文章
相關標籤/搜索