是否有我可以在终端中打开的所有活动的日志?

是否有我可以在终端中打开的所有活动的日志?

我想打开一个终端,研究 Ubuntu 日常使用过程中发生的所有事情。我可以使用哪些命令和文件来实时查看日志?

谢谢。

答案1

很多事情你根本无法发现,因为它们是在应用程序或进程内部处理的,没有任何与“外部世界”的沟通。

以下是一个随机(完全不完整)的列表,列出了一些最重要的工具,您可以使用它们来监控正在发生的具体部分:

  • 命令top:来自man toptop 程序提供正在运行的系统的动态实时视图。它可以显示系统摘要信息以及当前由 Linux 内核管理的进程或线程列表。显示的系统摘要信息类型以及显示的进程信息类型、顺序和大小都是用户可配置的,并且该配置可以在重新启动后保持不变。
  • dstat来自 man dstatDstat 允许您即时查看所有系统资源,例如,您可以比较磁盘使用情况与 IDE 控制器的中断,或者直接比较网络带宽数字与磁盘吞吐量(在相同间隔内)
  • wmctrl;虽然wmctrl不提供实时正在进行信息,当在脚本循环中使用时,可以很容易地检索几乎实时的报告或记录有关打开/移动/关闭窗口发生的情况。
  • dbus-monitor@Serg 应该可以告诉你更多关于该命令的信息。来自man dbus-monitordbus-monitor 命令用于监控通过 D-Bus 消息总线的消息。请参阅http://www.freedesktop.org/software/dbus/了解整体情况的更多信息。(简而言之:dbus是应用程序相互通信的一种简单方式。笔记它只dbus-monitor在使用的情况下才有效dbus,而不是像@heemayl 提到的那样作为通用工具(谢谢!))
  • 命令dconf watch(相对不为人知)。来自man dconf

       watch
           Watch a key or directory for changes.
    

    例如,在编辑系统设置时,尝试一下 的输出中发生的情况dconf watch /

归根结底,工具有很多,每个工具都只能发现正在发生事件的特定部分。一个万能的答案是不太可能的,更不用说一个终端窗口甚至显示“整个画面”的开头了。

哪种工具适合您的目的取决于您具体想要监控哪些事件。

答案2

要实时查看日志,请使用tail -f -n [number of lines] [file]

  • -f用于跟踪,当数据写入文件时,它将附加的日志数据通过管道传输到 stdout(例如控制台窗口)
  • -n表示要遵循的行数

一个好的起点是/var/log/syslog。这是许多系统事件、服务和应用程序的默认日志文件。

sudo tail -f -n 1000 /var/log/syslog

您的目标服务或应用程序可能使用不同的日志文件。某些服务和应用程序有多个日志文件。例如,Apache Web 服务器有单独的访问、错误和 SSL 事件日志。此外,某些日志文件配置为在原始文件达到一定大小(例如 1 KB)后转入存档文件(通常在同一目录中)。请查看服务或应用程序的文档(或搜索)以了解具体的日志文件位置。

此外,您可能会发现在执行测试时打开多个控制台窗口并同时监控多个日志很有帮助。

例如,如果您正在跟踪在 Apache 上运行并使用 MySQL 数据库的 Web 应用程序中的事件,则您可能希望在其自己的控制台窗口中打开以下两个命令。事实上,您可能希望将这些应用程序日志与上面的系统日志一起跟踪。

sudo tail -f -n 1000 /var/log/apache2/error_log
sudo tail -f -n 1000 /var/log/mysqld.log

与往常一样,请查看tail man页面以获取完整的选项列表:

man tail

答案3

尝试命令,它显示终端中history最后(默认 500)执行的命令。$HISTSIZE

journalctl如果系统使用,命令会显示日志消息systemd

ps -aux显示正在运行的进程,可以与

ps -aux|grep xxxx

选择一个特定的过程。

答案4

所有活动范围很广。补充现有答案:

  • dmesg将内核日志转储到终端。 手册页

  • strace允许实时跟踪单个给定进程的所有系统调用。 手册页Ubuntu 页面

  • perf“强化版的 strace”。Perf 是一种非常强大的工具,可以跟踪整个系统内不同粒度的事件,包括内核、单个进程和单个 CPU。 手册页

相关内容