Linux性能优化之定期清理和保留 history 记录
linux清除7天前日志

linux清除7天前日志在Linux系统中,清除7天前的日志可以通过以下步骤完成:1. 确定日志文件的存储位置:首先,需要确定日志文件存储的位置。
在大多数Linux系统中,日志文件通常存储在/var/log目录下。
但是,具体的位置可能因系统而异,因此需要根据实际情况进行确认。
2. 确定日志文件的命名规则:在清除日志之前,需要了解日志文件的命名规则。
通常,日志文件的命名规则包括日期和时间信息,以便在需要时能够追踪和查找特定日期的日志文件。
3. 使用find命令查找7天前的日志文件:在Linux系统中,可以使用find命令来查找指定日期之前的文件。
find命令的基本语法如下:find <path> -name "<pattern>" -type f -mtime +<days> -exec<command> {} \;其中,<path>表示要查找的目录路径,<pattern>表示要匹配的文件名模式,-type f表示只查找文件而不包括目录,-mtime +<days>表示查找指定天数之前的文件,<command>表示要执行的命令,{}表示找到的文件名。
例如,要查找/var/log目录下7天前的日志文件,可以使用以下命令:find /var/log -name "*.log" -type f -mtime +7这将列出/var/log目录下所有7天前的日志文件。
4. 结合删除命令删除7天前的日志文件:在找到7天前的日志文件后,可以使用删除命令将其删除。
在Linux系统中,可以使用rm命令来删除文件。
rm命令的基本语法如下:rm <file>其中,<file>表示要删除的文件名。
例如,要删除/var/log目录下7天前的日志文件,可以使用以下命令:find /var/log -name "*.log" -type f -mtime +7 -exec rm {} \;这将删除/var/log目录下所有7天前的日志文件。
如何使用history命令在Linux终端中查看命令历史记录

如何使用history命令在Linux终端中查看命令历史记录在Linux终端中,history命令是一个非常有用的工具,它可以让我们查看并管理命令历史记录。
本文将详细介绍如何使用history命令在Linux终端中查看命令历史记录。
一、基本用法在Linux终端中,输入以下命令即可查看命令历史记录:```history```执行以上命令后,系统会列出最近使用过的命令及其对应的序号。
默认情况下,history命令会显示最近的1000条命令历史记录。
二、限制显示条数如果你只想查看部分历史记录,可以在history命令后加上选项-n,其中n为你想要显示的条数。
例如,如果你只想查看最近的20条命令历史记录,可以使用以下命令:```history -20```执行后,系统将只显示最近的20条命令历史记录。
三、搜索历史记录除了查看命令历史记录,你还可以使用history命令进行搜索。
下面介绍几种常用的搜索方式。
1.根据关键词搜索如果你记得之前执行过的某个命令包含了某个关键词,你可以使用以下命令进行搜索:```history | grep keyword```其中,keyword为你想要搜索的关键词。
执行该命令后,系统将列出包含关键词的命令历史记录。
2.根据命令序号搜索每个命令在显示的命令历史记录中都有一个对应的序号。
如果你记得之前执行过的某个命令的序号,你可以使用以下命令进行搜索:```history | grep "^序号"```其中,序号为你想要搜索的命令序号。
执行该命令后,系统将列出对应序号的命令历史记录。
四、执行历史记录中的命令除了查看历史记录,你还可以通过history命令执行历史记录中的命令。
以下是两种常用的方式。
1.使用感叹号执行命令Linux终端中,感叹号(!)用于执行历史记录中的命令。
如果你记得之前执行过的某个命令的序号,你可以使用感叹号加上相应的序号来执行该命令。
例如,执行历史记录中的第10条命令,可以输入:```!10```系统会自动执行序号为10的命令。
Linux服务器记录并查询历史操作记录

