持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情
history的高级详情日志
HISTSIZE=409600
export HISTTIMEFORMAT="[%F %T]"
export HISTORY_FILE=/var/log/.audit.log
export PROMPT_COMMAND='{ thisHistID=`history 1|awk "{print \\$1}"`;lastCommand=`history 1| awk "{\\$1=\"\" ;print}"`;user=`id -un`;whoStr=(`who -u am i`);realUser=${whoStr[0]};logMonth=${whoStr[2]};logDay=${whoStr[3]};logTime=${whoStr[4]};pid=${whoStr[6]};ip=${whoStr[7]};if [ ${thisHistID}x != ${lastHistID}x ];then echo -E `date "+%Y/%m/%d %H:%M:%S"` $user\($realUser\)@$ip[PID:$pid][LOGIN:$logMonth $logDay $logTime] --- $lastCommand ;lastHistID=$thisHistID;fi; } >> $HISTORY_FILE'
[root@192.168.100.144 /etc]# cat /var/log/.audit.log
2021/05/07 15:02:55 root(root)@[PID:(192.168.100.1)][LOGIN:2021-05-07 14:56 .] --- [2021-05-07 15:02:54]source /etc/profile
2021/05/07 15:03:02 root(root)@[PID:(192.168.100.1)][LOGIN:2021-05-07 14:56 .] --- [2021-05-07 15:03:02]history
2021/05/07 15:03:30 root(root)@[PID:(192.168.100.1)][LOGIN:2021-05-07 14:56 .] --- [2021-05-07 15:03:30]cat /var/log/.audit.log
2021/05/07 15:03:40 root(root)@[PID:(192.168.100.1)][LOGIN:2021-05-07 14:56 .] --- [2021-05-07 15:03:40]cat /etc/profile
2021/05/07 15:04:07 root(root)@[PID:(192.168.100.1)][LOGIN:2021-05-07 15:04 .] --- 2021-05-07 10:51:24 cat /etc/passwd
2021/05/07 15:04:12 root(root)@[PID:(192.168.100.1)][LOGIN:2021-05-07 15:04 .] --- 2021-05-07 15:04:12 cd /var/log/
2021/05/07 15:04:13 root(root)@[PID:(192.168.100.1)][LOGIN:2021-05-07 15:04 .] --- 2021-05-07 15:04:13 ls
2021/05/07 15:04:30 root(root)@[PID:(192.168.100.1)][LOGIN:2021-05-07 14:56 .] --- [2021-05-07 15:03:54]vim /etc/profile
隐藏liunx命令行历史
如果你是 Linux 命令行的用户,有的时候你可能不希望某些命令记录在你的命令行历史中。原因可能很多,例如,你在公司担任某个职位,你有一些不希望被其它人滥用的特权。亦或者有些特别重要的命令,你不希望在你浏览历史列表时误执行。
然而,有方法可以控制哪些命令进入历史列表,哪些不进入吗?或者换句话说,我们在 Linux 终端中可以开启像浏览器一样的无痕模式吗?答案是肯定的,而且根据你想要的具体目标,有很多实现方法。在这篇文章中,我们将讨论一些行之有效的方法。
- 在命令前插入空格 是的,没看错。在命令前面插入空格,这条命令会被 shell 忽略,也就意味着它不会出现在历史记录中。但是这种方法有个前提,只有在你的环境变量 HISTCONTROL 设置为 “ignorespace” 或者 “ignoreboth” 才会起作用。在大多数情况下,这个是默认值。 所以,像下面的命令(LCTT 译注:这里[space]表示输入一个空格):
[space]echo "this is a secret"
如果你之前执行过如下设置环境变量的命令,那么上述命令不会出现在历史记录中。