最详细的CentOS 6与7对比(二):服务管理对比

本主题将从3个角度进行对比

常见设置(CentOS 6 vs CentOS 7)

服务管理(Sysvinit vs Upstart vs Systemd)

性能测试(cpu/mem/io/oltp)

本文为第二部分:服务管理的对比

1. sysvinit、upstart、systemd简介 /CentOS 5CentOS 6CentOS 7备注
sysvinit         第一代,传统,兼容最多(/etc/init.d/、/etc/rc.X)  
upstart         第二代,形似systemd雏形(/etc/init)  
systemd         第三代,配合cgroup,systemd完全接管整个系统(/usr/lib/systemd)  
2. sysvinit、upstart、systemd常用命令 动作sysvinitupstartsystemd
查看   service mytest status   initctl status mytest   systemctl status mytest.service  
启动   service mytest start   initctl start mytest   systemctl start mytest.service  
关闭   service mytest stop   initctl stop mytest   systemctl stop mytest.service  
强杀进程   kill -9 PID   kill -9 PID   systemctl kill mytest.service --signal=9  
重启   service mytest restart   initctl restart mytest   systemctl restart mytest.service  
重载   service mytest reload   initctl reload mytest   systemctl reload mytest.service  
开机启动   chkconfig mytest on   /etc/init/mytest.conf里配置start on runlevel [3]   systemctl enable mytest.service  
3. runlevel运行级别 运行级别CentOS 6CentOS 7
0   halt   runlevel0.target -> poweroff.target  
1   Single user mode   runlevel1.target -> rescue.target  
2   Multiuser, without NFS   runlevel2.target -> multi-user.target  
3   Full multiuser mode   runlevel3.target -> multi-user.target  
4   unused   runlevel4.target -> multi-user.target  
5   X11   runlevel5.target -> graphical.target  
6   reboot   runlevel6.target -> reboot.target  
查看   cat /etc/inittab   systemctl get-default  
开机生效   编辑/etc/inittab   systemctl set-default multi-user.target  
立即切换   init 5   systemctl isolate graphical.target  
4. 日志查询

CentOS 6: 手工在/var/log/messages、/var/log/dmesg、/var/log/secure中grep,麻烦且效率低

CentOS 7: 统一使用journalctl,可以使用多个因素匹配,比如时间段、服务名、日志级别等等。另外,systemd日志默认经过压缩,是二进制文件,无法直接查看

journalctl常用命令作用CentOS 6比
journalctl   所有日志,包含系统、内核等等   手动在对应日志文件中grep  
journalctl --dmesg   查看当前开机后的内核日志   dmesg  
journalctl --boot   查看当前开机后的日志   先查当前开机启动时间,然后cat /var/log/...  
journalctl --boot=-1   查看上一次启动的日志   查询上次开机到当前开机之间时间,然后cat /var/log/...  
journalctl --since="2018-08-01 12:00:00"   查看从指定时间开始到当前的日志   手动在日志里grep  
journalctl --since=yesterday --until=today   查看昨天0-24点的日志   手动在日志里grep  
journalctl -n 20   查看最后10行   tail -n 20  
journalctl -f   实时滚动显示最新日志   tail -f  
journalctl -e   直接翻到最后   tail  
journalctl -u mytest.service   查看指定服务日志   先查询日志保存路径,然后再cat查看  
journalctl -p 0   查看指定日志级别的日志,日志级别从0到7   通过syslog将不同级别的日志放到不同文件中  
journalctl -u mytest.service -o json-pretty或-o verbose   查看每条日志详细信息(包含元信息)    
journalctl --disk-usage   查看日志所在的磁盘空间   du -shx /var/log/messages等  
5. 实现守护进程

CentOS 6

sysvinit需要自行实现

nohup &

screen

supervisor

upstart和systemd类似,将程序运行在前台即可

CentOS 7

由systemd启动,将程序运行在前台即可

6. sysvinit、upstart、systemd例子

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/11649.html