Linux服务器记录并查询历史操作记录Linux服务器在使⽤过程中,经常会有除⾃⼰之外的其他⼈员使⽤。
并不是每个⼈都对Linux服务器特别熟悉,难免会有⼀些操作导致服务器报错。
因此,监控Linux服务器的操作并记录下来,是⾮常有必要的!history是查询当前连接所操作的命令,通过编写以下内容添加⾄/etc/profile的原有内容之后,将每个连接的操作都进⾏记录,并保存在特定位置。
vi /etc/profile添加内容如下:#history recordhistoryRQ=`date "+%Y%m%d"`USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`if [ "$USER_IP" = "" ]thenUSER_IP=`hostname`fiif [ ! -d /tmp/record ]thenmkdir /tmp/recordchmod 777 /tmp/recordfiif [ ! -d /tmp/record/${LOGNAME}/${RQ} ]thenmkdir -p /tmp/record/${LOGNAME}/${RQ}chmod 300 /tmp/record/${LOGNAME}/${RQ}fiexport HISTSIZE=8192SJ=`date "+%H:%M:%S"`export HISTFILE="/tmp/record/${LOGNAME}/${RQ}/${USER_IP}@${LOGNAME}.$SJ"chmod 600 /tmp/record/${LOGNAME}/*record* 2>/dev/null然后保存并退出,执⾏以下命令,使得编写的配置⽣效。
linux系统定时任务定期清楚nohup日志

linux系统定时任务定期清楚nohup⽇志项⽬开发中,经常会使⽤nohup 命令启动应⽤,但项⽬产⽣⽇志过多,没⼏天硬盘空间就满了,设置⼀个定期任务清理⽇志则能解决次问题,操作如下1.编写执⾏脚本#!/bin/bash# clean the nohup.out of book ,info,server# date:2020-08-13path1="/weblogic/stock_domain"path2="/weblogic/bbsbook_domain"path3="/weblogic/bbsinfo_domain"if [ $# -eq 0 ];thencd $path1file_size=`du -sm nohup.out | awk '{print $1}'`if [ $file_size -ge 1 ];then/bin/cp /dev/null nohup.outecho "$(date +%F' '%X) :The file size $file_size M , clean it over!" >> /weblogic/stock_domain/clean_nohup.out.logelseecho "$(date +%F' '%X) :The file size $file_size M , not clean it !" >> /weblogic/stock_domain/clean_nohup.out.logficd $path2file_size=`du -sm nohup.out | awk '{print $1}'`if [ $file_size -ge 1 ];then/bin/cp /dev/null nohup.outecho "$(date +%F' '%X) :The file size $file_size M , clean it over!" >> /weblogic/bbsbook_domain/clean_nohup.out.logelseecho "$(date +%F' '%X) :The file size $file_size M , not clean it !" >> /weblogic/bbsbook_domain/clean_nohup.out.logficd $path3file_size=`du -sm nohup.out | awk '{print $1}'`if [ $file_size -ge 1 ];then/bin/cp /dev/null nohup.outecho "$(date +%F' '%X) :The file size $file_size M , clean it over!" >> /weblogic/bbsinfo_domain/clean_nohup.out.logelseecho "$(date +%F' '%X) :The file size $file_size M , not clean it !" >> /weblogic/bbsinfo_domain/clean_nohup.out.logfielseecho "Don't take parameters !"fi--------------------------------------------------------------------备注:path1,path2,path3 路径为需要清理nohup.out⽇志的三个路径2. crontab -e 创建定时任务添加以下内容59 11 * * * ./etc/profile;sh /weblogic/stock_domain/ClearNohup.sh。
Linuxhistory命令详解

