在Linux中,我们通常会使用很多命令,并且很难记住所有命令。
history
命令提供了我们之前使用过的命令列表,但其限制较少。新命令会覆盖旧命令,然后旧命令会丢失。我认为命令日志存储在系统中的某个地方。
该日志可以打开和阅读吗?如果可能的话,我们可以更改它可以处理的最大日志大小吗?
命令的输出history
取决于登录用户吗?
答案1
一个简单的解决方案是增加 保存和返回的命令数量history
。如果您使用 bash,请将此行添加到您的~/.profile
:
export HISTSIZE=100000
export HISTFILESIZE=999999
从man bash
:
HISTFILESIZE
The maximum number of lines contained in the history file. When
this variable is assigned a value, the history file is trun‐
cated, if necessary, to contain no more than that number of
lines by removing the oldest entries. The history file is also
truncated to this size after writing it when a shell exits. If
the value is 0, the history file is truncated to zero size.
Non-numeric values and numeric values less than zero inhibit
truncation. The shell sets the default value to the value of
HISTSIZE after reading any startup files.
HISTSIZE
The number of commands to remember in the command history (see
HISTORY below). If the value is 0, commands are not saved in
the history list. Numeric values less than zero result in every
command being saved on the history list (there is no limit).
The shell sets the default value to 500 after reading any
startup files.
答案2
该文件~/.bash_history
保存已执行命令的列表。至少在CentOS中这个文件存在,我不知道在其他发行版中是否存在。
答案3
没有这样的日志,至少默认情况下没有。
您可以安装一些工具,例如acct
(“用于进程和登录记帐的 GNU 记帐实用程序”),它可以跟踪系统上执行的所有程序。
acct
为大多数(可能除了tiny-distros 之外的所有)Linux 发行版打包。主页位于http://www.gnu.org/software/acct/
acct
提供以下命令,lastcomm
可能会满足您的要求:
ac 打印有关用户连接时间的统计信息。 ac 可以告诉您特定用户或用户组连接到系统的时间,按天打印总计或 wtmp 文件中的所有条目。
accton 打开或关闭记帐。
lastcomm 列出了系统上执行的命令,最新的命令在前,显示每个命令的运行状态。最后,您可以在 acct 文件中搜索特定用户、终端或命令。
sa 将 acct 文件中的信息汇总到 savacct 和 usracct 文件中。它还生成有关命令的报告,给出调用次数、使用的 CPU 时间、平均核心使用率等。
dump-acct dump-utmp 以人类可读的格式显示 acct 和 utmp 文件。
答案4
请注意,如果您不使用bash
,则惯于是在~/.bash_history
,但是~/.<shell name>_history
。例如,我使用zsh
,我的日志在~/.zsh_history
.