常用mysql操作

 

      连接数据库   mysql -u 用户名 -p
      mysql> show databases;//查看数据库
      mysql> use 数据库名;//进入数据库
      mysql> show tables;//查看表
      mysql> desc 表;//查看表结构
    drop database //数据库名;
新建用户名为用户设置权限
mysql> insert into mysql.user(Host,User,Password) values(‘localhost’,’用户名’,password(‘密码’));
mysql> grant all privileges on 表名.* to 用户名@localhost identified by ‘密码’;
mysql> flush privileges;

linux 用户管理&进程管理

查看超过一天的进程 (这里需要排除掉root和一些特定的进程):
ps aux | grep -v root |grep -v PID|grep -v ntp | grep -v rpc | grep -v nobody| grep -v tmux|grep -v SCREEN | awk '$9 !~ /[0-9]:[0-9]/'
杀掉超过一天的进程 (这里需要排除掉root和一些特定的进程):
ps aux | grep -v root |grep -v PID|grep -v ntp | grep -v rpc | grep -v nobody| grep -v tmux|grep -v SCREEN  | awk '$9 !~ /[0-9]:[0-9]/' | awk '{print $2}'| xargs kill -9
查看空闲超过一天的用户
w | grep days | grep pts
强制断开登录空闲超过一天的用户
w | grep days | grep pts | awk '{print "/dev/"$2}' | xargs sudo fuser -k
查看登录超过一天的用户
w | awk '$4 !~ /[0-9]:[0-9]/' | grep -v IDLE | grep -v users
关闭登录超过一天的用户
w | awk '$4 !~ /[0-9]:[0-9]/' | grep -v IDLE | grep -v users |awk '{print "/dev/"$2}'| xargs fuser -k

splunk手工配置

