标签: systemd-journald

`logger` 在 Arch Linux 中将其消息记录到哪里?

logger命令通过 syslog 记录一个条目,它通常将该行放入某个文件中,例如/var/log/messages.

如果我正确理解Arch Linux 中的文档,所有日志记录都是通过 systemd 完成的,但是我找不到logger使用journalctl.

  • logger在 Arch Linux 中给出的消息究竟会发生什么?
  • 日志条目存储在哪里?(快速 grep 建议/var/log/journal/*/system.journal。)
  • 如何访问此日志?(我需要任何特殊选项journalctl吗?)

arch-linux systemd logger systemd-journald

19
推荐指数
1
解决办法
3万
查看次数

如何将某些单元的日志输出定向到特定文件?

我有一个系统运行多个守护进程(作为 systemd 单元),它们将日志信息输出到 Arch Linux 的日志中。我想将其中一些单元文件的日志输出定向到我指定其位置的单独文本文件中,实质上是为单元子集创建一个日志文件。我该怎么做呢?

logs arch-linux systemd systemd-journald

17
推荐指数
1
解决办法
3万
查看次数

如何查看 systemd 服务何时启动/停止/重新启动?

我有一个服务(由我自己编写)在 Debian (Jessie) 服务器上运行,并且该服务自己的日志恰好表明它在特定时间重新启动。没有段错误或其他崩溃的迹象,所以我现在试图弄清楚应用程序是否以某种方式默默地失败并被 systemd 重新生成,或者用户是否有意通过systemctl.

shell 历史记录没有显示此类活动,但这并不是决定性的export HISTCONTROL=ignoreboth,因为 SSH 会话可能刚刚超时,阻止了以前登录的 bash 历史记录被写入磁盘。服务器当时没有重新启动。

但是我希望 systemd 本身应该保留一个日志,指示何时有意重新启动服务。令我惊讶的是,我找不到journalctl有关如何获取此类日志的任何文档(例如)。

其他一些帖子(例如,在哪里/为什么没有普通用户 systemd 服务的日志?)似乎表明应该有这样的日志消息:

Jan 15 19:28:08 qbd-x230-suse.site systemd[1]: Starting chatty.service...
Jan 15 19:28:08 qbd-x230-suse.site systemd[1]: Started chatty.service.
Run Code Online (Sandbox Code Playgroud)

但是我在我的系统上没有看到这样的日志消息。

有没有办法找出 systemd 服务何时启动、停止或重新启动?

编辑:似乎人们可能遇到的典型问题是他们journalctl以非特权用户身份运行。对我来说不是这种情况,我一直在运作root。在回复评论时,跑步grep systemd /var/log/syslog只给了我这个:

Jun  6 09:28:35 server systemd[22057]: Starting Paths.
Jun  6 09:28:35 server systemd[22057]: Reached target Paths.
Jun  6 09:28:35 server systemd[22057]: Starting …
Run Code Online (Sandbox Code Playgroud)

systemd systemd-journald

17
推荐指数
3
解决办法
6万
查看次数

如何使用 journald 配置单位日志存储策略?

我有一项特殊的服务,它记录罕见但重要的信息。几个月前我已经设置好了,今天我跑journalctl -n 50 --unit=my-service了却发现没有条目。

我对大多数单位的这种行为非常满意——我要么需要立即发生的事情(或最多几天前),我不关心几个月前的记录。

但是,有没有办法告诉journald对单个特定单元的记录有一个独立的存储和保留策略?我想保留这些特定的日志,比如说,5 年——不管它需要多大。其他单位的日志应该不受此影响,并保留其现有行为。

我有点失去了理解journald.conf(5),并且根本无法弄清楚何时可以进行每单位配置。如果是 - 希望有一个简短的具体示例 - 我应该编辑/创建哪个文件以及我应该写什么。或者,如果你确定这肯定是不可行的——那也是一个很好的答案。

注意:我的特殊情况涉及 Arch Linux 主机,但我想这应该无关紧要。

logs arch-linux systemd systemd-journald

16
推荐指数
1
解决办法
3209
查看次数

如何避免在 systemd 日志中将 /usr/bin/env 标记为可执行文件

我已经根据本文中的信息创建了一个 systemd 服务来运行 tomcat 应用程序。这篇文章的简短版本建议避免使用 shell 脚本包装器,并使用适当的环境和命令行直接执行 java。

这是整个 systemd 服务(替换了应用程序名称):

[Unit]
Description=MyApp Tomcat Container

[Service]
EnvironmentFile=/opt/myapp/environment
ExecStart=/usr/bin/env ${JAVA_HOME}/bin/java $JAVA_OPTS $CATALINA_OPTS \
-classpath ${CLASSPATH} \
-Dcatalina.base=${CATALINA_BASE} \
-Dcatalina.home=${CATALINA_HOME} \
-Djava.endorsed.dirs=${JAVA_ENDORSED_DIRS} \
-Djava.io.tmpdir=${CATALINA_TMPDIR} \
-Djava.util.logging.config.file=${CATALINA_BASE}/conf/logging.properties \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
org.apache.catalina.startup.Bootstrap start

ExecStop=/usr/bin/env $JAVA_HOME/bin/java $JAVA_OPTS \
-classpath $CLASSPATH \
-Dcatalina.base=$CATALINA_BASE \
-Dcatalina.home=$CATALINA_HOME \
-Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS \
-Djava.io.tmpdir=$CATALINA_TMPDIR \
-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
org.apache.catalina.startup.Bootstrap stop

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

据我所知,这很有效。服务正确启动、停止和报告状态。我遇到的问题是由journalctl以下人员报告的日志:

# journalctl -u myapp.service --since today

Sep 14 00:26:00 myserver.domain.com env[654]: MyApp:2015-09-14 00:26:00: …
Run Code Online (Sandbox Code Playgroud)

systemd tomcat systemd-journald

15
推荐指数
1
解决办法
3947
查看次数

检查 /dev/log

/dev/log是系统日志记录的默认条目。在 systemd 实现(这种情况下)的情况下,它是任何/run/systemd/journal/dev-log. 它曾经是由 syslog 守护进程处理的 unix socket 的接收端。

~$ echo "hello" > /dev/log 
bash: /dev/log: No such device or address
~$ fuser /dev/log
~$ ls -la /dev/log 
lrwxrwxrwx 1 root root 28 Aug 23 07:13 /dev/log -> /run/systemd/journal/dev-log
Run Code Online (Sandbox Code Playgroud)

当您尝试写入时弹出的错误的澄清是什么,为什么没有一个进程保存该文件(从fuser /dev/log空输出?

日志记录在系统上正常工作。

~$ logger test
~$ journalctl --since=-1m
-- Logs begin at Thu 2018-05-24 04:23:46 CEST, end at Thu 2018-08-23 13:07:25 CEST. --
Aug 23 13:07:24 alan-N551JM alan[12962]: test
Run Code Online (Sandbox Code Playgroud)

使用评论建议进行扩展

~$ sudo fuser /dev/log 
/run/systemd/journal/dev-log: …
Run Code Online (Sandbox Code Playgroud)

linux syslog systemd systemd-journald

14
推荐指数
2
解决办法
2万
查看次数

从 journalctl 文件中删除单行

我有一个运行我正在开发的服务的 Ubuntu 18.04 服务器。输出正在发送到系统日志以进行日志记录。

我不小心没有清理一些日志记录,并且一个明文密码(对于我自己的用户)被意外泄露到日志中。

我已经修复了服务的日志记录行为。现在我只想编辑日志文件以删除带有明文密码的行。

如何编辑journalctl文件?

journalctl systemd-journald

13
推荐指数
1
解决办法
1405
查看次数

如何获取当前的 systemd-journald 运行配置?

我想获取 的当前配置journald,类似于问题如何查看 systemd 的运行时全局配置?

我怎样才能做到这一点?

具体来说,我已经为日志轮换设置了一些可用参数,但 journald 似乎遵循其他值。我想看到的所有参数(当前值SystemMaxUseSystemMaxFileSize等)有更好的理解什么限制了当前日志保留。现在,我只有 journald 在启动时给出的消息:

System journal [...] is 5.8G, max 12.0G, 6.1G free.
Run Code Online (Sandbox Code Playgroud)

systemd-journald

13
推荐指数
2
解决办法
1713
查看次数

如何使用 systemd 日志配置 fail2ban?

我已经安装fail2ban在 Debian Jessie LXC 容器上,目前它失败的原因是:

Starting authentication failure monitor: fail2ban
ERROR  No file(s) found for glob /var/log/auth.log
ERROR  Failed during configuration: Have not found any log file for ssh jail
Run Code Online (Sandbox Code Playgroud)

系统上没有syslogor rsyslog,因此/var/log/auth.log不会生成。有没有办法如何告诉fail2ban使用输出journalctl _COMM=sshd

fail2ban systemd-journald

12
推荐指数
2
解决办法
2万
查看次数

如何确定 Systemd 进入紧急模式的确切原因

我的运行 Debian Jessie 的台式计算机在每次启动时都开始进入紧急模式 shell。屏幕说使用journalctl -xb查找原因,使用systemctl default继续引导。当我执行时systemctl default,系统继续启动,在使用系统几周后,没有任何明显的错误。

仔细看journalctl -xb,没有什么是掉到紧急情况下的原因。是否有一种简单的方法可以确定它决定进入紧急模式的确切原因?是否有其他标志或启动选项可以明确问题所在?

debian systemd systemd-journald

12
推荐指数
2
解决办法
1万
查看次数