Linuxhistory命令详解history命令⽤于显⽰指定数⽬的指令命令,读取历史命令⽂件中的⽬录到历史命令缓冲区和将历史命令缓冲区中的⽬录写⼊命令⽂件。
该命令单独使⽤时,仅显⽰历史命令,在命令⾏中,可以使⽤符号!执⾏指定序号的历史命令。
历史命令是被保存在内存中的,当退出或者登录shell时,会⾃动保存或读取。
在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量HISTSIZE进⾏控制history常见命令参数-c:清空当前历史命令;-a:将历史命令缓冲区中命令写⼊历史命令⽂件【/root/.bash_history】;-r:将历史命令⽂件中的命令读⼊当前历史命令缓冲区;-w:将当前历史命令缓冲区命令写⼊历史命令⽂件中【/root/.bash_history】;n:打印最近的n条历史命令# history会列出bash保存的所有历史命令,并且给它们编了号,我们可以使⽤“叹号接编号”的⽅式运⾏特定的历史!+字母:调出最近使⽤⼀次以此字母开头的命令!!: 表⽰最近使⽤的⼀次操作的命令!+数字:表⽰调出历史记录的⼏条命令!-数字:调出最近的⼏条命令常⽤的命令展⽰历史命令显⽰执⾏时间【默认只显⽰序号和命令】# 临时⽣效[root@localhost ~]# export HISTTIMEFORMAT='%F %T'[root@localhost ~]# echo $HISTTIMEFORMAT[root@localhost ~]# history 2# 永久⽣效[root@localhost ~]# vim /root/.bash_history---> 添加 export HISTTIMEFORMAT='%F %T'source /root/.bashrc # 命令⽣效查看history的缓存数量# 直接查看变量[root@localhost ~]# echo $HISTSIZE# 查看⽂件内容[root@localhost ~]# cat /etc/profile | grep 'HISTSIZE'注意:HISTSIZE=0,表⽰禁⽤history查看最近10条命令[root@localhost ~]# history 10使⽤最近⼀次使⽤的命令[root@localhost ~]# !!使⽤第Num条命令[root@localhost ~]# !994显⽰最近使⽤的某个特定命令[root@localhost ~]# !echo获得上⼀条命令的参数[root@localhost ~]# ls sun.txt[root@localhost ~]# cat !$更改历史记录信息echo $HISTSIZEexport $HISTSIZE=500history -c 清除所有的历史记录history -d 212 清除212⾏的命令数据永久⽣效:echo "export TMOUT = 300" >> /etc/profileecho "export $HISTSIZE=500" >> /etc/profileecho "export $HISTFILESIZE=500" >> /etc/profile 只有500历史记录source /etc/profile 永久⽣效 (source == .)注意: cat ~/.bash_history (历史记录⽂件的命令数量,属于⽤户的变量)。
Linux定时清理日志 -- 定时删除日志文件

Linux定时清理日志-- 定时删除日志文件我们在Linux上开发的应用一般都有日志记录功能,但是时间久了,日志文件会占满硬盘空间,我们不得不手动清理日志文件,如果能够让系统定时清理日志文件岂不是一件很爽快的事情。
1.删除文件命令:➢格式:find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;➢实例:find /home/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;➢说明:将/home/soft/log/目录下所有30天前带".log"的文件删除。
➢注意:-name 空格“*log”空格-exec 空格rm 空格-rf 空格{} 空格\;-->格式一定要保持一致尤其是这个空格。
具体参数说明如下:●find:linux的查找命令,用户查找指定条件的文件;●/home/soft/log/:想要进行清理的任意目录;●-mtime:标准语句写法;●+30:查找30天前的文件,这里用数字代表天数;●-name "*.log":目标文件的类型,带有log的所有文件●-exec:固定写法;●rm -rf:强制删除文件,包括目录;●{} \; :固定写法,一对大括号+空格+\+;2.计划任务:2.1创建shell:➢创建shell文件:touch /opt/soft/bin/auto-del-30-days-ago-log.sh➢添加执行权限:chmod +x auto-del-30-days-ago-log.sh2.2编辑shell脚本:➢打开文件:vi auto-del-30-days-ago-log.sh➢添加如下内容:#!/bin/shfind /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;2.3计划任务:➢执行:#crontab -e将auto-del-30-days-ago-log.sh执行脚本加入到系统计划任务,到点自动执行➢输入:10 0 * * * /home/soft/log/auto-del-7-days-ago-log.sh这里的设置是每天凌晨0点10分执行auto-del-7-days-ago-log.sh文件进行数据清理任务了。
Linux的删除history的方法

