当前位置: 首页 > 知识库问答 >
问题:

如何阅读 /dev/log?

花玄裳
2023-03-14

我想通过读取/dev/log直接从Python访问syslog消息。

我(非常有限)的理解是,正确的读取方式是绑定数据报套接字。

import socket

sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
sock.bind('/dev/log')
sock.listen(1)
while True:
    data, addr = sock.recvfrom(1024)
    print(data)

显然/dev/log正在使用:

Traceback (most recent call last):
  File "readlog.py", line 4, in <module>
    sock.bind('/dev/log')
OSError: [Errno 98] Address already in use

我应该如何从Python中读取< code>/dev/log?

编辑:根据@Barmar的评论——只有一个进程可以访问< code>/dev/log,因此该部分是干净的,设备在读取之前必须是干净的。< code>sudo lsof /dev/log不显示任何内容。

围绕这个主题的Java线程中的答案提到, 系统日志应该关闭之前。我也试过了, lsof|grep“/dev/log”是空的,但我还是得到了错误。
难道不能让多个进程从 /dev/log 读取吗

共有1个答案

盖昀
2023-03-14

有一个套接字标志要设置,以防止这种情况:

套接字.SO_REUSEADDR

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

该标志告诉内核在TIME_WAIT状态下重用本地套接字,而无需等待其自然超时过期。

楼盘: https://docs.python.org/3/library/socket.html

 类似资料:
  • 欢迎来到Go的世界,让我们开始探索吧! Go是一种新的语言,一种并发的、带垃圾回收的、快速编译的语言。它具有以下特点: 它可以在一台计算机上用几秒钟的时间编译一个大型的Go程序。 Go为软件构造提供了一种模型,它使依赖分析更加容易,且避免了大部分C风格include文件与库的开头。 Go是静态类型的语言,它的类型系统没有层级。因此用户不需要在定义类型之间的关系上花费时间,这样感觉起来比典型的面向对

  • 问题内容: 我有以下从缓冲读取器读取数据的示例: 每当缓冲读取器中出现某些情况时(在这种情况下),将执行循环中的代码。在我的情况下,如果客户端应用程序将某些内容写入套接字,则将执行循环中的代码(服务器应用程序中)。 但是我不明白它是如何工作的。等待直到缓冲读取器中出现某些内容,当其中出现某些内容时,它将返回并执行循环中的代码。但是什么时候可以退货。 还有另一个问题。上面的代码摘自一个方法,我在线程

  • 问题内容: 我正在尝试读取“ file.txt”,然后使用Golang将内容放入变量中。这是我尝试过的… 文件已成功读取,并且从 os.Open 返回的返回类型为 * os.File 问题答案: 这取决于您要执行的操作。 它输出&{0xc082016240}的原因是因为您正在打印文件描述符()的指针值,而不是文件内容。要获取文件内容,可以从文件描述符中获取。 要将所有文件内容(以字节为单位)读取到

  • 我尝试收听主题,以查看哪个使用者保存了什么值的offsets,但这并不奏效... 我尝试了以下操作: 为控制台使用者创建了配置文件,如下所示: 谢谢! 码头

  • 这个小册子面向的读者,是对金数据已经有一些使用经验、想要扩展使用思路、更好地应对工作的金数据用户。每一篇控制在了几页之内,帮助读者能够在很短的时间里了解新的用法。 本书分为五个部分: 使用技巧 金数据个人版(jinshuju.net)产品使用技巧集锦。每一篇技巧按照针对实际发生的场景精心而写,都能在很短的时间内读完并且迅速派上用场。大部分接触过金数据的读者都可以从这里开始。没有先后顺序,可以根据目

  • 学习5阶段 getting start 入门 guide 指南 doc 查api 阅读源码 向开源贡献代码 你该阅读源码? 上面已经说了,第四个阶段才是读源码 原因是,必须熟练才有用,不然读了也白扯 熟练使用该模块 熟练掌握npm 熟练掌握nodejs语法 有了这个前提你就可以阅读了。 当然事情也不能绝对,没这些,你也可以看,从中找出有用的写法或者学习代码规范也是好的。 看目录结构(express