AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1094389
Accepted
vivek
vivek
Asked: 2018-11-20 17:26:53 +0800 CST2018-11-20 17:26:53 +0800 CST 2018-11-20 17:26:53 +0800 CST

systemd-journal-flush.service 有什么用?

  • 772

它减慢了我的系统启动时间。

我可以禁用它吗?

如果我在启动时禁用它会发生什么?

我使用的是 Ubuntu 版本 18.04。

boot services systemd
  • 2 2 个回答
  • 40921 Views

2 个回答

  • Voted
  1. Best Answer
    abu_bua
    2018-11-21T06:36:40+08:002018-11-21T06:36:40+08:00

    如果启用了存储systemd-journal-flush.service,则要求日志守护程序将存储在 /run/log/journal 中的任何日志数据刷新到 /var/log/journal中。persistent如果您(已经)拥有巨大的日志文件,这将导致启动速度变慢。此外,必须以可写方式安装磁盘(带有/var/log)才能执行此操作。

    总而言之:巨大的旧日志文件,在引导过程中被检查并且新日志数据的附加导致引导时间变慢。

    检查 journalctl 日志大小类型

    journalctl --disk-usage
    

    为了获取flush处理的时间和磁盘空间信息,输入以下命令

    journalctl -b --unit systemd-journald
    

    相应的输出看起来像

    -- Logs begin at Sat 2018-12-08 00:40:23 CET, end at Mon 2018-12-10 19:40:27 CET. --
    Dec 10 12:51:38 ubuntu01 systemd-journald[479]: Journal started
    Dec 10 12:51:38 ubuntu01 systemd-journald[479]: Runtime journal (/run/log/journal/265c93c062bf4c8da41abfe2ae793452) is 4.7M, max 38.3M, 33.5M free.
    Dec 10 12:51:38 ubuntu01 systemd-journald[479]: Time spent on flushing to /var is 7.066904s for 132 entries.
    Dec 10 12:51:38 ubuntu01 systemd-journald[479]: System journal (/var/log/journal/265c93c062bf4c8da41abfe2ae793452) is 128.0M, max 256.0M, 128M free.
    

    你可以

    • 禁用服务(不推荐)

    那么有可能不是所有的日志数据都写入磁盘;调试启动故障时很烦人。Journald 是systemd linux 中的一项基础服务,许多其他服务都依赖于它。


    • 验证日志文件的内部一致性:

       journalctl --verify
      

    请注意,每个期刊都显示PASS。


    • 使用journalctl --vacuum命令

    从journalctl -h

    --vacuum-size=BYTES 将磁盘使用量减少到指定大小以下
    --vacuum-files=INT 只保留指定数量的日志文件
    --vacuum-time=TIME 删除超过指定时间的日志文件

    因此做一个

        sudo journalctl --vacuum-size=1G --vacuum-time=5d --vacuum-files=5
    

    • 更改存储类型systemd-journal-flush.service

    首先检查您的存储类型

         systemctl cat systemd-journal-flush.service  | grep -i storage
    

    从man journald.conf

    存储=

    控制存储日志数据的位置。“volatile”、“persistent”、“auto”和“none”之一。

    如果“ volatile ”,日志日志数据将仅存储在内存中,即在 /run/log/journal 层次结构(如果需要时创建)之下。

    如果“持久化”,则数据将最好存储在磁盘上,即在 /var/log/journal 层次结构(如果需要时创建)之下,并回退到 /run/log/journal(如果需要时创建),期间早期启动,如果磁盘不可写。

    “ auto ”类似于“persistent”,但如果需要,不会创建目录 /var/log/journal ,因此它的存在控制了日志数据的去向。

    “ none ” 关闭所有存储,所有收到的日志数据都将被丢弃。但是,转发到其他目标(例如控制台、内核日志缓冲区或 syslog 套接字)仍然可以工作。默认为“自动”。

    编辑文件

        sudo nano /etc/systemd/journald.conf
    

    在期刊部分取消注释并更改:

        Storage=auto
        SystemMaxFileSize=1G
        SystemMaxFiles=5
    

    推荐

    我建议将SystemMaxFileSize键的大小限制为 20MB -->

        SystemMaxFileSize=50M
    

    最后,如果您的 Ubuntu 没有在重要的服务器上运行,我建议将数据存储更改为 volatile:

        Storage=volatile
    

    如果您在调试模式下运行引导并跟踪系统调用 (strace),您可能会发现刷新写入的 i/o 性能非常差。就我而言,原因尚不清楚。也许一些内核消息会在日志文件中发送垃圾邮件(请注意,在 10000 条消息之后,该单元默认被阻止,但 journald 必须对此进行管理,这可能会导致性能不佳)。在这种情况下,跳过消息并搜索未必标记为错误的错误。

        journalctl -b --output short-monotonic
    

    和

        journalctl -b -p 1..4 --output short-monotonic
    

    该--output short-monotonic标志打印与默认 utc 时间对比的时间步长。

    最后删除旧的日志文件

        sudo rm -rf /var/log/journal
    

    保存并重新启动。


    • 36
  2. abu_bua
    2018-11-25T16:03:55+08:002018-11-25T16:03:55+08:00

    根据systemd 开发人员主页上的这篇文章,您可以通过更改单元文件来修复它。

    为此,请打开/lib/systemd/system/systemd-journal-flush.service,例如

    sudo vim /lib/systemd/system/systemd-journal-flush.service
    

    并将Before 依赖项从

     Before=systemd-user-sessions.service systemd-tmpfiles-setup.service
    

    至

     Before=systemd-tmpfiles-setup.service
    

    此修复将针对 systemd 版本 > v240 自动更改。

    不要忘记保存文件。

    • 3

相关问题

  • 延长笔记本电脑和笔记本电脑电池寿命的技巧

  • 如何在 Ubuntu 启动时显示或隐藏启动消息?

  • 命令列出启动时启动的服务?

  • 如何避免启动时出现“S to Skip”消息?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve