




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
systemd 基本工具检视和控制systemd的主要命令是systemctl。该命令可用于查看系统状态和管理系统及服务。详见man 1 systemctl。小贴士:在systemctl参数中添加-H 可以实现对其他机器的远程控制。该过程使用SSH链接。注意:systemadm是 systemd 的官方图形前端。由AUR中的软件包systemd-ui-git提供。分析系统状态输出激活的单元:$ systemctl以下命令等效:$ systemctl list-units输出运行失败的单元:$ systemctl -failed所有可用的单元文件存放在/usr/lib/systemd/system/和/etc/systemd/system/目录(后者优先级更高)。查看所有已安装服务:$ systemctl list-unit-files使用单元一个单元配置文件可以描述如下内容之一:系统服务(.service)、挂载点(.mount)、sockets(.sockets、系统设备、交换分区/文件、启动目标(target)、文件系统路径、由 systemd 管理的计时器。详情参阅man 5 systemd.unit.使用systemctl控制单元时,通常需要使用单元文件的全名,包括扩展名(例如sshd.service)。但是有些单元可以在systemctl中使用简写方式。 如果无扩展名,systemctl 默认把扩展名当作.service。例如netcfg和netcfg.service是等价的。 挂载点会自动转化为相应的.mount单元。例如/home等价于home.mount。 设备会自动转化为相应的.device单元,所以/dev/sda2等价于dev-sda2.device。立即激活单元:# systemctl start 立即停止单元:# systemctl stop 重启单元:# systemctl restart 命令单元重新读取配置:# systemctl reload 输出单元运行状态:$ systemctl status 检查单元是否配置为自动启动:$ systemctl is-enabled 开机自动激活单元:# systemctl enable 注意:如果服务没有Install段落,一般意味着应该通过其它服务自动调用它们。如果真的需要手动安装,可以直接连接服务,如下(将foo替换为真实的服务名):# ln -s /usr/lib/systemd/system/foo.service /etc/systemd/system/graphical.target.wants/取消开机自动激活单元:# systemctl disable 显示单元的手册页(必须由单元文件提供):# systemctl help 重新载入 systemd,扫描新的或有变动的单元:# systemctl daemon-reload电源管理安装polkit后才可使用电源管理。如果你正登录在一个本地的systemd-logind用户会话,且当前没有其它活动的会话,那么以下命令无需root权限即可执行。否则(例如,当前有另一个用户登录在某个tty),systemd 将会自动请求输入root密码。重启:$ systemctl reboot退出系统并停止电源:$ systemctl poweroff待机:$ systemctl suspend休眠:$ systemctl hibernate混合休眠模式(同时休眠到硬盘并待机):$ systemctl hybrid-sleep原生 systemd 配置文件注意:可能需要手动创建某些文件。所有文件的权限都是644,属主 root,属组 root。虚拟控制台可以用/etc/vconsole.conf文件或者localectl配置虚拟控制台,包括键盘布局和控制台字体。详情请访问控制台字体和键盘布局。硬件时钟systemd默认硬件时钟为协调世界时(UTC)。小贴士:推荐使用NTP服务来在线同步硬件时钟。硬件时钟设定为地方时将硬件时钟配置为地方时(不建议):# timedatectl set-local-rtc true重新调整为 UTC:# timedatectl set-local-rtc false如果设置成本地时间,处理夏令时有些麻烦。如果夏令时调整发生在关机时,下次启动时时间会出现问题(更多信息)。最新的内核直接从实时时钟芯片(RTC)读取时间,不使用hwclock,内核把从 RTC 读取的时间当作 UTC 处理。所以如果硬件时间是地方时,系统启动一开始识别的时间是错误的,之后很快会进行矫正。这可能导致一些问题(尤其是时间倒退时)。如果同时安装了 Windows 操作系统(默认使用地方时),那么一般 RTC 会被设置为地方时。Windows 其实也能处理 UTC,需要修改注册表。建议让 Windows 使用 UTC,而非让 Linux 使用地方时。Windows 使用 UTC 后,请记得禁用 Windows 的时间同步功能,以防 Windows 错误设置硬件时间。如上文所说,Linux 可以使用NTP服务来在线同步硬件时钟。 详情参阅Time (简体中文)。内核模块请访问Kernel modules (简体中文)文件系统挂载默认行为是:在启动一个需要挂载特定分区的服务之前,系统自动检查并挂载分区。/etc/fstab中设定的网络文件系统(如NFS、Samba)无需配置即可正常工作,systemd 将确保网络文件系统在网络链接就绪后挂载。详情参阅:man 5 systemd.mount。LVM如果装有不通过initramfs激活的LVM卷,则需启动lvm-monitoring服务(由lvm2软件包提供):# systemctl enable lvm-monitoringACPI 电源管理参阅Power Management (简体中文).临时文件/usr/lib/tmpfiles.d/和/etc/tmpfiles.d/中的文件描述了 systemd-tmpfiles 如何创建、清理、删除临时文件和目录,这些文件和目录通常存放在/run和/tmp中。配置文件名称为/etc/tmpfiles.d/.conf。此处的配置能覆盖/usr/lib/tmpfiles.d/目录中的同名配置。临时文件通常和服务文件同时提供,以生成守护进程需要的文件和目录。例如Samba服务需要目录/run/samba存在并设置正确的权限位,就象这样:/usr/lib/tmpfiles.d/samba.confD /run/samba 0755 root root此外,临时文件还可以用来在开机时向特定文件写入某些内容。比如,要禁止系统从USB设备唤醒,利用旧的/etc/rc.local可以用echo USBE /proc/acpi/wakeup,而现在可以这么做:/etc/tmpfiles.d/disable-usb-wake.confw /proc/acpi/wakeup - - - - USBE详情参见man 5 tmpfiles.d。注意:该方法不能向/sys中的配置文件添加参数,因为systemd-tmpfiles-setup有可能在相关模块加载前运行。这种情况下,需要首先通过modinfo 确认需要的参数,并在/etc/modprobe.d下的一个文件中设置改参数。另外,还可以使用udev 规则,在设备就绪时设置相应属性。自己编写 .service 文件systemd 的单元文件是受 XDG Desktop Entry .desktop 文件启发而产生,而最初起源是 Windows 下的 .ini 文件。示例参见:Systemd/Services。处理依赖关系使用systemd时,可通过正确编写单元配置文件来解决其依赖关系。典型的情况是,单元A要求单元B在A启动之前运行。在此情况下,向单元A配置文件中的Unit段添加Requires=B和After=B即可。若此依赖关系是可选的,可添加Wants=B和After=B。请注意Wants=和Requires=并不意味着After=,即如果After=选项没有制定,这两个单元将被并行启动。依赖关系通常被用在服务(service)而不是目标(target)上。例如,network.target一般会被某个配置网络接口的服务引入,所以,将自定义的单元排在该服务之后即可,因为network.target已经启动。启动方式编写自定义的 service 文件时,可以选择几种不同的服务启动方式。启动方式可通过配置文件Service段中的Type=参数进行设置。具体的参数说明请参阅man systemd.service。 Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。 Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定PIDFile=,以便systemd能够跟踪服务的主进程。 Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置RemainAfterExit=yes使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。 Type=notify:与Type=simple相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由libsystemd-daemon.so提供。 Type=dbus:若以此方式启动,当指定的BusName出现在DBus系统总线上时,systemd认为服务就绪。修改现存单元文件要更改由软件包提供的单元文件,先创建名为/etc/systemd/system/.d/的目录(如/etc/systemd/system/httpd.service.d/),然后放入*.conf文件,其中可以添加或重置参数。这里设置的参数优先级高于原来的单元文件。例如,如果想添加一个额外的依赖,创建这么一个文件即可:/etc/systemd/system/.d/customdependency.confUnitRequires=After=然后运行以下命令使更改生效:# systemctl daemon-reload# systemctl restart 此外,把旧的单元文件从/usr/lib/systemd/system/复制到/etc/systemd/system/,然后进行修改,也可以达到同样效果。在/etc/systemd/system/目录中的单元文件的优先级总是高于/usr/lib/systemd/system/目录中的同名单元文件。注意,当/usr/lib/中的单元文件因软件包升级变更时,/etc/中自定义的单元文件不会同步更新。此外,你还得执行systemctl reenable ,手动重新启用该单元。因此,建议使用前面一种利用*.conf的方法。小贴士:可以用systemd-delta命令来查看哪些单元文件被覆盖、哪些被修改。单元配置文件的 vim 语法高亮支持可从官方仓库安装vim-systemd软件包,使 unit 配置文件在Vim下支持语法高亮。目标(target)启动级别(runlevel)是一个旧的概念。现在,systemd 引入了一个和启动级别功能相似又不同的概念目标(target)。不像数字表示的启动级别,每个目标都有名字和独特的功能,并且能同时启用多个。一些目标继承其他目标的服务,并启动新服务。systemd 提供了一些模仿 sysvinit 启动级别的目标,仍可以使用旧的telinit 启动级别命令切换。获取当前目标不要使用runlevel命令了:$ systemctl list-units -type=target创建新目标在 Fedora 中,启动级别 0、1、3、5、6 都被赋予特定用途,并且都对应一个 systemd 的目标。然而,没有什么很好的移植用户定义的启动级别(2、4)的方法。要实现类似功能,可以以原有的启动级别为基础,创建一个新的目标/etc/systemd/system/(可以参考/usr/lib/systemd/system/graphical.target),创建/etc/systemd/system/.wants目录,向其中加入额外服务的链接(指向/usr/lib/systemd/system/中的单元文件)。目标表SysV 启动级别Systemd 目标注释0runlevel0.target, poweroff.target中断系统(halt)1, s, singlerunlevel1.target, rescue.target单用户模式2, 4runlevel2.target, runlevel4.target, multi-user.target用户自定义启动级别,通常识别为级别3。3runlevel3.target, multi-user.target多用户,无图形界面。用户可以通过终端或网络登录。5runlevel5.target, graphical.target多用户,图形界面。继承级别3的服务,并启动图形界面服务。6runlevel6.target, reboot.target重启emergencyemergency.target急救模式(Emergency shell)切换启动级别/目标systemd 中,启动级别通过“目标单元”访问。通过如下命令切换:# systemctl isolate graphical.target该命令对下次启动无影响。等价于telinit 3或telinit 5。修改默认启动级别/目标开机启动进的目标是default.target,默认链接到graphical.target(大致相当于原来的启动级别5)。可以通过内核参数更改默认启动级别:小贴士:可以省略扩展名.target。 systemd.unit=multi-user.target(大致相当于级别3) systemd.unit=rescue.target(大致相当于级别1)另一个方法是修改default.target。可以通过systemctl修改它:# systemctl enable multi-user.target命令执行情况由systemctl显示:链接/etc/systemd/system/default.target被创建,指向新的默认启动级别。该方法当且仅当目标配置文件中有以下内容时有效:InstallAlias=default.target目前,multi-user.target、graphical.target都包含这段内容。日志systemd 提供了自己日志系统(logging system),称为 journal. 使用 systemd 日志,无需额外安装日志服务(syslog)。读取日志的命令:# journalctl默认情况下(当Storage=在文件/etc/systemd/journald.conf中被设置为auto),日志记录将被写入/var/log/journal/。该目录是systemd软件包的一部分。若被删除,systemd不会自动创建它,直到下次升级软件包时重建该目录。如果该目录缺失,systemd 会将日志记录写入/run/systemd/journal。这意味着,系统重启后日志将丢失。过滤输出journalctl可以根据特定字段过滤输出,例如:显示本次启动后的所有日志:# journalctl -b不过,一般大家更关心的不是本次启动后的日志,而是上次启动时的(例如,刚刚系统崩溃了)。目前还没有这项功能,正在讨论中。目前的折中方案是:# journalctl -since=today | tac | sed -n /- Reboot -/n;:r;/- Reboot -/q;p;n;b r | tac以上命令输出本日内的所有启动信息。但要注意,如果日志很多,该命令执行时间会比较漫长。动态跟踪最新信息:# journalctl -f显示特定程序的所有消息:# journalctl /usr/lib/systemd/systemd显示特定进程的所有消息:# journalctl _PID=1显示指定单元的所有消息:# journalctl -u netcfg详情参阅man journalctl、man systemd.journal-fields,以及 Lennert 的这篇博文。日志大小限制如果按上面的操作保留日志的话,默认日志最大限制为所在文件系统容量的 10%,即:如果/var/log/journal储存在 50GiB 的根分区中,那么日志最多存储 5GiB 数据。可以修改/etc/systemd/journald.conf中的SystemMaxUse来指定该最大限制。如限制日志最大 50MiB:SystemMaxUse=50M详情参见man journald.conf.配合 syslog 使用systemd 提供了 socket/run/systemd/journal/syslog,以兼容传统日志服务。所有系统信息都会被传入。要使传统日志服务工作,需要让服务链接该 socket,而非/dev/log(官方说明)。Arch 软
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车辆合伙合同协议书范本
- 霸州四中测试题及答案
- 兽医解剖学试题及答案
- 白酒集团区域市场整合代理销售协议
- 互联网教育平台成立出资协议书
- 幼儿园租房合同协议书乙方
- 餐厅饭店品牌形象及广告使用权转让合同
- 铁路建设项目拆迁补偿协议模板
- 拆除工程安全生产责任书与承诺合同
- 房地产开发采购合同与订单执行监管协议
- 新版查对制度专项检查表(涵盖患者身份识别、临床诊疗行为、设备设施运行和医疗环境安全等相关方面)
- 电影你的名字课件
- 消防行车安全教育课件
- 木材加工安全知识讲座
- 社区糖尿病病例管理中的药物治疗优化策略
- 老年性眼病知识讲座
- 肺结核的诊疗与护理
- 腹部常见疾病超声诊断课件
- 心理危机评估中的量表和工具
- 智能传感器系统(第二版)(刘君华)1-5章
- ISO9001-2015质量管理体系要求培训教材
评论
0/150
提交评论