You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux新手求助:如何创建所有已执行命令的日志文件?

如何记录所有已执行的Linux命令到日志文件?

嘿,作为Linux新手遇到这个需求完全不用慌,我来一步步给你讲清楚两种常用的实现方式,从临时测试到永久生效都有:

一、临时记录当前会话的所有命令(含输出)

这是最快上手的方法,适合你临时记录某次操作的完整过程:

  • 打开终端后,直接输入命令:script my_command_log.log
  • 回车后你会看到类似Script started, file is my_command_log.log的提示,接下来你执行的所有命令、命令的输出都会被自动写入这个日志文件
  • 想要停止记录的话,输入exit回车,终端会提示Script done, file is my_command_log.log,此时日志就保存好了
  • 可以用cat my_command_log.log查看记录的内容

二、永久自动记录所有执行的命令(带时间/用户/路径)

如果需要每次登录终端都自动记录命令,甚至要带上时间、执行用户、当前目录这些信息,就需要修改bash的配置文件:

针对当前用户生效

  1. 打开用户目录下的bash配置文件:nano ~/.bashrc
  2. 滚动到文件末尾,添加下面这行代码:
    PROMPT_COMMAND='history -a; history -c; history -r; echo "$(date "+%Y-%m-%d %H:%M:%S") $(whoami) $(pwd) $(history 1 | sed "s/^[ ]*[0-9]*[ ]*//")" >> ~/permanent_command_log.log'
    
    简单解释下这行的作用:
    • PROMPT_COMMAND:每次显示命令提示符前都会执行的命令
    • history -a/-c/-r:确保不同会话的命令历史能同步
    • 最后一部分会把时间、当前用户名、工作目录、执行的命令追加到~/permanent_command_log.log文件中(sed是用来去掉history输出里的行号)
  3. 保存并退出nano(按Ctrl+O回车,再按Ctrl+X)
  4. 让配置立即生效:source ~/.bashrc
  5. 之后你执行的每一条命令都会自动记录到~/permanent_command_log.log里,就算重启终端也会继续生效

针对所有系统用户生效(需要管理员权限)

如果要让所有用户的命令都被记录,就修改全局配置:

  1. 打开全局bash配置文件:sudo nano /etc/bashrc
  2. 同样在末尾添加上面的代码,但把日志路径改成全局可写的位置,比如/var/log/all_users_commands.log
  3. 先创建这个日志文件并设置权限:
    sudo touch /var/log/all_users_commands.log
    sudo chmod 666 /var/log/all_users_commands.log  # 让所有用户都能写入,也可以设置更严格的权限比如仅root可读
    
  4. 保存退出后,执行sudo source /etc/bashrc生效

一些额外注意事项

  • 如果不想让某些敏感命令被记录,可以在输入命令前加一个空格(前提是你的HISTCONTROL设置了ignorespace,大部分Linux发行版默认已经开启),这样这条命令不会被加入历史记录,自然也不会被写入日志
  • 可以通过修改HISTSIZE和HISTFILESIZE来调整历史记录的条数,比如在.bashrc里添加HISTSIZE=10000和HISTFILESIZE=100000,让系统能保存更多历史命令

内容的提问来源于stack exchange,提问作者jbarry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:05:28