Linux系统的历史记录添加时间和IP信息

这篇具有很好参考价值的文章主要介绍了Linux系统的历史记录添加时间和IP信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 为什么要优化系统历史记录

对于linux系统,默认情况下,系统记录的历史命令比较简单。某些历史记录可能也无法正常保存,因此当服务器出现异常,希望通过历史命令来了解曾经做了哪些操作时,往往非常被动,下面就给大家介绍如何通过系统内置的变量来优化历史记录,使得查看历史记录更加方便。

Linux系统的历史记录添加时间和IP信息,# Linux基础,linux,运维,服务器

2 HISTSIZE和HISTFILESIZE

当在终端上执行历史命令时,Bash 会读取内存中的副本显示已执行命令的历史记录。最后,当 shell 退出时,它会将内存中的内容写回到磁盘上HISTFILE环境变量指向的文件中。

默认情况下,内容存储在位于用户主目录的.bash_history文件中。

[root@k8s-master01 ~]# echo $HISTFILE
/root/.bash_history

HISTSIZE变量中设置的值是可以在内存中存储的最大历史行数。

HISTFILESIZE变量控制可以写回到磁盘上的历史文件的最大行数。

可以简单理解为HISTSIZE变量定义的是执行history命令时可以看到的命令数,HISTFILESIZE变量定义的是保存到磁盘中的history记录数。

[root@k8s-master01 ~]# echo $HISTSIZE
1000
[root@k8s-master01 ~]# 
[root@k8s-master01 ~]# echo $HISTFILESIZE
1000

3 HISTCONTROL

使用HISTCONTROL变量,我们可以控制 bash 如何存储已执行命令的历史记录。

在命令行工作时,我们经常会多次执行某些相同的命令。默认历史记录大小为 500,相同命令的重复次数太多会填满历史记录,并使历史记录变得无用。当然我们可以使用上一小节提到的HISTSIZE 或HISTFILESIZE增加历史列表的大小。

另一种选择是告诉 bash 不要存储重复项。这是通过HISTCONTROL变量完成的。 HISTCONTROL控制 bash 如何存储命令历史记录。目前有两个可能的标志:ignorespace 和ignoredups。ignorespace标志告诉 bash 忽略以空格开头的命令。另一个标志ignoredups告诉 bash 忽略重复项。如果您希望指定两个值,则可以用冒号 ignorespace:ignoredups连接和分隔值,或者您可以只指定ignoreboth。

常用的HISTCONTROL变量有

  • ignoredups 默认,忽略重复命令
  • ignorespace 忽略所有一空格开头的命令
  • ignoreboth ignoredups 和 ignorespace 的组合
  • erasedups 删除历史记录中重复命令,相同的指令仅保留最近的一个

如果同时设定多个选项,中间使用冒号。如:HISTCONTROL=ignorespace:erasedups

[root@k8s-master01 ~]# export |grep -i histc
declare -x HISTCONTROL="ignoredups"

4 HISTTIMEFORMAT

Linux 中的 bash shell 允许我们访问命令历史记录,即使用 history 命令按顺序执行的命令列表。history 命令用于跟踪所有已执行的命令。这在故障排除或审计期间非常重要。没有设置 HISTTIMEFORMAT 的历史命令只显示 command# 和 command 但不显示命令执行的时间。因此,要显示与每个历史条目关联的时间戳信息,必须设置 HISTTIMEFORMAT。

[root@k8s-master01 ~]# HISTTIMEFORMAT="%F %T "  #历史记录中加上年月日及时间
[root@k8s-master01 ~]# history |head -10
    1  2023-07-16 23:03:51 df
    2  2023-07-16 23:03:51 yum install vim wget git strace
    3  2023-07-16 23:03:51 yum install net-tools
    4  2023-07-16 23:03:51 df
    5  2023-07-16 23:03:51 top
    6  2023-07-16 23:03:51 history
    7  2023-07-16 23:03:51 ls
    8  2023-07-16 23:03:51 vim ifcfg-eth0
    9  2023-07-16 23:03:51 df
   10  2023-07-16 23:03:51 vim /etc/selinux/config

