`

cleanup: 一个清空/var/log目录下的日志文件的脚本

阅读更多

1.脚本编写

#!/bin/bash
# Cleanup, 版本 3

#  注意:
#  -------
#  这个脚本使用了相当多的特性,这些我们稍后将会解释.
#
#  到那时,你已经学了这本书的一半了,你将不会再对shell感觉神秘了。
#



LOG_DIR=/var/log
ROOT_UID=0     # 只有用户ID变量$UID值为0的用户才有root权限.
LINES=50       # 默认的行数
E_XCD=66       # 不能进入到目录时的退出代码值
E_NOTROOT=67   # 不是root用户时退出的代码值


# 必须以root用户运行,以下进行检测
if [ "$UID" -ne "$ROOT_UID" ]
then
  echo "Must be root to run this script."
  exit $E_NOTROOT
fi  

if [ -n "$1" ]
# 测试是否提供了命令行参数(即是测试命令行参数至少有一个参数)
then
  lines=$1
else  
  lines=$LINES # Default, if not specified on command line.
fi  


#  Stephane Chazelas建议,
#+ 下面是一种更好的检测命令行参数的方法,
#+ 但是对于现在来说还是有些高级。
#
#    E_WRONGARGS=65  # 不是数字参数 (参数格式不对)时的退出码
#
#    case "$1" in
#    ""      ) lines=50;;
#    *[!0-9]*) echo "Usage: `basename $0` file-to-cleanup"; exit $E_WRONGARGS;;
#    *       ) lines=$1;;
#    esac
#
#* 可以跳到"循环"那章阅读开头一部分去了解上面的代码意思.


cd $LOG_DIR

if [ `pwd` != "$LOG_DIR" ]  # 也可以用  if [ "$PWD" != "$LOG_DIR" ]
                            # 如果工作目录不在/var/log里?
then
  echo "Can't change to $LOG_DIR."
  exit $E_XCD
fi  #在操作清空日志文件之前再次检查是否在正确的目录里

# 可以像下面再次确定是否在正确的目录里:
#
# cd /var/log || {
#   echo "Cannot change to necessary directory." >&2
#   exit $E_XCD;
# }




tail -$lines messages > mesg.temp # 保存message日志文件最后面几行日志信息到临时文件.
mv mesg.temp messages             # 然后用临时文件覆盖messages日志文件


# cat /dev/null > messages
#* 上面这句把messages日志文件全部清空,这样没有上面那样保留最后几行安全

cat /dev/null > wtmp  #  ': > wtmp' and '> wtmp'  have the same effect.
echo "Logs cleaned up."

exit 0
#  
#一个脚本以0为退出代码表明脚本执行成功.

 

2.脚本运行

你可以:
chmod 555 scriptname (使每个人都有读和执行的权限)
也可以
chmod +rx scriptname (使每个人都有读和执行的权限)chmod u+rx scriptname (仅仅使脚本文件拥有者有读和执行的权限)

3.

 

 

 

 

分享到:
评论

相关推荐

    linux输入yum后提示: -bash: /usr/bin/yum: No such file or directory的解决方法

    在Linux系统中,`yum`是一个非常重要的包管理器,用于安装、更新和删除软件包。当用户在命令行输入`yum`时,系统通常会在`/usr/bin`目录下寻找该命令的可执行文件。如果出现“-bash: /usr/bin/yum: No such file or ...

    Linux-nohup日志拆分

    随着运行时间的增长,这个文件可能会变得非常大,不仅占用大量磁盘空间,还可能影响系统的性能。因此,实现`nohup`日志的自动拆分和清理是非常有必要的。本文将详细介绍如何在Linux环境下设置`nohup`日志的定时拆分...

    Android源码编译make的错误处理

    为了解决该问题,需要修改以下四个文件中的相关设置: - `external/clearsilver/cgi/Android.mk` - `external/clearsilver/java-jni/Android.mk` - `external/clearsilver/util/Android.mk` - `external/...

    docker /var/lib/docker/aufs/mnt 目录清理方法

    1、创建脚本文件 vi cleandocker.sh 内容如下: #!/bin/sh echo ==================== start clean docker containers logs ========================== logs=$(find /var/lib/docker/containers/ -name *-json....

    libstdc++.so.6: 无法打开共享对象文件: 没有那个文件或目录

    ### libstdc++.so.6: 无法打开共享对象文件: 没有那个文件或目录 #### 问题概述 用户在CentOS 7.6环境中遇到了“libstdc++.so.6: 无法打开共享对象文件: 没有那个文件或目录”的错误提示。该问题通常出现在尝试...

    shell 脚本抓取android logcat和kernel log,以及删除旧的log

    这个函数会查找`~/logs`目录下所有`.log`文件,如果文件的修改时间超过7天,就会删除这些文件。 为了控制输出规则,可以利用`props`(属性)来实现。在Android中,`props`是系统属性,可以通过`setprop`和`getprop`...

    jeecms源码级安装使用文档

    如果遇到问题,需要手动执行SQL脚本,这些脚本通常位于项目源码的`db`目录下。 6. **访问后台管理**:Jeecms默认的后台管理地址是`http://yourserver/manager`,首次登录的管理员账号和密码通常是`admin/admin`。...

    SVN执行clean up失败后如何清空svn队列

    NULL 博文链接:https://zhangrende.iteye.com/blog/2404656

    mac-cleanup::wastebasket: macOS 清理脚本

    mac清理 运行以下任务的 macOS 清理脚本: 清空所有已安装卷和主硬盘上的垃圾箱 清除系统日志文件 清除 Adob​​e 缓存文件 清理 iOS 应用程序 ...brew install fwartner/tap/mac-cleanup 使用卷曲

    Eclipse插件\快捷键

    - **FatJar**:用于将依赖项合并到一个单独的 JAR 文件中的工具。 **下载地址**:[http://fjep.sourceforge.net/](http://fjep.sourceforge.net/) #### 10. RegExTest - Regular Expressions Testing Tool - **...

    最新Color Admin1.9 - bootstrap3响应后台模板+前端网页模板

    Concept of design for Color Admin is based on the FLAT design and finally it comes out with a clean and neat design. It is built on top of the popular Bootstrap Framework. Besides that, it is bundled...

    aix_设置定期删除oracle日志归档

    在Oracle数据库中,归档日志模式是在数据库运行在归档模式下时产生的,当一个redo log切换发生时,旧的日志文件会被复制到一个安全的位置,即归档日志目录。这样,即使数据库发生故障,也可以通过这些归档日志进行...

    docker-volume-cleanup:[不赞成使用]容器以清理孤立的泊坞窗卷

    -rm -t volume-cleanup .docker run -d -v /var/lib/docker:/var/lib/docker -v /var/run/docker.sock:/var/run/docker.sock容器运行cron -L 15 && tail -F /var/log/docker_volume_cleanup.py并每5分钟运行一次。...

    homebrew-mac-cleanup:OSX的:wastebasket_selector:清理脚本

    清除系统日志文件 清除Adobe缓存文件 清理iOS应用程序 删除iOS设备备份 清理Xcode派生数据和存档 重置iOS模拟器 清理自制缓存 清理所有旧版本的宝石 清理悬空的Docker映像 清除不活动的内存 清理点缓存 清理Pyenv-...

    downloads-cleanup:一个Python脚本来清理您的下载文件夹

    一个Python脚本,用于清理您的下载文件夹。 所有文件将被分类到分类文件夹中。如何设置和运行该脚本使用C:/Users/<Your>/Downloads作为标准路径。 如果要更改此设置,请打开config.json并将“ Your-Path-Here替换为...

    SHELL实例介绍

    #### Example2-3 cleanup: 一个增强的和广义的删除日志文件的脚本 **脚本内容:** ```bash #!/bin/bash # 清除, 版本3 # Warning: # ------- # 这个脚本有好多特征, 这些特征是在后边章节进行解释的, 大概是进行到...

    Liunx系统定时删除任务,定时清理日志,定时清理任务

    这个脚本会查找`$LOG_DIR`目录下所有扩展名为`.log`且30天未被修改的文件进行删除。你可以根据实际情况调整`$LOG_DIR`和`OLD_LOGS`变量的值。 记得给脚本添加执行权限:`chmod +x /path/to/clean-log.sh`,然后测试...

    PHP使用Session遇到的一个Permission denied Notice解决办法

    如果在ubuntu/Debian下, 采用apt安装的PHP, 那么在使用Session的时候, 就可能会有小概率遇到这个提示. 复制代码 代码如下: PHP Notice: session_start(): ps_files_cleanup_dir:  opendir(/var/lib/php5) failed: ...

    深入理解PHP原理之Session Gc的一个小概率Notice

    在使用PHP进行Web开发时,有时会在Ubuntu或Debian系统上遇到一个与Session相关的错误提示,具体表现为:`PHP Notice: session_start(): ps_files_cleanup_dir: opendir(/var/lib/php5) failed: Permission denied ...

    Window Installer Clean Up 彻底清除软件残留,完美适用于薛定谔的AutoDesk

    压缩包中的“msicuu2.exe”是Windows Installer CleanUp Utility的可执行文件,用户运行这个文件就能启动工具。需要注意的是,尽管这个工具在处理卸载问题上非常有用,但它并不是一个常规的卸载工具,且微软已经在较...

Global site tag (gtag.js) - Google Analytics