我正在编写一个脚本来清理正在运行的系统上的日志文件。 因为我已经创建了一个维护日志。 只有日志记录会写一个单词而不是句子。
这是我使用的bash代码。
#!/bin/bash
FILEDIR=/<file>/<directory>
COPYDIR=/</
LOGDIR=/mnt/orabackup/??IPLUS/pmt/log/
INFO="[INF] :"
INFO1="There are no files found for cleanup."
INFO2="There are files found for cleanup."
ERROR="[ERR] :"
ERROR1="there was a error while running the script."
ERROR2="(Error while cleanup files whitout pid)"
ERROR3="(Error while cleanup large files whit pid)"
function writelog
{
string=$1
echo $(date +%Y%m%dT%H:%M:%S) ": ${string}" >> ${LOGDIR}script.log
}
for NOPID in $(ls -1 ${FILEDIR}*.trc|awk -F "_" '{print $3}'|awk -F "." '{print $1}' |uniq)
do
ps -ef|grep oracle|grep -v grep|grep -v LOCAL|grep -v "su -"|grep $NOPID > /dev/null
if [ $? = 1 ]
then
ls -1sh ${FILEDIR} | grep $NOPID > ${LOGDIR}${TIMESTAMP}deleted_logs_whitout_pid.log
rm -f ${FILEDIR}*$NOPID.tr?
elif [ $? = 0 ]
then
writelog ${INFO}${INFO1}
else
writelog ${ERROR}${ERROR1}${ERROR2}
fi
done
当我执行脚本并从writelog函数查看创建的日志文件时,它只记录日期戳和第一个单词,如:
20151224T08:15:28 : [INF]
而不是整个句子如:
20151224T08:15:28 : [INF] :There are no files found for cleanup.
我不知道我做错了什么。如果我回应它的说法是有效的。 有人可以帮助我吗?
答案 0 :(得分:0)
您可以使用function handleControl(e) {
var id = e.target.getAttribute("id");
}
:
awk
答案 1 :(得分:0)
writelog
只将第一个参数写入日志。你需要在调用变量时引用变量,这样它们才会在一个参数中,而不是分成单独的单词。
then
writelog "${INFO}${INFO1}"
else
writelog "${ERROR}${ERROR1}${ERROR2}"
fi
养成始终引用变量的习惯。您需要对变量扩展的结果执行分词或通配符扩展是非常罕见的。当你这样做时,你应该知道它。