systemd-journal-flush.service的用途是什么?


14

这会减慢我的系统启动时间。

我可以禁用它吗?

如果我在启动时禁用它会怎样?

我正在使用Ubuntu 18.04版本。

Answers:


14

systemd-journal-flush.service询问期刊守护进程,清除存储在/运行/日志/日记到在/ var /日志/日志的任何日志数据,如果persistent存储已启用。如果您拥有(已经)巨大的日志文件,这将导致启动速度变慢。此外,/var/log必须以可写方式安装磁盘(带有)。

总结一下:庞大的旧日志文件,在启动期间进行检查,并添加新的日志数据会导致启动时间变慢。

检查journalctl日志大小类型

journalctl --disk-usage

为了获得刷新处理的时间和磁盘空间信息,请输入以下命令

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.


你可以

  • 禁用服务(不推荐)

    这样一来,并非所有日志数据都可能写入磁盘。调试启动错误时很烦人。


  • 使用journalctl --vacuum命令

    journalctl -h

    --vacuum-size =字节将磁盘使用量减少到指定大小以下
    --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 ”,则日记日志数据将仅存储在内存中,即/ run / log / journal层次结构(如果需要,可以创建)下面。

    如果为“ persistent ”,则数据将优选存储在磁盘上,即在/ 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
    

    保存并重新启动。



我不明白为什么庞大的日志文件会减慢启动速度?它会刷新/ run / log / journal中的日志,但这只是自上次启动以来的日志
solsTiCe

1
我不太确定。它也可能是systemd-user-sessions-flush.service对systemd-user-sessions.service的(无用的)依赖项(请参阅https://github.com/systemd/systemd/pull/10502)。但是,我遇到了将日志文件限制为小于1GB的情况,这会加快启动时间。我通读了systemd / journal / *代码,但没有发现什么有趣的地方。
abu_bua

1
也许是由于解压缩(lz4)?进一步的日志数据不会简单地流式传输到文件中。它被记录日志和哈希表,以便快速搜索已修改的对象,...
abu_bua

1
我认为对日志文件和/ var / log文件之间的关系进行评论可能很有用;我不清楚,但是在我看来日志是活动日志记录,并且在刷新日志时将活动数据写入普通/ var / log文件中的磁盘上?
pbhj

没错,但是在引导过程中无法将数据写入磁盘,因为必须先安装磁盘。
abu_bua

3

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

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

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

并改变依赖之前

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

到

 Before=systemd-tmpfiles-setup.service

对于> d v240的系统版本,此修复程序将自动更改。

不要忘记保存文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.