注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

systemd使用特点(收集中)  

2014-07-30 19:02:03|  分类: 系统自举 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
centos7发布了,其中一个特点是,使用了systemd来代替sysvinit.那么systemd的使用开始走向规模化了.
用SystemD初始化工具(init tool)来启动系统。SystemD 含了自己的配置和诊断工具,在使用它处理系统启动问题时用到的技巧不同于SysVinit。
          SystemD初始化工具虽面世不久,却已成为一些发行版中默认使用的初始化工具;一些其他的发行版把它包含进来,作为upstart和SysVinit 的替代品。由于它与upstart和SysVinit的兼容特性,在使用这两个初始化工具的发行版里面熟悉的命令与技巧也适用于SystemD。但是,为 了能够真正利用好这个新的初始化系统的功能,系统管理员也需要了解SystemD的工具与参数。
        给SystemD传达命令的主要工具是systemctl,它是一个命令行程序。该工具在改变配置文件或重新启动后台程序时需要root权限,但即使是非 root用户也能下达一些诊断的命令。如果在启动该命令时不加任何参数,会看到一个系统启动时执行任务的“单位(unit)”列表,包括挂载及检测磁盘、 启动后台服务及配置硬件。
          服务(service)单位是最重要的一类单位之一,因它管理着后台服务,而在使用SysVinit的发行版里则一般使用初始化脚本来启动这些服务。
           挂载(mount)与自动挂载(automount)单位用来挂载文件系统。
           套接字(socket)单位用来创建套接字,并在访问套接字后,立即利用依赖关系间接地启动另一单位。
           可使用参数让systemctl只列出某个类型的单位,如所有的服务单位:
systemctl –type=service
SystemD自动将其输出结果递交给less显示,列表中:
          第一栏是单位的名字;
          第二栏则表示该单位的定义是否已由SystemD正确加载。
          第三栏则为该单位是否正在运行。如果使用了-a参数,那么该程序将仅显示非正在运行的单位,即已安装但并未在启动时使用的单位,同时也包含引导系统未能正常加载的单位文件。
         第四栏则给出了当前状态:“exited”表示该进程已经无任何错误地完成,这种情况适用于,诸如进程在启动后并不在后台继续运行的情况,例如,在系统启 动时由于考虑到兼容性因素执行在SysVinit里面常用的/etc/rc.d/rc.local文件的服务单位。“Running”表示正在后台运行的 服务,如cron、dbus、sshd和udev。
          第五栏是对该单位的描述。标有“LSB”或“SYSV”的单位已由systemd自动创建以管理传统启动脚本。
          不能启动或启动后崩溃的服务在第四栏中用红色标为“failed”。可用如下命令来察看该服务是何时崩溃的以及在服务程序结束后提供了什么错误代码:
systemctl status ntpd.service
           systemctl会列出包含文本终端的登录进程(agetty)的服务型单位。因为SystemD不同于Sysvinit,它会像管理普通的后台服务一样以服务单位的形式对这些进程进行管理。

1. SystemD服务管理
systemctl is-enabled .service                      #查询服务是否开机启动
sudo systemctl enable .service                  #开机运行服务
sudo systemctl disable .service                 #取消开机运行
sudo systemctl start .service                      #启动服务
sudo systemctl stop .service                      #停止服务
sudo systemctl restart .service                  #重启服务
sudo systemctl reload .service                  #重新加载服务配置文件
systemctl status .service                      #查询服务运行状态
systemctl –failed                                   #显示启动失败的服务

2. 开机模块加载
/etc/modules-load.d/.conf,相当于原rc.conf中的MODULES变量
模块黑名单仍在/etc/modprobe.d/下,如blacklist.conf:

3. Locale
/etc/locale.conf,相当于原rc.conf中的LOCALE

4. 日志服务
systemd自带日志服务,参考systemd Journal
可以删除syslog-ng了

5. 主机名
/etc/hostname,相当于原来rc.conf中的HOSTNAME变量

6. 网络
还是用NetworkManager工具


三、 单位文件与目标(target)

1. 单位的处理
创建单位用的系统配置文件位于/lib/systemd/system/,但/etc/systemd/system目录下的同名文件会优先于前者。
单位文件的定义通常比传统的SysVinit脚本要短得多。例如,用于通过NTP来同步网络时间的服务只有短短几行:
1  [Unit]
2  Description=Network Time Service
3
4  [Service]
5  ExecStart=/usr/bin/ntpd -n -u ntp:ntp -g
6
7  [Install]
8  WantedBy=multi-user.target
所有的单位文件都包含由[Unit]开头的一节,其中包含一般设置与简短介绍。
[Service]一节含有针对该服务要进行的任务的指定设置。
[Install]一节包含了SystemD在(反)安装时要解释的说明。

2. 目标

“目标”单位的概念与SysVinit的运行级别相似;实际上,为考虑兼容性,SystemD甚至能够识别与目标对应的运行级别名称。所以,可在引导装载 程序中的kernel一行中加入single这个参数;SystemD就会激活rescue.target,提供一个相当于单用户模式的最小化界面。

在SystemD中,多用户模式(即非图形化登录启动系统的模式)由multi-user.target表示,可以通过下面这个链接来将其设为默认启动目标:

ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

如果此后确实需要默认启动图形化登录界面,可用同样的方式来将graphical.target设为默认目标。这等同于传统初始化工具的运行级别5。也可以在引导装载程序中为kernel指定想要启动的目标单位:

systemd.unit=multi-user.target

如想在操作过程中激活一个不同的目标单位,可用systemctl的isolate命令(需要root权限):

systemctl isolate rescue.target

切换为rescue目标对于管理任务来说很有用,SystemD这时会停止所有的用户登录与后台服务,只有系统服务在运行。有时,甚至这些服务也需要停止 并重新安装,这时可使用emergency.target来进入紧急模式(emergency mode),这时只有命令提示符的进程以及内核线程在运行。

3. 运行级别

SystemD用target替代了runlevel的概念,提供了更大的灵活性,如可以继承一个已有的target,并添加其它服务,来创建自己的target。

sudo systemctl list-units –type=target              #查询当前target

sudo systemctl isolate graphical.target              #改变当前target,重启无效

sudo systemctl enable multi-user.target              #改变启动时默认target

sudo systemctl enable kdm.service                    #graphical是默认target,指定使用的display manager

4. 其他

sudo systemctl reboot #systemctl还有系统关机、重启、挂起等功能sudo systemctl suspend

********************************************

systemd 的常用单元类型
单元类型说明
automount 确定随需文件系统访问机制(如 autofs)使用的文件系统挂载点。每个 automount 单元都有一个相匹配的 mount 单元。
device 代表 udev 规则针对的物理设备。
mount 确定一个标准的文件系统挂载点。
service 定义一个可被启动、停止、重新启动、重新加载等的守护进程。因为这些是由 SysVinit 启动机制完成的传统类型的工作,systemd 可以自动解析 SysVinit 启动脚本中的 LSB 注释(在 了解和使用 SysVinit 一节中讨论过这一点),并正确使用这些信息。
socket 代表一个标准类型的文件系统或网络套接字,比如 AF_INETAF_UNIX,这样通向这些套接字的传入连接就可以触发启动相关服务
target 定义一个用于对概念相关的其他单元进行分组的逻辑单元。例如,systemd 使用 graphical.target 单元来收集在图形设备变为可用时,应该在带有图形化控制台的系统上启动的所有应用程序。

runlevel 到 target的改变:

    在systemd的管理体系里面,以前的运行级别(runlevel)的概念被新的运行目标 (target)所取代。tartget的命名类似于multi-user.target等这种形式,比如原来的运行级别3(runlevel3)就对应 新的多用户目标(multi-user.target),run level 5就相当于graphical.target。

  由于不再使用runlevle概念,所以/etc/inittab也不再被系统使用。

而在systemd的管理体系里面,默认的target(相当于以前的默认运行级别)是通过软链来实现。

例如

ln -s /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target

     在/lib/systemd/system/ 下面定义runlevelX.target文件目的主要是为了能够兼容以前的运行级别level的管理方法。 事实上/lib/systemd/system/runlevel3.target,同样是被软连接到multi-user.target。

 ************************

单元控制(unit)

在systemd管理体系里,称呼需要管理的daemon为单元(unit)。对于单元(unit)的管理是通过命令systemctl来进行控制的。

*************************
systemd使用方法:
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
systemd 服务配置文件样例
[Unit]
Description=System Logging Service

[Service]
EnvironmentFile=-/etc/sysconfig/rsyslog
ExecStart=/sbin/rsyslogd -n $SYSLOGD_OPTIONS
Sockets=syslog.socket
StandardOutput=null

[Install]
WantedBy=multi-user.target
Alias=syslog.service

*********************
资料之二:
*********************

一些systemd使用方法:

systemd的服务管理程序,systemctl是最主要的工具。

下面命令用于列出正在运行的服务或其他: systemctl

更多详细信息请参考手册页(man systemctl)。systemd-cgls以树形列出正在运行的进程。它可以递归显示给定控制组内容。详情请参阅systemd-cgls手册页。

如何启动/关闭、启用/禁用服务?

运行一个服务:

systemctl start network.service 关闭网络服务:

systemctl stop network.service 重启网络服务:

systemctl restart network.service

显示一个服务(无论运行与否)的状态: systemctl status network.service

在开机时启用一个服务: systemctl enable network.service

在开机时禁用一个服务: systemctl disable network.service

查看服务开机是否启动:systemctl is-enabled network.service;echo $?  或者是chkconfig
使用systemctl命令,要记住start,stop,restart,status,enable,disable,is-enabled。就可以很好的使用!

systemd查看开机自启动的程序
相当于chkconfig --list
ls /etc/systemd/system/multi-user.target.wants/
  评论这张
 
阅读(132)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017