Linux的删除history的⽅法
Linux的删除history的⽅法
history --help
查看历史的命令
history
查看最后15⾏
history | tail -n 15
重新执⾏第number条命令
!numeber
其余的我不想介绍。
我只介绍如何删除history记录
删除当前会话的历史记录
history -c
这种删除只会删除当前会话的历史记录,下次⽤xshell打开的时候,你会发现你根本没删掉之前的。
你进⼊⽤户⽬录
cd ~/
输⼊
ls -alF
你会看到有两个隐藏的⽂件。
cat .bash_history
你会发现历史命令记录就在这个⽂件⾥,你删除这个⽂件,就能把history记录删掉,你重新登录会话,会发现也都删了。
rm ~/.bash_history
这个⽂件你删掉了之后,你有新的history记录,这个⽂件会重新⽣成的。
或者你可以这样删
history -c && history -w
意思是清楚当前会话的命令记录,并且写到.bash_history
-a 是追加 -w是覆盖,要删除,肯定是⽤空的去覆盖。
history命令参数

history命令参数1. -c:清除历史命令记录使用history -c命令可以清除当前会话的历史命令记录。
这对于保护个人隐私或者清理不需要的历史记录非常有用。
执行该命令后,再次使用history命令就无法查看到之前执行的命令了。
2. -a:将当前会话的历史命令追加到历史记录文件使用history -a命令可以将当前会话的所有命令追加到历史记录文件中。
这样做的好处是,即使会话意外终止,也能保留会话期间执行的命令记录。
3. -w:将当前会话的历史命令写入历史记录文件使用history -w命令可以将当前会话的所有命令写入历史记录文件。
与-a参数不同的是,-w参数会覆盖历史记录文件中的内容,而不是追加到文件末尾。
4. -r:读取历史记录文件中的命令使用history -r命令可以读取历史记录文件中的命令,并将其加载到当前会话的历史记录中。
这对于在多个终端之间共享命令历史记录非常有用。
5. -n:将历史记录文件中的命令加载到当前会话的历史记录中使用history -n命令可以将历史记录文件中的命令加载到当前会话的历史记录中,但不会覆盖当前会话已有的命令记录。
这对于在多个会话之间同步命令历史记录非常有用。
6. -d offset:删除指定偏移量的命令使用history -d offset命令可以删除指定偏移量的命令。
偏移量是命令在历史记录中的位置,可以使用history命令查看命令的偏移量。
这对于删除某个敏感命令或者错误命令非常有用。
7. -p pattern:显示与模式匹配的命令使用history -p pattern命令可以显示与指定模式匹配的命令。
模式可以是一个关键字、一个正则表达式或者一个命令前缀。
这对于筛选特定类型的命令非常有用。
8. -s args:将args作为命令添加到历史记录中使用history -s args命令可以将args参数作为一个命令添加到历史记录中。
这对于将一些常用的命令添加到历史记录中,方便下次使用非常有用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux性能优化之定期清理和保留 history 记录
有经验的 Linux 系统工程师都喜欢把 Bash 的 HISTSIZE/HISTFILESIZE 设置的很大,这样可以记录更多的历史命令以便以后查阅,这是个好习惯,但有个小问题就是 history 记录了的大量信息在系统启动后就被 load 到内存里,并且一直保存在内存里,这样浪费了不少内存,据统计100000条历史记录大概占用 10MB 左右的内存。
要知道,现在的IT运维系统已经趋向于云计算和虚拟化,其特别就是根据你对硬件资源的需求为你定制的分配。
因此,history所占用的内存完全是没必要的,10MB的可用内存可以干很多事情,比如启用一个 MySQL 服务,开个 syslogd等。
那么如何保存尽量多的历史记录而又不浪费内存呢?一个办法就是把历史记录定期保存到硬盘上,bash 的当前历史记录保存在 .bash_history 里,只要定期清理这个文件的记录就可以了:[code language=”bash”]
#!/bin/bash
# archive linux command history files
umask 077
maxlines=2000
lines=$(wc -l < ~/.bash_history)
if (($lines > $maxlines)); then
cut=$(($lines – $maxlines))
head -$cut ~/.bash_history >> ~/.bash_history.sav
sed -e "1,${cut}d" ~/.bash_history > ~/.bash_history.tmp
mv ~/.bash_history.tmp ~/.bash_history
fi
[/code]
上面脚本所做的事情很简单,检查 .bash_history 文件,如果行数超过2000行就剪裁2000行记录(这个值可以自定义,修改maxlines参数即可)并添加到 .bash_history.sav 这个文件里,这样我们就可以保存所有的历史记录,而且当前的历史记录不超过2000行,只占用少量资源。