[svc]centos7的服务治理-systemd
经常用到的高频命令小结
- 所有服务unit放在这里
ll /usr/lib/systemd/system
- 默认启动级别
[root@n1 ~]# ll /etc/systemd/system/default.target
lrwxrwxrwx 1 root root 41 Mar 4 09:02 /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target
- 开机启动的服务
ll /etc/systemd/system/multi-user.target.wants/
- 哪些服务开机会启动
[root@n1 ~]# systemctl list-unit-files --type service |grep enable
autovt@.service enabled
crond.service enabled
docker.service enabled
getty@.service enabled
ntpdate.service enabled
rsyslog.service enabled
sshd.service enabled
sysstat.service enabled
- 目前哪些服务处于active状态
[root@n1 ~]# systemctl list-units --type service |grep active
crond.service loaded active running Command Scheduler
dbus.service loaded active running D-Bus System Message Bus
docker.service loaded active running Docker Application Container Engine
getty@tty1.service loaded active running Getty on tty1
- 查看某个服务是否开机自启
systemctl is-enabled httpd.service 或
systemctl status httpd.service
systemd 有很多unit,其中service.unit是管理系统服务的.
unit的类型
/usr/lib/systemd/system
查看管理系统服务的相关的, 即 .service后缀的
[root@n1 system]# ls /usr/lib/systemd/system/*.service|more
/usr/lib/systemd/system/arp-ethers.service
/usr/lib/systemd/system/auditd.service
/usr/lib/systemd/system/autovt@.service
/usr/lib/systemd/system/blk-availability.service
/usr/lib/systemd/system/brandbot.service
...
特点:
不需要可执行权限,其内容也不能执行
仅是systemd的调用的配置文件
unit类型 | 作用 |
---|---|
Service unit | 管理系统服务,我们暂且只关心这个 |
Target unit | 多个Unit构成的一个组 |
Device Unit | 硬件设备 |
Mount Unit | 文件系统的挂载点 |
Automount Unit | 自动挂载点 |
Path Unit | 文件或路径 |
Scope Unit | 不是由 Systemd 启动的外部进程 |
Slice Unit | 进程组 |
Snapshot Unit | Systemd 快照,可以切回某个快照 |
Socket Unit | 进程间通信的 socket |
Swap Unit | swap 文件 |
Timer Unit | 定时器 |
centos6 chkconfig VS 使用systemd的service unit治理centos7服务
任务 | 旧指令 | 新指令 |
---|---|---|
哪些服务正在跑? | chkconfig --list\grep 3:on | systemctl list-units --type=service |
哪些服务开机会自启动? | chkconfig --list | systemctl list-unit-files --type=service |
使httpd开机自启动 | chkconfig --level 3 httpd on | systemctl enable httpd.service |
使httd开机不自启动 | chkconfig --level 3 httpd off | systemctl disable httpd.service |
查看httpd现在是否启动着 | service httpd status | systemctl status httpd.service (服务详细信息) |
启动某服务 | /etc/init.d/httpd start | systemctl start httpd.service |
停止某服务 | /etc/init.d/httpd stop | systemctl stop httpd.service |
重启某服务 | /etc/init.d/httpd restart | systemctl restart httpd.service |
所有已装载的级别(而非当前级别) | runlevel | systemctl list-units --type target |
查看默认级别是啥 | cat /etc/inittab | systemctl get-default |
设置默认级别 | init 3 | systemctl set-default multi-user.target |
查看服务状态 | /etc/init.d/http status | systemctl is-enabled httpd.service/systemctl status httpd.service |
默认启动第一个进程 | init | systemd |
ls /usr/lib/systemd/system/*.service|more 下以service开头的文件,都是和系统服务有关的, 其下还有别的后缀的服务.是别的unit的配置文件.
serivice unit配置
target unit: 的含义是服务组,表示一组服务。
将很多服务放在一坨, 开启启动时候加载这个文件.
启动级别
/usr/lib/systemd/system
/etc/systemd/system
runlevel0.target -> poweroff.target
runlevel2.target -> multi-user.target
runlevel3.target -> multi-user.target
runlevel4.target -> multi-user.target
runlevel5.target -> graphical.target
runlevel6.target -> reboot.target
注意: centos7里,运行级别234没区别.
查看在运行的服务
我们看ACTIVE就ok了,SUB这一列可以不用理会
[root@n1 system]# systemctl list-units --type=service
UNIT LOAD ACTIVE SUB DESCRIPTION
crond.service loaded active running Command Scheduler
dbus.service loaded active running D-Bus System Message Bus
docker.service loaded active running Docker Application Container Engine
getty@tty1.service loaded active running Getty on tty1
httpd.service loaded active running The Apache HTTP Server
查看开机是否会启动
[root@n1 system]# systemctl list-unit-files --type=service
UNIT FILE STATE
arp-ethers.service disabled
auditd.service disabled
autovt@.service enabled #开机会启动
blk-availability.service disabled#开机不会启动
brandbot.service static #这类不用管
conntrackd.service disabled
设置开机自动启动细节
[root@n1 ~]# yum install psmisc -y
[root@n1 ~]# pstree
systemd─┬─agetty
├─crond
├─dbus-daemon
├─dockerd─┬─docker-containe─┬─docker-containe─┬─mysqld───20*[{mysqld}]
│ │ │ └─8*[{docker-containe}]
│ │ └─9*[{docker-containe}]
│ ├─docker-proxy───3*[{docker-proxy}]
│ └─11*[{dockerd}]
├─httpd───8*[httpd]
├─lvmetad
├─polkitd───5*[{polkitd}]
├─rsyslogd───2*[{rsyslogd}]
├─sshd───sshd───bash───pstree
├─systemd-journal
├─systemd-logind
└─systemd-udevd
[root@n1 system]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
相当于执行
ln -s /usr/lib/systemd/system/httpd.service /etc/systemd/system/multi-user.target.wants/httpd.service
disable相当于删除
[root@n1 system]# systemctl disable httpd
Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
[root@n1 system]# ll /etc/systemd/system/multi-user.target.wants
total 0
lrwxrwxrwx. 1 root root 37 Dec 27 04:44 crond.service -> /usr/lib/systemd/system/crond.service
lrwxrwxrwx 1 root root 38 Dec 26 21:05 docker.service -> /usr/lib/systemd/system/docker.service
lrwxrwxrwx 1 root root 37 Mar 4 03:39 httpd.service -> /usr/lib/systemd/system/httpd.service
lrwxrwxrwx. 1 root root 39 Dec 26 21:00 ntpdate.service -> /usr/lib/systemd/system/ntpdate.service
lrwxrwxrwx. 1 root root 40 Dec 27 04:44 remote-fs.target -> /usr/lib/systemd/system/remote-fs.target
lrwxrwxrwx. 1 root root 39 Dec 27 04:44 rsyslog.service -> /usr/lib/systemd/system/rsyslog.service
lrwxrwxrwx. 1 root root 36 Dec 27 04:44 sshd.service -> /usr/lib/systemd/system/sshd.service
lrwxrwxrwx. 1 root root 39 Dec 27 05:00 sysstat.service -> /usr/lib/systemd/system/sysstat.service
设置启动级别的命令
- 设置默认启动级别
[root@n1 ~]# systemctl set-default graphical.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
- 查看默认的启动级别
[root@n1 ~]# systemctl get-default
graphical.target
- 手动修改启动级别(先将原来的rm了)
[root@n1 ~]# ln -sv /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
ln: failed to create symbolic link ‘/etc/systemd/system/default.target’: File exists
[root@n1 ~]# rm -rf /etc/systemd/system/default.target
[root@n1 ~]# ln -sv /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
‘/etc/systemd/system/default.target’ -> ‘/usr/lib/systemd/system/multi-user.target’
[root@n1 ~]# systemctl get-default
multi-user.target
- 查看服务状态
[root@n1 ~]# systemctl is-enabled httpd.service
disabled