首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

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

2014-07-26 
cleanup: 一个清空/var/log目录下的日志文件的脚本1.脚本编写#!/bin/bash# Cleanup, 版本 3#注意:#-------

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

1.脚本编写

#!/bin/bash# Cleanup, 版本 3#  注意:#  -------#  这个脚本使用了相当多的特性,这些我们稍后将会解释.##  到那时,你已经学了这本书的一半了,你将不会再对shell感觉神秘了。#LOG_DIR=/var/logROOT_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_NOTROOTfi  if [ -n "$1" ]# 测试是否提供了命令行参数(即是测试命令行参数至少有一个参数)then  lines=$1else    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_DIRif [ `pwd` != "$LOG_DIR" ]  # 也可以用  if [ "$PWD" != "$LOG_DIR" ]                            # 如果工作目录不在/var/log里?then  echo "Can't change to $LOG_DIR."  exit $E_XCDfi  #在操作清空日志文件之前再次检查是否在正确的目录里# 可以像下面再次确定是否在正确的目录里:## 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.

?

?

?

?

热点排行