可以看到时间都是一样的,是定义变量后的时间,这属于正常现象,因为之前的记录并没有记录时间。后续的历史命令将会记录上执行时间。

5 PROMPT_COMMAND

在出现 shell 命令输入提示符之前,作为命令来执行这个变量。

[root@k8s-master01 ~]# export PROMPT_COMMAND="date '+%F %T'"
2022-11-21 13:11:43 # 在出现下面的提示符之前执行了 date 命令
[root@k8s-master01 ~]# ls
anaconda-ks.cfg  hosts  k8s-ha-install  kernel-ml-4.19.12-1.el7.elrepo.x86_64.rpm  kernel-ml-devel-4.19.12-1.el7.elrepo.x86_64.rpm  kubeadm-config.yaml  new.yaml  rook
2022-11-21 13:11:48 # 再次出现
[root@k8s-master01 ~]# a
-bash: a: command not found
2022-11-21 13:11:51 # 每次命令行提示符出现之前它都会出现
[root@k8s-master01 ~]# 

通过上面介绍的这些变量,我们可以实现将历史命令收集到文件中,实现方式如下。

[root@k8s-master01 ~]# mkdir -p /var/log/history.d
[root@k8s-master01 ~]# echo 'export PROMPT_COMMAND="(umask 000; msg=\$(history 1 | { read x y; echo \$y; }); echo [\$(who am i | awk \"{print \\\$(NF-2),\\\$(NF-1),\\\$NF}\")] [\$(whoami)@\`pwd\`]\" \$msg\" >>/var/log/history.d/history)"' >> /etc/profile
[root@k8s-master01 ~]# source /etc/profile
[root@k8s-master01 ~]# tailf /var/log/history.d/history
[2023-07-16 23:03 (172.20.15.57)] [root@/root] source /etc/profile
[2023-07-16 23:03 (172.20.15.57)] [root@/root] history
[2023-07-16 23:03 (172.20.15.57)] [root@/root] tailf /var/log/history.d/history
[2023-07-16 23:03 (172.20.15.57)] [root@/root] docker ps
[2023-07-16 23:03 (172.20.15.57)] [root@/root] hsit
[2023-07-16 23:03 (172.20.15.57)] [root@/root] history
[2023-07-16 23:03 (172.20.15.57)] [root@/root] history
[2023-07-16 23:03 (172.20.15.57)] [root@/root] ssh 172.31.250.110
[2023-07-16 23:03 (172.20.15.57)] [root@/root] 2023-07-16 23:05:30 HISTTIMEFORMAT="%F %T "
[2023-07-16 23:03 (172.20.15.57)] [root@/root] 2023-07-16 23:05:41 history |head -10

可以看到,导入变量后,记录了历史命令的执行时间,登录ip、执行用户,以及具体命令等信息。这样完备的历史命令记录对于后期的问题排查是非常有益的。文章来源地址https://www.toymoban.com/news/detail-825889.html

