文档章节

Linux系统设置 history 相关系统变量(包括显示时间、history条数)

LionelShen
 LionelShen
发布于 2014/08/11 15:44
字数 859
阅读 3284
收藏 9
点赞 1
评论 0

一、设置历史记录的时间

编辑 /etc/profile文件

# vi /etc/profile

在文件末尾添加

export HISTTIMEFORMAT='%F %T '     #注意有个空格,为了显示时日期与命令之间有空格分割。

export HISTSIZE="10000"    #默认保留10000条。

保存

重新login即可生效。

二、使用 HISTSIZE 控制历史命令记录的总行数

将下面两行内容追加到 .bash_profile 文件并重新登录 bash shell, 命令历史的记录数将变成 450 条 :

# vi ~/.bash_profile
export HISTSIZE=450
export HISTFILESIZE=450


如果你想禁用 history, 可以设置 HISTSIZE=0:

三、使用 HISTFILE 更改历史文件名称

默认情况下命令历史存储在 ~/.bash_history 文件中 。 添加下列内容到 .bash_profile 文件并重新登录 bash shell, 将使用 /var/history/$USER-$UID.log 来存储命令历史 :

# vi ~/.bash_profile
export HISTFILE=/var/history/$USER-$UID.log

四、使用 HISTCONTROL 从命令历史中剔除连续重复的条目

在下面的例子中 ,pwd 命令被连续执行了三次 。 执行 history 后你会看到三条重复的条目 。 要剔除这些重复的条目 , 你可以将 HISTCONTROL 设置为 ignoredups:

# vi ~/.bash_profile
export HISTCONTROL=ignoredups
保存
测试
# ls
# ls
# ls
# pwd
# pwd
# pwd  $ cat .bash_history 
#1436160573
ls
#1436160575
pwd


五、使用 HISTCONTROL 清除整个命令历史中的重复条目

上例中的 ignoredups 只能剔除连续的重复条目 。 要清除整个命令历史中的重复条目 , 可以将 HISTCONTROL 设置成 erasedups:

# export HISTCONTROL=erasedups


六、使用 HISTCONTROL 强制 history 不记住特定的命令

将 HISTCONTROL 设置为 ignorespace, 并在不想被记住的命令前面输入一个空格 :

# export HISTCONTROL=ignorespace
# pwd
#  service httpd stop(不被history记录的命令)
# history | tail -3
68  pwd
69  history | tail -3

七、用户打开多个终端(产生多个session)情况下,共享history

由于bash的history文件默认是覆盖,如果存在多个终端,最后退出的会覆盖以前历史记录,改为追加形式

shopt -s histappend


八、实时追加history,不必等用户退出才将内存中的history记录到文件

PROMPT_COMMAND=”history -a”

==================================

实例,设置uid大于等于500的用户的history安全性

需求:

  • 记录统一转移到/var/history目录下;
  • 用户无法删除自己的history文件,无法清空history;
  • 多个终端共享history,实时追加;
  • 限制history文件大小和保存的条数;

举例用户,lionel;uid=522

1)配置全局环境变量文件/etc/profile

#vi /etc/profile

……
# add by shenxiaoran
if [ $UID -ge 500 ];then
    readonly HISTFILE=/var/history/$USER-$UID.log
    readonly HISTFILESIZE=50000
    readonly HISTSIZE=10000
    readonly HISTTIMEFORMAT='%F %T '
    readonly HISTCONTROL=ignoredups
    shopt -s histappend
    readonly PROMPT_COMMAND="history -a"
fi
创建目录结构

# mkdir /var/history

配置目录权限,使得用户有权限创建自己的history文件

# chmod 777 /var/history

# chmod a+t /var/history

2)限制用户删除自己的history文件

# chattr +a /var/history/lionel-522.log

3)限制用户修改自己主目录的环境变量配置文件

# chattr +a /home/lionel/.bash*

# lsattr /home/lionel/.bash*
-----a------- /home/lionel/.bash_logout
-----a------- /home/lionel/.bash_profile
-----a------- /home/lionel/.bashrc

4)禁止普通用户切换到系统中其他shell环境(一般包括csh,tcsh,ksh)

# chmod 750 tcsh(csh是tcsh的软连接,设置tcsh就可以了)

# chmod 750 /bin/ksh

普通帐号测试

[zhangfei@node1 ~]$ tcsh
-bash: /bin/tcsh: Permission denied
[zhangfei@node1 ~]$ ksh
-bash: /bin/ksh: Permission denied


© 著作权归作者所有

共有 人打赏支持
LionelShen
粉丝 70
博文 151
码字总数 92530
作品 0
丰台
程序员
Linux基础:history命令

一、为什么要学习 history 命令 ? history命令是bash shell 内置命令,history命令有助于我们缩短输入命令的时间,达到节省命令快捷操作的要求。我们也可以通过查询history命令,从而审计操...

skypeGNU1
2017/06/23
0
0
马哥2016全新Linux+Python高端运维班第一周作业

