标签:des blog http os io 使用 ar strong for
systemd的服务管理程序
systemctl是最主要的工具。它融合 service 和chkconfig的功能于一体。你可以使用它永久性或只在当前会话中启用/禁用服务。
下面命令用于列出正在运行的服务或其他: systemctl
更多详细信息请参考手册页(man systemctl)。systemd-cgls以树形列出正在运行的进程。它可以递归显示给定控制组内容。详情请参阅systemd-cgls手册页。
如何启动/关闭、启用/禁用服务?
运行一个服务:
systemctl start foo.service 关闭一个服务:
systemctl stop foo.service 重启一个服务:
systemctl restart foo.service
显示一个服务(无论运行与否)的状态: systemctl status foo.service
在开机时启用一个服务: systemctl enable foo.service
在开机时禁用一个服务: systemctl disable foo.service
查看服务是否开机启动: systemctl is-enabled iptables.service;echo $?
修改运行级别:
systemd使用比sysvinit的运行级更为自由的 target 概念作为替代。
第 3 运行级用 multi-user.target替代。第 5 运行级用graphical.target替代。runlevel3.target 和 runlevel5.target 分别是指向 multi-user.target和graphical.target的符号链接。
你可以使用下面的命令切换到“运行级 3 ”:
systemctl isolate multi-user.target (or)
systemctl isolate runlevel3.target
你也可以使用下面的命令切换到“运行级 5 ”:
systemctl isolate graphical.target (or)
systemctl isolate runlevel5.target
如何改变默认运行级别?
systemd使用链接来指向默认的运行级别。在创建新的链接前,你可以通过下面命令删除存在的链接: rm /etc/systemd/system/default.target
默认切换到运行级 3 :
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
默认切换到运行级 5 :
ln -sf /lib/systemd/system/graphical.target/etc/systemd/system/default.target
systemd不使用/etc/inittab文件。 如何查看当下运行级别?
runlevel命令在systemd下仍然可以工作。你可以继续使用它,尽管systemd使用 ‘target‘ 概念(多个的 ‘target‘ 可以同时激活)替换了之前系统的runlevel。
等价的systemd命令是
systemctl list-units --type=target
CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,像需要开机不登陆就能运行的程序,还是存在系统服务里吧,即:/usr/lib/systemd/system目录下
每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install],我写的这个服务用于开机运行Node.js项目,具体内容如下:
[Unit]部分主要是对这个服务的说明,内容包括Description和After,Description用于描述服务,After用于描述服务类别
[Service]部分是服务的关键,是服务的一些具体运行参数的设置,这里Type=forking是后台运行的形式,PIDFile为存放PID的文件路径,ExecStart为服务的具体运行命令,ExecReload为重启命令,ExecStop为停止命令,PrivateTmp=True表示给服务分配独立的临时空间,注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错!
[Install]部分是服务安装的相关设置,可设置为多用户的
服务脚本按照上面编写完成后,以754的权限保存在/usr/lib/systemd/system目录下,这时就可以利用systemctl进行配置了
首先,使用systemctl start [服务名(也是文件名)]可测试服务是否可以成功运行,如果不能运行则可以使用systemctl status [服务名(也是文件名)]查看错误信息和其他服务信息,然后根据报错进行修改,直到可以start,如果不放心还可以测试restart和stop命令。
接着,只要使用systemctl enable xxxxx就可以将所编写的服务添加至开机启动即可。
我的脚本编写方法参照了nginx的编写方法,也可以根据其他功能类似的程序。
这样看来,虽然systemctl比较陌生,但是其实比init.d那种方式简单不少,而且使用简单,systemctl能简化的操作还有很多,现在也有不少的资料,看来RHEL/CentOS比其他的Linux发行版还是比较先进的,此次更新也终于舍弃了Linux 2.6内核,无论是速度还是稳定性都提升不少。
标签:des blog http os io 使用 ar strong for
原文地址:http://www.cnblogs.com/zhepama/p/3963644.html