当前位置: 首页 > 科技观察

通过syslog了解你的Linux系统

时间:2023-03-21 11:10:44 科技观察

这篇文章是一系列为Linux新手(或没有经验的桌面用户)教授技巧的文章的节选。本系列文章旨在补充LinuxMagazine的第30期特刊“Linux简介”(基于openSUSELeap)。本文由RomeoS.撰写,他是一位基于PDX的企业Linux专家,专注于为创新企业提供可扩展的解决方案。Linux系统日志非常重要。在后台运行的程序(通常称为守护进程或服务)处理Linux系统上的大部分任务。当这些守护进程工作时,它们会在日志文件中记录其任务的详细信息,作为它们所做工作的“历史记录”。这些守护进程做所有事情,从将时钟与原子钟同步到管理网络连接。所有这些都记录在日志文件中,这样当出现问题时,您可以通过查阅该特定日志文件来了解发生了什么。照片由MarkusSpiske在Unsplash上拍摄在您的Linux计算机上有许多不同的日志。历史上,它们通常以纯文本格式存储在/var/log目录中。做这件事的日志还是很多的,你可以很方便的使用less来查看。在全新安装的openSUSELeap42.3和大多数现代操作系统上,重要日志由systemd初始化系统存储。systemd是启动守护进程并准备计算机以供系统启动时使用的系统。systemd记录的日志以二进制格式存储,这使得它们占用空间更小,更易于浏览,并且更容易导出为其他各种格式,但缺点是您必须使用特定的工具才能查看它们。幸运的是,这个工具预装在您的系统上:它称为journalctl,默认情况下,它将每个守护进程的所有日志记录到一个地方。只需运行journalctl命令即可查看您的systemd日志。它将使用less寻呼机显示各种日志。为了给你一个直观的感受,以下是journalctl的摘录:Jul0611:53:47aaathats3aspulseaudio[2216]:[pulseaudio]alsa-util.c:Disablingtimer-basedschedulingbecauserunninginsideaVM.因此,这条独立的日志记录包括记录的日期和时间、计算机的名称、记录日志的进程的名称、记录日志的进程的PID以及日志本身的内容。如果您的系统上运行的程序有问题,您可以查看日志文件并搜索(使用/加上您要搜索的关键字)程序的名称。可能导致程序出现问题的错误记录到系统日志中。有时,错误消息会非常详细,足以让您解决问题。其他时候,您需要在网上搜索解决方案。Google是搜索奇怪的Linux问题的好地方。但搜索时请注意,只输入日志的实际内容,行首的信息(日期、主机名、进程ID)对搜索没有意义,会干扰搜索结果。解决方案通常在搜索结果的前几个链接中找到。当然,你不能只是盲目地运行你在网上找到的命令:一定要弄清楚你要做什么,会产生什么效果。据说在系统日志中搜索特定条目比直接描述故障的一般关键字更有用。因为程序出错的原因有很多,同样的故障表现也可能是各种问题引起的。例如,系统无法发出声音的原因有很多。可能是播放器没有插好,音响系统可能有故障,或者缺少合适的驱动程序。如果只是笼统地描述故障,会发现很多无关紧要的解决办法,会浪费很多时间。您可能会发现其他人也有相同的日志内容,而不是专门搜索日志文件中的实际内容。您可以比较图1和图2。图1.搜索系统的故障性能仅显示一般的、不精确的结果。这种搜索通常不是很有用。图2搜索特定日志行显示精确、有用的结果。这种搜索通常很有用。还有一些系统不使用journalctl进行日志记录。桌面系统上最常见的此类日志包括/var/log/zypper.log,它记录了openSUSE包管理器的行为;/var/log/boot.log,记录系统启动时的信息,比如它经常滚动得太快,你根本看不到;/var/log/ntp用于记录网络时间协议(NTP)守护程序同步时间时发生的错误。另一个存放硬件故障信息的地方是“KernelRingBuffer”(内核环缓冲区),可以输入demesg-H命令查看(这个命令也会调用lesspager查看)。“KernelRingBuffer”保存在内存中,所以重启电脑后就会丢失。不过,它确实涵盖了Linux内核中的重要事件,例如添加新硬件、加载模块和奇怪的网络错误。希望您已准备好深入了解您的Linux系统!玩得开心!