CentOS 7的一个巨大的变动就是用systemd取代了原来的System V init。systemd是一个完整的软件包,安装完成后有很多物理文件组成,大致分布为,配置文件位于/etc/systemd这个目录下,配置工具命令位于/bin,和/sbin这两个目录下,预先准备的备用配置文件位于/lib/systemd目录下,还有库文件和帮助手册等等。这是一个庞大的软件包。详情使用rpm -ql systemd即可查看。
systemd已经不仅仅是一个启动管理软件,而且是一个综合性的服务管理软件,它将逐渐成为一个多功能的系统环境,能够处理非常多的系统管理任务,有人甚至将它看作一个操作系统。
本文并非系统介绍systemd,而是总结出一些管理知识要点备忘。
获取当前默认的target:systemctl get-default
systemd添加新的unit(daemon):
也就是采用systemd来管理,与/sbin/chkconfig --add foo相当
把新生成的foo.service 放到/usr/lib/systemd/system/下面,然后采用load命令导入
systemctl load foo.service
systemctl daemon-reload //全部重新导入
删除unit(daemon):删除一个unit没有相应的命令,通常的做法是停掉daemon,然后删除相应的配置文件。
开机启动unit
systemctl enable postfix.service
其实质是,增加由/usr/lib/systemd/system/到/etc/systemd/system/multi-user.target.wants/下的软链接
ln -s '/usr/lib/systemd/system/postfix.service' '/etc/systemd/system/multi-user.target.wants/postfix.service'
关于service单元配置文件
Description是对服务的描述,方便记忆和阅读,一般来说这里可以随心所欲的。
Wants是服务项的启动依赖那些项。
Type是服务的类型,有simple,forking,oneshot,dbus,notify,idle。其中我们常用的类型有simple,forking,oneshot。simple 是默认,这是最简单的服务类型。意思就是说启动的程序就是主体程序,这个程序要是退出那么一切都退出。forking 标准 Unix Daemon 使用的启动方式。启动程序后会调用 fork() 函数,把必要的通信频道都设置好之后父进程退出,留下守护精灵的子进程。oneshot种服务类型就是启动,完成,没进程了。
ExecStart是启动脚本的路径和参数,参数和脚本之间用空格分割。
Restart是配置启动项是否需要重启,有no,on-success,on-failure,on-abnormal,on-watchdog,on-abort,always。这些选项就是他们字面意思,abnormal意思是反常的,看文档里面说除了信号SIGHUP,SIGINT,SIGTERM,SIGPIPE以外其他信号终止的,都是反常的包含code dump,操作超时等。
WantBy指服务在何种情况下面会被启动,例如上面multi-user.target指的是多用户环境。
开机不启动unit
systemctl disable httpd.service
删除/etc/systemd/system/multi-user.target.wants下的软链接
查看开机是否启动
systemctl is-enabled xx.service #查询服务是否开机启动
systemd查看开机自启动的程序
相当于chkconfig --list
ls /etc/systemd/system/multi-user.target.wants/
查看systemd单元加载及活动情况
systemctl
显示启动失败的单元
systemctl --failed
查看systemd管理的所有单元
systemctl list-unit-files