到了这里,关于Linux系统的历史记录添加时间和IP信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 注册表查看历史WIFI信息_首次连接时间等信息

    首先搜一下注册表,并打开 随后打开这个地址 计算机HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionNetworkListProfiles 左边这一堆都是曾经连接过的WIFI信息,点一个进去看看,右侧有首次连接时间和最后一次连接的时间等信息。 这是小端存储,把他改为大端,再将其变为十

    2024年02月04日
    浏览(40)
  • 一行命令查看Linux系统重启时间和相关记录

    一行命令查看Linux系统重启时间和相关记录。 系统启动时间并转换为秒: 当前时间并转换为秒: 使用当前时间减去启动时间,可以得到系统的运行时间。 举例:假如系统重启后,10分钟内,判断为系统重启,否则判断为运行状态。很多服务和应用可以根据系统重启后,进行

    2024年02月04日
    浏览(36)
  • 查看及修改微软Edge浏览器用户数据保存位置(包括详细历史记录(页面停留时间,页面访问次数,最后访问时间,下载历史等),Cookie,书签等)

    (把上面的XXX对应自己电脑的用户名) (其中很多没有后缀名的文件都是数据库文件,只需修改后缀名为“.db”,然后用数据库管理软件打开即可,当然不都是数据库文件,有些不是) 不过由于分库分表的原因,信息都分散在各个数据库里面,多张表里面。所以单张表里面记

    2024年02月16日
    浏览(299)
  • PyCharm 自动添加作者信息、创建时间等信息

    第一步 找到settings 机器学习方面问题,nc,csv,tif操作可以看作者名字q

    2024年02月16日
    浏览(33)
  • linux清除历史linux清除history/在 Linux 中清除 bash 历史记录

    有几种方法可以清除 Linux 中的 bash 历史记录,具体操作如下: 1. 清空当前会话的历史记录 这将清空当前终端窗口的历史记录。关闭窗口后再打开,历史记录将重新开始记录。 2. 清空 ~/.bash_history 文件 ~/.bash_history ~/.bash_history 文件存储了所有的历史命令记录,这条命令将清空文件的

    2024年02月13日
    浏览(40)
  • 开源在线客服系统-客服系统历史消息记录功能-点击加载历史聊天记录-分页展示历史消息功能实现

    之前开发的开源在线客服系统gofly,访客端一直没有展示历史聊天记录,最近抽时间给加上了 实现的效果就是,访客刚进聊天界面,如果存在历史记录,按5条分页,默认查询加载5条聊天记录。 如果历史记录超过5条,顶部出现 “点击加载更多” 按钮,点击按钮就分页查询历

    2023年04月12日
    浏览(34)
  • 【linux】 查看 Linux 重启历史记录(reboot)

    /var/log 目录隐藏着 Linux 日志机制的核心信息,它是记录系统活动的宝贵仓库。然而,仅仅有日志还不够,真正的难题在于,如何从大量数据中提炼出与系统重启相关的关键信息。 在 /var/log 目录中,可别错过那几个至关重要的家伙,如:wtmp 和 btmp。它们不仅是些普通的日志,

    2024年01月23日
    浏览(46)
  • 第19节-PhotoShop基础课程-历史记录画笔工具

    任何记录都会被记录下来,并且可以拍快照,从历史中恢复,特别适合艺术创作的孩子 不只是画笔,所有操作记录都能记录下来,并且恢复 画笔工具可以从历史记录画笔中恢复 从任何历史快照,创建一个新文档 创建新快照以后,你可以回到任何快照的时候 主要做艺术控制

    2024年02月09日
    浏览(27)
  • 【ip neigh】管理IP邻居( 添加ARP\NDP静态记录、删除记录、查看记录)

    1、 NUD_NONE : 初始状态 。当一个新的路由缓存条目被创建时,arp_bind_neighbour()函数被调用.如果找不到相匹配的ARP缓存条目, neigh_alloc()将创建一个新的ARP缓存条目并设置状态为NUD_NONE. 2、 NUD_INCOMPLETE : 未完成状态 。当第一个包发送需要新的ARP缓存条目neigh_resolve_output()被调用

    2023年04月08日
    浏览(56)
  • linux基本功之历史记录history命令实战

    💓 想要学好Linux,命令是基本功,企业中常用的命令大约200多个,不管是写shell脚本还是管理操作系统,最常用的命令必须要牢牢掌握,像我们以前学乘法口诀一样,烂熟于心,唯有如此,才能打牢基础。 💓 只要地球不爆炸,我们永远不放假,只要宇宙不重启,我们永远不

    2024年02月08日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包