1、描述计算机的组成及其功能 现在计算机遵循冯洛伊曼体系结构: 运算器:用于完成各种算术运算、逻辑运算和数据传送等数据加工处理。 控制器:用于控制程序的执行,是计算机的大脑。运算器和...

ld0381
06/29
0
0
Linux基础入门第一周作业【Linux微职位】

1、描述计算机的组成及其功能。 按照冯诺依曼计算机体系结构模型,计算机由运算器、控制器、存储器、输入设备、输出设备五大部分组成。 1、运算器主要功能是完成各种算数及逻辑运算。 2、控制...

akatsuki1023
06/29
0
0
Linux重要知识点汇总——认识和学习bash

硬件、内核与shell 我们必须要通过“shell”将我们输入的命令与内核通信,好让内核可以控制硬件来正确无误地工作。 操作系统其实是一组软件,由于这组软件在控制整个硬件与管理系统的活动监测...

方小达
2013/02/27
0
0
history命令解析_学习笔记

时间:2017.11.13 作者:李强 参考:man,info,magedu讲义 声明:以下英文纯属个人翻译,英文B级,欢迎纠正,盗版不纠,才能有限,希望不误人子弟为好。 1、使用目的与场景 实现快速操作命令的...

lajifeiwomoshu
2017/11/14
0
0
从零开始的linux 第九章

从零开始的linux 第九章 大家早上好~~呼~今天天气好冷~小编都快感冒惹~ 同学们要记得多穿衣服呀 但是可不要穿太多哦 不然可表现不出可爱的一面 (小编此时看了看路人甲,仔细打量一下路人甲的...

荣耀灬慧
2017/09/09
0
0
shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向

shell介绍 shell是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。实际上,在shell和计算机硬件之间还有一层东西——系统内核。 用户直接面对的不是计算机硬件而是shell,用户...

豆渣锅
2017/11/15
0
0
2017.10.15 bash基础特性及基础命令

一. 命令历史,命令补全和路径补全 环境变量: HISTFILE:命令历史记录的条数 HISTSIZE:~/.bash.history HISTFILESIZE:命令历史文件记录历史的条数 history:默认显示10条历史纪录 history ...

qq2248753689
2017/10/15
0
0
Linux入侵分析(三)清理木马和问题用户

1.查看哪些用户拥有/bin/bash权限 cat /etc/passwd 2.检查常用命令是否被篡改 (1)找到命令文件的路径(whereis和which) (2)观察命令的属性,主要看修改时间和大小(stat和ll) 如果发现...

Mike_Rock_Cloud
05/10
0
0
N26-第一周作业

1、描述计算机的组成及其功能。 运算器,控制器,存储器,输入装置和输出装置 运算器:算术逻辑单元,对各种数据进行运算与逻辑处理,如:CPU,GPU 存储器:存储各种程序和数据,在计算机的运...

fanzh565656
2017/02/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

about git flow

  昨天元芳做了git分支管理规范的分享,为了拓展大家关于git分支的认知,这里我特意再分享这两个关于git flow的链接,大家可以看一下。 Git 工作流程 Git分支管理策略   git flow本质上是...

qwfys
今天
2
0
Linux系统日志文件

/var/log/messages linux系统总日志 /etc/logrotate.conf 日志切割配置文件 参考https://my.oschina.net/u/2000675/blog/908189 dmesg命令 dmesg’命令显示linux内核的环形缓冲区信息,我们可...

chencheng-linux
今天
1
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。 点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 访达 双击解压,或通过 unzip 命令解压。 检查下载的文件 ls -lh -rw-r--r-- 1 dingdayu s...

dingdayu
今天
1
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
今天
2
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
今天
1
0
Java工具类—随机数

Java中常用的生成随机数有Math.random()方法及java.util.Random类.但他们生成的随机数都是伪随机的. Math.radom()方法 在jdk1.8的Math类中可以看到,Math.random()方法实际上就是调用Random类...

PrivateO2
今天
3
0
关于java内存模型、并发编程的好文

Java并发编程:volatile关键字解析    volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在...

DannyCoder
昨天
1
0
dubbo @Reference retries 重试次数 一个坑

在代码一中设置 成retries=0,也就是调用超时不用重试,结果DEBUG的时候总是重试,不是0吗,0就不用重试啊。为什么还是调用了多次呢? 结果在网上看到 这篇文章才明白 https://www.cnblogs....

奋斗的小牛
昨天
2
0
数据结构与算法3

要抓紧喽~~~~~~~放羊的孩纸回来喽 LowArray类和LowArrayApp类 程序将一个普通的Java数组封装在LowArray类中。类中的数组隐藏了起来,它是私有的,所以只有类自己的方法才能访问他。 LowArray...

沉迷于编程的小菜菜
昨天
1
0
spring boot应用测试框架介绍

一、spring boot应用测试存在的问题 官方提供的测试框架spring-boot-test-starter,虽然提供了很多功能(junit、spring test、assertj、hamcrest、mockito、jsonassert、jsonpath),但是在数...

yangjianzhou
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部