Mookey Asked: 2016-05-05 05:19:14 +0800 CST2016-05-05 05:19:14 +0800 CST 2016-05-05 05:19:14 +0800 CST 是否有我可以在终端中打开的所有活动的日志? 772 我想打开一个终端并研究在常规使用 Ubuntu 中发生的过程和所有事情。我可以使用哪些命令和文件来实时查看日志? 谢谢。 command-line 4 个回答 Voted Jacob Vlijm 2016-05-05T06:03:22+08:002016-05-05T06:03:22+08:00 许多事情你根本无法发现,因为它们是在应用程序或进程内部处理的,没有与“外部世界”进行任何通信。 一些最重要的工具的随机(完全不完整)列表,您可以使用它来监控正在发生的特定部分: top命令: from man top: 顶层程序提供了正在运行的系统的动态实时视图。它可以显示系统摘要信息以及当前由 Linux 内核管理的进程或线程的列表。显示的系统摘要信息的类型以及显示的进程信息的类型、顺序和大小都是用户可配置的,并且该配置可以在重新启动时保持不变。 dstat. 来自 man dstat: Dstat 允许您立即查看所有系统资源,例如。将磁盘使用情况与来自 IDE 控制器的中断进行比较,或者直接将网络带宽数与磁盘吞吐量进行比较(在相同的时间间隔内) wmctrl; 虽然wmctrl不提供实时的持续信息,但在脚本中的循环中使用时,检索几乎实时的报告或记录有关打开/移动/关闭窗口发生的事情是相当容易的。 该dbus-monitor命令,@Serg 应该能够告诉您更多信息。From man dbus-monitor: dbus-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 /例如,在编辑系统设置时尝试在 , 的输出中发生什么。 最重要的是,有很多很多工具,每一个工具都可以发现正在发生的事情的特定部分。一个万能的答案是不可能的,更不用说一个终端窗口来显示“全貌”的开头了。 哪种工具适合您的目的取决于您具体要监控的事件。 Vasconcelos1914 2016-05-05T05:51:30+08:002016-05-05T05:51:30+08:00 尝试history命令,它显示终端中最后$HISTSIZE(默认 500)执行的命令。 journalctl命令显示日志消息,如果系统使用systemd. ps -aux显示正在运行的进程,可以与 ps -aux|grep xxxx 选择一个特定的过程。 Best Answer Rocky Raccoon 2016-05-05T12:20:44+08:002016-05-05T12:20:44+08:00 要实时查看日志,请使用tail -f -n [number of lines] [file]. -f用于跟随,它将在数据写入文件时将附加的日志数据通过管道传输到标准输出(例如控制台窗口) -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 Digital Trauma 2016-05-05T10:05:21+08:002016-05-05T10:05:21+08:00 所有活动都非常广泛。要添加到现有答案: dmesg将内核日志转储到终端。 手册页。 strace允许实时跟踪来自单个给定进程的所有系统调用。 手册页。 Ubuntu 页面。 perf“服用类固醇。” Perf 是一个非常强大的工具,用于在整个系统中以各种不同的粒度跟踪事件,包括内核、单个进程和单个 CPU。 手册页。
许多事情你根本无法发现,因为它们是在应用程序或进程内部处理的,没有与“外部世界”进行任何通信。
一些最重要的工具的随机(完全不完整)列表,您可以使用它来监控正在发生的特定部分:
top
命令: fromman top
: 顶层程序提供了正在运行的系统的动态实时视图。它可以显示系统摘要信息以及当前由 Linux 内核管理的进程或线程的列表。显示的系统摘要信息的类型以及显示的进程信息的类型、顺序和大小都是用户可配置的,并且该配置可以在重新启动时保持不变。dstat
. 来自 mandstat
: Dstat 允许您立即查看所有系统资源,例如。将磁盘使用情况与来自 IDE 控制器的中断进行比较,或者直接将网络带宽数与磁盘吞吐量进行比较(在相同的时间间隔内)wmctrl
; 虽然wmctrl
不提供实时的持续信息,但在脚本中的循环中使用时,检索几乎实时的报告或记录有关打开/移动/关闭窗口发生的事情是相当容易的。dbus-monitor
命令,@Serg 应该能够告诉您更多信息。Fromman dbus-monitor
: dbus-monitor 命令用于监视通过 D-Bus 消息总线的消息。有关全局的更多信息,请参见http://www.freedesktop.org/software/dbus/ 。(简而言之:dbus
是应用程序相互通信的一种简单方式。请注意,dbus-monitor
仅在使用的情况下dbus
有效,而不是@heemayl 提到的通用工具(谢谢!))命令(
dconf watch
相对未知)。来自man dconf
:dconf watch /
例如,在编辑系统设置时尝试在 , 的输出中发生什么。最重要的是,有很多很多工具,每一个工具都可以发现正在发生的事情的特定部分。一个万能的答案是不可能的,更不用说一个终端窗口来显示“全貌”的开头了。
哪种工具适合您的目的取决于您具体要监控的事件。
尝试
history
命令,它显示终端中最后$HISTSIZE
(默认 500)执行的命令。journalctl
命令显示日志消息,如果系统使用systemd
.ps -aux
显示正在运行的进程,可以与选择一个特定的过程。
要实时查看日志,请使用
tail -f -n [number of lines] [file]
.-f
用于跟随,它将在数据写入文件时将附加的日志数据通过管道传输到标准输出(例如控制台窗口)-n
是要遵循的行数一个很好的起点将是
/var/log/syslog
。这是许多系统事件、服务和应用程序的默认日志文件。您的目标服务或应用程序可能使用不同的日志文件。一些服务和应用程序有多个日志文件。例如,Apache Web 服务器具有单独的访问、错误和 SSL 事件日志。此外,一些日志文件被配置为在原始文件达到一定大小(例如 1 KB)后滚入存档文件(通常在同一目录中)。检查服务或应用程序的文档(或搜索)以查找特定的日志文件位置。
此外,您可能会发现在执行测试时打开多个控制台窗口并同时监控多个日志很有帮助。
例如,如果您正在跟踪在 Apache 上运行并使用 MySQL 数据库的 Web 应用程序中的事件,您可能希望在它们自己的控制台窗口中打开以下两个命令。事实上,您可能希望从上面跟踪这些应用程序日志以及系统日志。
与往常一样,请检查
tail
man
页面以获取完整的选项列表:man tail
所有活动都非常广泛。要添加到现有答案:
dmesg
将内核日志转储到终端。 手册页。strace
允许实时跟踪来自单个给定进程的所有系统调用。 手册页。 Ubuntu 页面。perf
“服用类固醇。” Perf 是一个非常强大的工具,用于在整个系统中以各种不同的粒度跟踪事件,包括内核、单个进程和单个 CPU。 手册页。