#!/bin/bash ## 按文件大小切割日志文件 ## 注:实际测试中发现,对log文件进行切割后,rsyslogd短时间内会继续往mv后的文件写日志 ## 文件日志所在的目录 LOG_PATH=/opt/logs/router-log ## 日志文件超过多少字节后,进行切割,最多进行100份切割,超过后,按时间为后缀 ## 100M : 104857600 ## 500M : 524288000 ## 1G : 1073741824 LOG_MAX_SIZE=5240 currentDate1=`date "+%Y%m%d_%H%M"` currentLogDate=`date "+%Y-%m-%d"` echo "start log_rotate.sh $currentDate1" echo "LOG_PATH:$LOG_PATH" echo "LOG_MAX_SIZE:$LOG_MAX_SIZE" sendHUP=0 for name in $LOG_PATH/* do if [ -f "$name" ]; then if [ "${name##*.}" == "log" ]; then filesize=$(stat -c '%s' $name) if [[ $filesize -ge $LOG_MAX_SIZE ]]; then rotating=0 for((i=1;i<=100;i++)) do if [ ! -f "$name.$i" ]; then echo "mv $name $name.$i" mv $name $name.$i rotating=1 sendHUP=1 break fi done if [ $rotating -eq 0 ]; then currentDate=`date "+%Y%m%d_%H%M"` mv $name $name.$currentDate sendHUP=1 fi fi fi fi if [ -d "$name" ]; then if [ -d "$name/$currentLogDate" ]; then for name2 in $name/$currentLogDate/* do if [ -f "$name2" ]; then if [ "${name2##*.}" == "log" ]; then filesize=$(stat -c '%s' $name2) if [[ $filesize -ge $LOG_MAX_SIZE ]]; then rotating=0 for((i=1;i<=100;i++)) do if [ ! -f "$name2.$i" ]; then echo "mv $name2 $name2.$i" mv $name2 $name2.$i rotating=1 sendHUP=1 break fi done if [ $rotating -eq 0 ]; then currentDate=`date "+%Y%m%d_%H%M"` mv $name2 $name2.$currentDate sendHUP=1 fi fi fi fi done fi fi done if [ $sendHUP -eq 1 ]; then echo "send HUP to rsyslogd.pid:$(cat /var/run/syslogd.pid)" kill -HUP $(cat /var/run/syslogd.pid) else echo "not send HUP" fi
分类存档: linux - 第3页
日志按大小进行分割
svn批量添加文件
svn批量添加文件:
svn st | awk '{if($1 == "?"){print $2}}'|xargs svn add
安装ganglia
#安装ganglia
yum install zlib-devel freetype-devel libart_lgpl-devel libpng-devel rrdtool expat apr apr-util gcc-c++ rrdtool-devel apr-devel apr-util-devel
#安装libconfuse
wget http://download.savannah.gnu.org/releases/confuse/confuse-2.7.tar.gz
tar xvfz confuse-2.7.tar.gz
cd confuse-2.7
./configure CFLAGS=-fPIC
make
make install
#安装ganglia
./configure –with-gmetad –with-python –enable-gexec –with-libconfuse=/usr/local/confuse –with-libexpat=/usr/local/expat –sysconfdir=/etc/ganglia
make
make install
#创建rrdtool数据目录:
mkdir -p /var/lib/ganglia/rrds
mkdir -p /var/lib/ganglia/dwoo
chown -R apache:apache /var/lib/ganglia
#修改/etc/ganglia/gmetad.conf文件:
vim /etc/ganglia/gmetad.conf
data_source “suc” localhost
setuid_username “apache”
#启动 gmetad
cp -f gmetad/gmetad.init /etc/init.d/gmetad
cp -f /usr/local/sbin/gmetad /usr/sbin/gmetad
chkconfig –add gmetad
service gmetad start
#通过telnet localhost 8651验证gmetad是否正常
#客户端配置 gmond节点
cp -f gmond/gmond.init /etc/init.d/gmond
cp -f /usr/local/sbin/gmond /usr/sbin/gmond
chkconfig –add gmond
gmond –default_config > /etc/ganglia/gmond.conf
#修改/etc/ganglia/gmond.conf配置文件:
cluster {
name=”suc”
owner=”apache”
latlong=”unspecified”
url=”unspecified”
}
service gmond start
通过telnet localhost 8649验证gmond是否正常
ganglia-web可以允许在web中浏览数据,是使用php写的,网上大多数文章写的放在apache httpd中运行,实际上nginx一样可以运行。
脚本远程上传文件
#!/bin/bash local_dir=$1 target_dir=$1 user=root password=password serverip=ip lftp -c "open -u $user,$password sftp://$serverip ; mirror -R --delete $local_dir $target_dir"
lftp也支持ftp协议:
loganalyzer3.6.5的一个bug
从昨天开始搞loganalyzer,一直无法显示自己mysql中的日志。
日志表是自定义的。
+---------+---------------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+---------------------+------+-----+-------------------+----------------+ | logId | bigint(20) unsigned | NO | PRI | NULL | auto_increment | | account | char(64) | NO | | | | | server | int(10) unsigned | NO | | 0 | | | device | char(64) | NO | | | | | error | blob | YES | | NULL | | | uID | int(11) | YES | | 0 | | | date | timestamp | NO | | CURRENT_TIMESTAMP | | +---------+---------------------+------+-----+-------------------+----------------+
自己定义datasource,field,view,dbmapping,一切都OK。但就是显示有问题。
如下图所示少了uID那一列的数据。
google了N多资料都无解。
网上也有一个相同现象的帖子,也没有找到原因:http://kb.monitorware.com/reading-custom-mysql-table-t11919.html
一气之外感觉自己debug可能能找到原因。
在classes/logstreamdb.class.php 中
修改readnext方法如下:
if ( $content['MaxExecutionTime'] > 0 && $scriptruntime > ($content['MaxExecutionTime']-2) ) { // This may display a warning message, so the user knows we stopped reading records because of the script timeout. $content['logstream_warning'] = "false"; // Run optional Message Parsers now if ( isset($arrProperitesOut[SYSLOG_MESSAGE]) ) { $retParser = $this->_logStreamConfigObj->ProcessMsgParsers($arrProperitesOut[SYSLOG_MESSAGE], $arrProperitesOut); // Check if we have to skip the message! if ( $retParser == ERROR_MSG_SKIPMESSAGE ) $ret = $retParser; } // Set uID to the PropertiesOut! //DEBUG -> $this->_currentRecordNum; echo "<br/>"; echo $dbmapping[$szTableType]; foreach($dbmapping[$szTableType] as $key => $val) { echo "|".$key."|".$val, '<br>'; } foreach($dbmapping[$szTableType]['DBMAPPINGS'] as $key => $val) { echo "|_|".$key."|".$val, '<br>'; } foreach($this->bufferedRecords[$this->_currentRecordNum] as $key => $val) { echo "|||".$key."|".$val,"<br/>"; } echo "SYSLOG_UID:".SYSLOG_UID."<br/>"; echo "hello ". $dbmapping[$szTableType]['DBMAPPINGS']['uID']."world"; echo "hello ". $this->bufferedRecords[$this->_currentRecordNum]['uid']."world"; echo "<br/>"; $uID = $arrProperitesOut[SYSLOG_UID] = $this->bufferedRecords[$this->_currentRecordNum][$dbmapping[$szTableType]['DBMAPPINGS'][SYSLOG_UID]]; // Increment $_currentRecordNum $this->_currentRecordNum++; }
把debug信息输出后,才发现问题。
uID对应数据中的logId字段,但在this->bufferedRecords中的key全是小写的。你妹的,各个文档上谁也没写要注意这么一个东西。dbmapping直接修改uID改为logid小写后,日志查看bug解决了。
正常的显示:
windows及linux脚本定位所在目录
windows下:
@echo off
cd /d %~dp0
将工作目录转至bat脚本所在的目录。
linux下:
currentDir=`dirname $0`
currentDir好为脚本所在的目录
如果有其它shell设置了环境变量则使用以下方式调用
. $shellPath/../tools/db_load_init.sh
linux查看缺少的so连接库
ldd $(which /usr/local/nginx/sbin/nginx)
以上命令可以查看缺少的so连接库
网站准备迁移至aliyun
网站准备迁移至aliyun了。
1、付款买下云服务器。最便宜的那种,单核,512M内存,10G数据盘,以后有需要时再进行扩容。
2、安装必要的支持库:
- yum install lrzsz unzip gcc pcre pcre-devel make gcc-c++ ncurses-devel wget
3、安装nginx。
- 下载nginx : wget http://nginx.org/download/nginx-1.2.8.tar.gz
- 编译nginx : ./configure
–prefix=/opt/nginx
–sbin-path=/opt/nginx/bin/nginx
–conf-path=/opt/nginx/config/nginx.conf
–pid-path=/opt/nginx/logs/nginx.pid
–with-http_ssl_module - make;make install
4、安装mysql
5、安装php
6、已经迁移成功。下面就是转移域名了。
7、cvs安装完成。准备把迁移工程:
- 安装参考:http://hsinichi.pixnet.net/blog/post/4524770-cvs-server-for-linux-%E5%AE%89%E8%A3%9D%E6%AD%A5%E9%A9%9F
linux下查看每个进程占用的内存
ps -aux|awk ‘{print $4″\t”$11}’|grep -v MEM|sort -r
linux:vim的退格删除键不能用
vim7.3的退格删除键不能用
backspace 无法删除文本
===========
解决办法:
~/.vimrc中加入
set backspace=indent,eol,start
即可,测试时需要注销重新登录
或者进入vim后执行:set backspace=indent,eol,start
可直接生效
近期评论