博客
关于我
systemctl命令
阅读量:412 次
发布时间:2019-03-06

本文共 3895 字,大约阅读时间需要 12 分钟。

Systemd命令详解

Systemd是一个强大而复杂的系统管理命令组,用于管理Linux系统的启动、服务、日志、定时任务等多个方面。其核心命令是systemctl,功能强大且易于使用,但也因复杂性和耦合性受到部分人的反对。本文将详细介绍systemctl的语法、参数、常用命令以及如何配置和使用Systemd服务。


Systemd的背景

在传统的Linux系统中,启动服务主要依赖init进程,其启动方式存在两个主要问题:启动时间较长且复杂。Systemd(System Daemon,守护进程守护者)由Red Hat开发,旨在解决这些问题。Systemd作为第一个进程(PID=1),取代了传统的initd,提供了一套完整的系统管理解决方案。


Systemctl命令语法

Systemctl命令的基本语法格式如下:

systemctl [OPTIONS...] {COMMAND} ...

常用选项参数

以下是Systemctl常用的参数和选项:

  • -t, --type:指定单元类型,可选值包括servicesocketmountautomount等。
  • --state:指定单元的状态,可选值包括activefailedstopped等。
  • -p, --property:限制显示特定属性,如MainPIDEnvFile等。
  • -a, --all:显示所有加载的单元。
  • -r, --recursive:显示本地容器的单元。
  • --reverse:显示反向依赖关系。
  • --after--before:显示依赖关系的单元。
  • -l, --full:不省略状态信息。
  • --show-types:显示套接字类型。
  • -i, --ignore-inhibitors:忽略抑制器锁。
  • -q, --quiet:禁止输出某些命令结果。
  • --no-block:不等待操作完成。
  • --root:指定备用根路径。
  • --failed:显示失败状态的单元。
  • --no-wall:不发送墙消息。
  • --global:全局启用或禁用用户配置。
  • --no-reload:不重新加载守护程序配置。
  • --no-ask-password:禁用密码查询。

  • Unit Commands(单元命令)

    Systemctl支持多种命令用于管理单元:

  • list-units [PATTERN...]:列出已知单元。
  • list-sockets [PATTERN...]:列出套接字单元。
  • list-timers [PATTERN...]:列出计时器单元。
  • start PATTERN...:启动指定单元。
  • stop PATTERN...:停止指定单元。
  • reload PATTERN...:重新加载配置。
  • restart PATTERN...:重新启动指定单元。
  • is-active PATTERN...:检查单元是否运行。
  • is-failed PATTERN...:检查单元是否失败。
  • status [PATTERN...|PID]:显示单元状态和日志。
  • show [PATTERN...|JOB]:显示单元属性。
  • cat PATTERN...:显示单元文件。
  • set-property NAME=VALUE...:设置单元属性。
  • help PATTERN...|PID:查看单元手册页。
  • reset-failed:重置单元失败状态。
  • list-dependencies NAME:显示单元依赖关系。
  • list-unit-files [PATTERN...]:列出已安装的单元文件。

  • Unit File Commands(单元文件命令)

  • enable NAME...:启用单元文件。
  • disable NAME...:禁用单元文件。
  • is-enabled NAME...:检查单元是否启用。
  • reenable NAME...:重新启用单元。
  • preset NAME...:重置单元为预设默认值。
  • preset-all:重置所有单元为预设默认值。
  • mask NAME...:屏蔽单元文件。
  • link FILENAME...:创建单元文件符号链接。
  • get-default:获取默认目标单元。
  • set-default NAME:设置默认目标单元。

  • Machine Commands(机器命令)

  • list-machines [PATTERN...]:列出主机和容器。

  • Job Commands(作业命令)

  • list-jobs [PATTERN...]:列出正在进行的作业。
  • cancel JOB...:取消作业。

  • Snapshot Commands(快照命令)

  • snapshot [NAME]:创建快照。
  • delete PATTERN...:删除快照。

  • Environment Commands(环境命令)

  • show-environment:显示系统d环境块。
  • set-environment VARIABLE=VALUE...:设置环境变量。
  • unset-environment VARIABLE...:取消环境变量。
  • import-environment VARIABLE...:导入环境变量。

  • Manager Lifecycle Commands(管理器生命周期命令)

  • daemon-reload:重新加载守护程序配置。
  • daemon-reexec:重新执行守护程序。

  • System Commands(系统命令)

  • is-system-running:检查系统是否运行。
  • default:进入默认模式。
  • rescue:进入救援模式。
  • emergency:进入紧急模式。
  • halt:关闭系统。
  • poweroff:关闭并关闭电源。
  • reboot:重启系统。
  • kexec:通过kexec重启系统。
  • exit:退出系统。
  • suspend:挂起系统。
  • hibernate:休眠系统。
  • hybrid-sleep:休眠并挂起系统。
  • switch-root ROOT [INIT]:切换到另一个根目录。

  • Unit文件配置

    Systemd通过多种Unit文件类型(如.service.socket.timer等)管理系统资源。以下是常用Unit文件类型:

  • .service:封装守护进程服务。
  • .socket:监控网络套接字。
  • .timer:执行定时任务。
  • .automount:自动挂载文件系统。
  • .device:管理设备设备节点。
  • .mount:定义文件系统挂载点。
  • .path:监控目录变化。
  • .swap:管理交换分区。
  • .scope:系统服务分组。
  • .target:逻辑分组,定义启动依赖。

  • 配置目录

    Unit文件应放置在以下目录中,优先级依次为:

  • /etc/systemd/system
  • /run/systemd/system
  • /usr/lib/systemd/system

  • Service文件字段

  • Unit段:包含单元描述、依赖关系等。
  • Install段:定义单元在启动时的依赖关系。
  • Service段:包含服务配置,如启动命令、重启策略、环境变量等。

  • 文件示例

    以下是一个典型的.service文件示例:

    [Unit]Description=OpenBSD Secure Shell serverAfter=network.target auditd.serviceConditionPathExists=!/etc/ssh/sshd_not_to_be_run[Service]EnvironmentFile=-/etc/default/sshExecStartPre=/usr/sbin/sshd -tExecStart=/usr/sbin/sshd -D $SSHD_OPTSExecReload=/usr/sbin/sshd -tExecReload=/bin/kill -HUP $MAINPIDKillMode=processRestart=on-failureRestartPreventExitStatus=255RuntimeDirectory=sshdRuntimeDirectoryMode=0755[Install]WantedBy=multi-user.targetAlias=sshd.service

    示例命令

  • 启用Nginx服务:
    systemctl enable nginx.service
  • 查询服务状态:
    systemctl is-enabled nginx.service
  • 禁用Nginx服务:
    systemctl disable nginx.service
  • 启动服务:
    systemctl start nginx.service
  • 停止服务:
    systemctl stop nginx.service
  • 重新启动服务:
    systemctl restart nginx.service
  • 重新加载服务配置:
    systemctl reload nginx.service
  • 查询服务运行状态:
    systemctl status nginx.service
  • 显示启动失败的服务:
    systemctl --failed
  • 重置单元频率计数器:
    systemctl reset-failed
  • 重新加载所有修改过的服务配置:
    systemctl daemon-reload

  • 通过以上命令,可以方便地管理Linux系统的服务和资源,Systemctl作为一款强大而灵活的工具,为系统管理员提供了全面而便捷的系统管理解决方案。

    转载地址:http://sqckz.baihongyu.com/

    你可能感兴趣的文章
    Openlayers高级交互(1/20): 控制功能综合展示(版权、坐标显示、放缩、比例尺、测量等)
    查看>>
    Openlayers高级交互(10/20):绘制矩形,截取对应部分的地图并保存
    查看>>
    Openlayers高级交互(11/20):显示带箭头的线段轨迹,箭头居中
    查看>>
    Openlayers高级交互(12/20):利用高德逆地理编码,点击位置,显示坐标和地址
    查看>>
    Openlayers高级交互(13/20):选择左右两部分的地图内容,横向卷帘
    查看>>
    Openlayers高级交互(14/20):汽车移动轨迹动画(开始、暂停、结束)
    查看>>
    Openlayers高级交互(15/20):显示海量多边形,10ms加载完成
    查看>>
    Openlayers高级交互(16/20):两个多边形的交集、差集、并集处理
    查看>>
    Openlayers高级交互(17/20):通过坐标显示多边形,计算出最大幅宽
    查看>>
    Openlayers高级交互(18/20):根据feature,将图形适配到最可视化窗口
    查看>>
    Openlayers高级交互(19/20): 地图上点击某处,列表中显示对应位置
    查看>>
    Openlayers高级交互(2/20):清除所有图层的有效方法
    查看>>
    Openlayers高级交互(20/20):超级数据聚合,页面不再混乱
    查看>>
    Openlayers高级交互(3/20):动态添加 layer 到 layerGroup,并动态删除
    查看>>
    Openlayers高级交互(4/20):手绘多边形,导出KML文件,可以自定义name和style
    查看>>
    Openlayers高级交互(5/20):右键点击,获取该点下多个图层的feature信息
    查看>>
    Openlayers高级交互(6/20):绘制某点,判断它是否在一个电子围栏内
    查看>>
    Openlayers高级交互(7/20):点击某点弹出窗口,自动播放视频
    查看>>
    Openlayers高级交互(8/20):选取feature,平移feature
    查看>>
    Openlayers高级交互(9/20):编辑图形(放缩、平移、变形、旋转),停止编辑
    查看>>