用法。注意,本文以 ubuntu 16.04 进行介绍,文中所有的 demo 都在 ubuntu 16.04 中完成。
功能:
功能前让我们先来热个身,了解些 systemctl 命令自身相关的信息。
start:立刻启动后面接的 unit。stop:立刻关闭后面接的 unit。restart:立刻关闭后启动后面接的 unit,亦即执行 stop 再 start 的意思。reload:不关闭 unit 的情况下,重新载入配置文件,让设置生效。enable:设置下次开机时,后面接的 unit 会被启动。disable:设置下次开机时,后面接的 unit 不会被启动。status:目前后面接的这个 unit 的状态,会列出有没有正在执行、开机时是否启动等信息。is-active:目前有没有正在运行中。is-enable:开机时有没有默认要启用这个 unit。kill :不要被 kill 这个名字吓着了,它其实是向运行 unit 的进程发送信号。show:列出 unit 的配置。mask:注销 unit,注销后你就无法启动这个 unit 了。unmask:取消对 unit 的注销。
输出内容的第一行是对 unit 的基本描述。配置文件路径为:/lib/systemd/system/prometheus.service。数量,占用的内存和 cpu 资源。文章中详细的介绍。输出的日志信息。
关于 unit 的启动状态,除了 enable 和 disable 之外还有:static:这个 unit 不可以自己启动,不过可能会被其它的 enabled 的服务来唤醒。mask:这个 unit 无论如何都无法被启动!因为已经被强制注销。可通过 systemctl unmask 改回原来的状态。
关于 unit 的运行状态 Active,除了 active 和 inactive 之外还有:active (exited):仅执行一次就正常结束的服务,目前并没有任何程序在系统中执行。举例来说,开机或者是挂载时才会进行一次的 quotaon 功能,就是这种模式! Quotaon 不需要一直执行,只在执行一次之后,就交给文件系统去自行处理。通常用 bash shell 写的小型服务,大多是属于这种类型。active (waiting):正在执行当中,不过还再等待其他的事件才能继续处理。举例来说,打印的相关服务就是这种状态。
配置文件 /lib/systemd/system/prometheus.service,然后执行 enable 命令:
链接文件:
链接到 multi-user.target.wants 目录下,则是由 prometheus.server 文件中的配置信息决定的。
输出非常多,主要是很多的默认设置也都显示出来了。
输出我们可以看到,所谓的注销就是把 prometheus.service 文件链接到 /dev/null 这个空设备中去了。所以就无法再启动该服务了。下面我们尝试执行一次反注销:
删除掉 mask 操作中创建的链接。
list-units:列出当前已经启动的 unit,如果添加 -all 选项会同时列出没有启动的 unit。list-unit-files:根据 /lib/systemd/system/ 目录内的文件列出所有的 unit。--type=TYPE:可以过滤某个类型的 unit。
--type=mount 就可以了:
--type=target 就可以用 systemctl list-units 命令查看系统中默认有多少种 target:
graphical.target:就是文字界面再加上图形界面,这个 target 已经包含了下面的 multi-user.target。multi-user.target:纯文本模式!rescue.target:在无法使用 root 登陆的情况下,systemd 在开机时会多加一个额外的临时系统,与你原本的系统无关。这时你可以取得 root 的权限来维护你的系统。emergency.target:紧急处理系统的错误,在无法使用 rescue.target 时,可以尝试使用这种模式!shutdown.target:就是执行关机。getty.target:可以设置 tty 的配置。修改可提供登陆的 tty 数量,则修改 getty.target。
systemctl [command] [unit.target] get-default:取得目前的 target。set-default:设置后面接的 target 成为默认的操作模式。isolate:切换到后面接的模式。
删除之前的链接文件,然后创建新的到 /lib/systemd/system/multi-user.target 的链接文件。这样下次开机时默认会进入纯文本模式。
suspend:暂停模式会将系统的状态保存到内存中,然后关闭掉大部分的系统硬件,当然,并没有实际关机。当用户按下唤醒机器的按钮,系统数据会从内存中回复,然后重新驱动被大部分关闭的硬件,所以唤醒系统的速度比较快。hibernate:休眠模式则是将系统状态保存到硬盘当中,保存完毕后,将计算机关机。当用户尝试唤醒系统时,系统会开始正常运行,然后将保存在硬盘中的系统状态恢复回来。因为数据需要从硬盘读取,因此唤醒的速度比较慢(如果你使用的是 SSD 磁盘,唤醒的速度也是非常快的)。
systemctl list-dependencies [unit] [--reverse] 选项 --reverse 会反向追踪是谁在使用这个 unit。
graphical.target 依赖 multi-user.target。
文件路径可能会不太一样,强调一下,本文介绍的是 ubuntu 16.04 。/lib/systemd/system/ 大多数 unit 的配置文件都放在这个目录下。 /run/systemd/system/ 系统运行过程中产生的脚本,比如用户相关的脚本和会话相关的脚本。/etc/systemd/system/ 这个目录中主要的文件都是指向 /lib/systemd/system/ 目录中的链接文件。配置文件时,既可以把配置文件放在 /lib/systemd/system/ 目录下,也可以放在 /etc/systemd/system/ 目录下。
配置文件。文件就放在这个目录下。
文件。那么,这些 socke 文件都存放在哪里呢?我们可以使用 systemctl 进行查看:
文件都存放在 /run 目录及其子目录中。
用法介绍了一下。对于这么一个庞大的命令集和相信只有在使用中不断的磨练才能够真正的掌握它们。
原文链接:/systemd/71460.html