我想打开一个终端,研究 Ubuntu 日常使用过程中发生的所有事情。我可以使用哪些命令和文件来实时查看日志?
谢谢。
答案1
很多事情你根本无法发现,因为它们是在应用程序或进程内部处理的,没有任何与“外部世界”的沟通。
以下是一个随机(完全不完整)的列表,列出了一些最重要的工具,您可以使用它们来监控正在发生的具体部分:
- 命令
top
:来自man top
: top 程序提供正在运行的系统的动态实时视图。它可以显示系统摘要信息以及当前由 Linux 内核管理的进程或线程列表。显示的系统摘要信息类型以及显示的进程信息类型、顺序和大小都是用户可配置的,并且该配置可以在重新启动后保持不变。 dstat
来自 mandstat
: Dstat 允许您即时查看所有系统资源,例如,您可以比较磁盘使用情况与 IDE 控制器的中断,或者直接比较网络带宽数字与磁盘吞吐量(在相同间隔内)wmctrl
;虽然wmctrl
不提供实时正在进行信息,当在脚本循环中使用时,可以很容易地检索几乎实时的报告或记录有关打开/移动/关闭窗口发生的情况。dbus-monitor
@Serg 应该可以告诉你更多关于该命令的信息。来自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 /
。
归根结底,工具有很多,每个工具都只能发现正在发生事件的特定部分。一个万能的答案是不太可能的,更不用说一个终端窗口甚至显示“整个画面”的开头了。
哪种工具适合您的目的取决于您具体想要监控哪些事件。
答案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
选择一个特定的过程。