手工字段提取
/opt/splunk/etc/users/admin/search/local/props.conf
手工添加数据源
/opt/splunk/etc/apps/launcher/local/inputs.conf
[数据源类型]
监控本地文件:monitor://文件路径
监听udp端口 :udp://端口号
监听tcp端口  :tcp://端口号
[monitor:///home/a/data]
disabled = false
followTail = 0
sourcetype = 数据类型
[udp://515]
connection_host = ip
source = 数据源
sourcetype = 数据类型

Welcome 欢迎关注我的公众帐号~

0

    c1pher

    虽说都知道我是谁,但还是要简单说下,在不同时期大家叫我不同的名字,小时后家里叫天明,上小学了同学们叫小包子,初中都叫小宇,高中的同学都叫我小强,大学里叫啥的都有,后来工作了在阿里的花名叫伯越。

    这个公众帐号是个人性质的,没有什么营销啊推广的目的,就是想消磨一下下班后的空闲时间,然后搞点东西玩玩,鼓励自己多写点东西,积累提升一下。你有什么好点子和建议欢迎大家提出来帮助我成长。

    后台功能火爆建设中,敬请期待…..

————————————

    文章什么的不定期发吧…这些东西主要看心情。

    这个公共帐号还会时不时的发一些我大淘宝的促销信息,分享给那些购物狂朋友们,省着整的我跟被盗号了似的到处发消息…其实那些都是蛮实惠的东西~

       回复@+城市 可查看该城市温度,如 ‘@北京’

       回复我要去*** 可以查询线路   如 ‘我要去西湖’

       回复附近的*** 可以查询周边   如 ‘附近的饭店’

点击关注,小宇的公众帐号

 

qrcode_for_gh_431f3043e807_258

syslog-ng 配置

option 全局配置

source 数据源

source <identifier> { source-driver(params);source-driver(params);... };

internal syslog-ng内部产生的消息
unix-stream 打开指定的SOCK_STREAM模式的unix套接字,接收日志消息
unix-dgram 打开指定的SOCK_DGRAM模式的unix套接字,接收日志消息
file 打开指定的文件读取日志信息  file(“/var/log/aqtas.log”); 
pipe,fifo 打开指定的管道或者FIFO设备,读取日志信息
tcp 在指定的TCP端口接收日志消息
udp 在指定的UDP端口接收日志消息
sun-stream(s) 在solaris系统中,打开一个(多个)指定的STREAM设备,从其中读取日志消息

destination 数据目标

destination  <identifier> { destination-driver(params);estination-driver(params);.....};

file 日志消息写到指定的文件  file(“/var/log/aqtas.log”); 
fifo,pipe 把日志消息写到指定的管道
unix-stream 把日志消息发送到给定的SOCK_STREAM类型的UNIX套接字(Linux)
unix-dgram 把日志消息发送到给定的SOCK_DGRAM类型的UNIX套接字(BSD)
udp 把日志消息发送到指定主机的UDP端口
TCP 把日志消息发送到指定主机的TCP端口
usertty 如果用户登录,把日志发送到指定的终端
program fork并启动指定的程序,把日志消息发送到这个进程的标准输出。
两个日志消息源驱动器比较相似,都打开AF_UNIX类型的套接字,在套接字上监听日志消息。
unix-stream()主要用在Linux,使用 SOCK_STREAM参数,是面向连接的,不会造成日志消息的
丢失;unix-dgram()用在BSD系统上,使用SOCK_DGRAM参数,是无连 接的,如果系统过载,会造成日志消息丢失。

 

filter 过滤项

filter <identifier> {expression;};

表达式中可以包含逻辑操作符 and or  not

host() 通过主机名过滤,接受正则
match() 字符串匹配,接受正则
program()程序名过滤,接受正则
level()过滤器函数可以根据 serveirty 来过滤,你可以指定多个 severity ,也可以指定一个范围。如果要表示范围,用 .. 的格式, 一个级别:level(warning) ;范围: level(err..emerg)
priority()根据优先级选择日志消息

log

log {  
       source(s1); source(s2); ...

       filter(f1); filter(f2); ...

       destination(d1); destination(d2); ... 
};

 

logwatch配置

logwatch 是一个日志分析工具,它根据用户设定的频率来分析日志并给指定用户发送邮件。同样,可以使用 emerge 安装。安装完成后,默认的配置文件在 /usr/share/logwatch/default.conf/logwatch.conf。用户自定义的配置文件在 /etc/logwatch/。将 /usr/share/logwatch/default.conf/logwatch.conf 复制到 /etc/logwatch/,并稍加修改即可使用。一些典型配置选项如下

LogDir = /var/log                    #logwatch 会去 /var/log 找你定义的 log 文件
TmpDir = /var/cache/logwatch   #缓存目录
Output = mail                         #输出形式为 mail
MailTo = root                          #发送给 root
MailFrom = Logwatch                #邮件发送者
Range = yesterday                    #处理什么时候的日志 , 可选项  All , Yesterday , Today 
Detail = High                           #日志详细度, 可选项 Low , Med , High , 或是 0-10数字
Print = No                              #可选项, Yes 会被打印到系统标准输出, 并且不会以邮件的形式发送到 MailTo 设定的邮箱里 , No 选项则会发到邮箱中
Server = All                             #监控所有服务 all
mailer = "/usr/sbin/sendmail -t"

logwatch 是用 cron 来执行的,在 /etc/cron.daily 目录下,有 logwatch 执行脚本。

logrotate配置

logrotate被设计用来整理归档日志文件。想象一下,如果配置好 syslog-ng 后,就再也不对日志进行管理,那么/var/log目录下的日志文件将会越来越大,变得难以读取和分析。基于此,产生了logrotate。logrotate 的主要功能是将旧的日志备份,并产生新的日志文件继续记录,到达用户规定的备份数量之后,就将其删除。它的原理可以用下图描述
114058_BzHM_1161070
配置文件包括/etc/logrotate.conf和/etc/logrotate.d/。前者是针对整体设定,后者是针对具体 daemon 设定。

/etc/logrotate.conf

#每周备份
weekly
#保留四个文件
rotate 4
#每次建立新的日志记录档案
create
#是否启用压缩
#compress
 
#将 logrotate.d 目录内的档案读取进来进行 rotate
include /etc/logrotate.d
 
#仅针对 wtmp 的设定
/var/log/wtmp{
    monthly
    size 1M
    create 0664 root utmp
    rotate 1
}

虽然可以将所有的 logrotate 工作都记录到 logrotate.conf 档案内,但是由于系统存在很多 dameon,这样会使 logrotate.conf 档案显得冗长,而且不方便服务的管理。所以建议对于每个服务,建立单独的 logrotate 文件并放在 /etc/logrotate.d 目录内。

total 92
-rw-r--r-- 1 root root 144 Jun  8  2009 acpid
-rw-r--r-- 1 root root 288 Jun 28  2007 conman
-rw-r--r-- 1 root root  71 Jun  9  2009 cups
-rw-r--r-- 1 root root 571 Aug 21  2006 mgetty
-rw-r--r-- 1 root root 136 Aug 12  2008 ppp
-rw-r--r-- 1 root root 442 Jul 16  2008 psacct
-rw-r--r-- 1 root root  61 Jul 24  2009 rpm
-rw-r--r-- 1 root root 154 Aug 24  2009 snmpd
-rw-r--r-- 1 root root 213 Sep  1  2010 syslog-ng
-rw-r--r-- 1 root root 198 Nov 27  2012 tsar
-rw-r--r-- 1 root root  32 Apr 22  2009 up2date
-rw-r--r-- 1 root root 100 Dec  4  2008 wpa_supplicant
-rw-r--r-- 1 root root 100 Jul  8  2009 yum

这样,就可以利用 logrotate 进行日志档案的备份工作了。logrotate 默认是利用 cron 来进行工作的,在 /etc/cron.weekly 或/etc/cron.daily 目录下,有一个名为 logrotate 的脚本,内容是

#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

所以,在每周执行 cron 的时候,都会运行 logrotate 脚本,它读取 logrotate.conf 对日志进行备份。

淘宝客推广自用

新浪微博地址url字符与mid的相互转换原理及 代码实现(php+python)

参考:http://qinxuye.me/article/mid-and-url-in-sina-weibo/  http://fengbin.me/2011/06/weibo-mid-url-str/  http://blog.sina.com.cn/s/blog_4a238ec201012pnb.html


  新浪微博的URL都是如:http://weibo.com/2196734667/ArOPrxOnF 这样三部分: 域名/uid/mid   第一部分为新浪微博的域名, 第二部分为博主uid, 第三部分为一串貌似随机的字符串(实际上是微博mid). 在开始计算之前有必要说明一下,什么是base62编码。它实际上就是十进制和62位进制的互换。对于62进制,从0数到9以后,10用小写字母a表示,接着数完26个字母,到z为35,然后36为大写字母A,一直到61为大写字母Z。所以,我们可以实现十进制数字base62编码的encode和decode。 ArOPrxOnF它的计算其实也很简单,从后向前四个字符一组,就得到: A rOPr xOnF 将每个字符串用base62编码来decode,就可以得到它们的十进制数字分别为: 36 6630245 8058491 将它们拼起来就可以得到mid为:“3666302458058491”。这里要强调的是:对于除了开头的字符串,如果得到的十进制数字不足7位,需要在前面补足0。比如得到的十进制数分别为:36,30245,8906190,则需要在30245前面添上两个0。 base62编码   Python代码:


ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

def base62_encode(num, alphabet=ALPHABET):
    """Encode a number in Base X

    `num`: The number to encode
    `alphabet`: The alphabet to use for encoding
    """
    if (num == 0):
        return alphabet[0]
    arr = []
    base = len(alphabet)
    while num:
        rem = num % base
        num = num // base
        arr.append(alphabet[rem])
    arr.reverse()
    return ''.join(arr)

def base62_decode(string, alphabet=ALPHABET):
    """Decode a Base X encoded string into the number

    Arguments:
    - `string`: The encoded string
    - `alphabet`: The alphabet to use for encoding
    """
    base = len(alphabet)
    strlen = len(string)
    num = 0

    idx = 0
    for char in string:
        power = (strlen - (idx + 1))
        num += alphabet.index(char) * (base ** power)
        idx += 1

    return num

url和mid 互转 python代码:


def url_to_mid(url):
    url = str(url)[::-1]
    if len(url) % 4 == 0:
		size = len(url) / 4
	else:
		size = len(url) / 4 + 1
    result = []
    for i in range(size):
        s = url[i * 4: (i + 1) * 4][::-1]
        s = str(base62_decode(str(s)))
        s_len = len(s)
        if i < size - 1 and s_len < 7:
            s = (7 - s_len) * '0' + s
        result.append(s)
    result.reverse()
    return int(''.join(result))

def mid_to_url(midint):
    midint = str(midint)[::-1]
	if len(midint) % 7 == 0:
		size = len(midint) / 7
	else:
		size = len(midint) / 7 + 1
    result = []
    for i in range(size):
        s = midint[i * 7: (i + 1) * 7][::-1]
        s = base62_encode(int(s))
        s_len = len(s)
        if i < size - 1 and len(s) < 4:
            s = '0' * (4 - s_len) + s
        result.append(s)
    result.reverse()
    return ''.join(result)

PHP代码:


function sinaWburl2ID($url) {
	$surl[2] = str62to10(substr($url, strlen($url) - 4, 4));
	$surl[1] = str62to10(substr($url, strlen($url) - 8, 4));
	$surl[0] = str62to10(substr($url, 0, strlen($url) - 8));
	$int10 = $surl[0] . $surl[1] . $surl[2];
	return ltrim($int10, '0');
}
function str62to10($str62) { //62进制到10进制
	$strarry = str_split($str62);
	$str = 0;
	for ($i = 0; $i < strlen($str62); $i++) {
		$vi = Pow(62, (strlen($str62) - $i -1));

		$str += $vi * str62keys($strarry[$i]);
	}
	$str = str_pad($str, 7, "0", STR_PAD_LEFT);
	return $str;
}

function str62keys($ks) //62进制字典
{
	$str62keys = array (
		"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q",
		"r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q",
		"R","S","T","U","V","W","X","Y","Z"
	);
	return array_search($ks, $str62keys);
}
echo  sinaWburl2ID('ArOPrxOnF'); //调用

function midToStr($mid) {
	settype($mid, 'string');
	$mid_length = strlen($mid);
	$url = '';
	$str = strrev($mid);
	$str = str_split($str, 7);

	foreach ($str as $v) {
		$char = intTo62(strrev($v));
		$char = str_pad($char, 4, "0");
		$url .= $char;
	}

	$url_str = strrev($url);

	return ltrim($url_str, '0');
}

function str62keys_int_62($key) //62进制字典
{
	$str62keys = array (
		"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q",
		"r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q",
		"R","S","T","U","V","W","X","Y","Z"
	);
	return $str62keys[$key];
}

/* url 10 进制 转62进制*/

function intTo62($int10) {
	$s62 = '';
	$r = 0;
	while ($int10 != 0) {
		$r = $int10 % 62;
		$s62 .= str62keys_int_62($r);
		$int10 = floor($int10 / 62);
	}

	return $s62;
}
echo midToStr($mid);//调用