同事使用mtop监控mysql和redis,redis没有流量监控,然后我写个脚本集成到mtop里边。然后查了相关资料snmp。
发现线上n多的负值,不知道问题,我本地没有问题。我查了64位系统的流量累加没有上限,后来同事说可能snmp是32位的,汗。我在redis流量表中类似mtop的操作,保存临时值然后清除,移动到history表中,也看不到具体问题在哪。我也不能有线上权限,让同事查我看,大约知道在4000多M的时候出现负的,差不多应该上限是4g。然后判断 new-old<0,就new+4096-old,然后没出现负值了。
Read more...
Archive for 系统
ubuntu修改rm命令,使删除的文件放到回收站
早就想实现这么个功能,大部分不确定删除的时候,我都直接先移动到我用户的tmp目录下,这个目录我都放一些可删可不删的测试文件等。确定的我就直接删除。但是还有失误啥的,根本不可能预防所有情况。今天搜索一文章,正好实现。原理就是用一个新命令替换系统的rm命令。
原文http://www.webupd8.org/2010/02/make-rm-move-files-to-trash-instead-of.html。
1.
Read more...
sudo apt-get install trash-cli
原文有介绍这个工具,我也没用试试0 0。
2.sudo vim /usr/local/bin/trash-rm
文件内容
#!/bin/bash
# command name: trash-rm
shopt -s extglob
recursive=1
declare -a cmd
((i = 0))
for f in "$@"
do
case "$f" in
(-*([fiIv])r*([fiIv])|-*([fiIv])R*([fiIv]))
tmp="${f//[rR]/}"
if [ -n "$tmp" ]
then
#echo "\$tmp == $tmp"
cmd[$i]="$tmp"
((i++))
fi
recursive=0 ;;
(--recursive) recursive=0 ;;
(*)
if [ $recursive != 0 -a -d "$f" ]
then
echo "skipping directory: $f"
continue
else
cmd[$i]="$f"
((i++))
fi ;;
esac
done
trash "${cmd[@]}"
12.04以上的版本,把最后一行的trash换成trash-put。
执行权限
sudo chmod +x /usr/local/bin/trash-rm 3.
vim ~/.bashrc 替换命令,在文件最后添加
alias rm="trash-rm"
shell下执行bash,重载文件 搞定了。
http://www.webupd8.org/2010/02/make-rm-move-files-to-trash-instead-of.html
centos上安装freetds,ImportError: libsybdb.so.5
出现这个问题“ImportError: libsybdb.so.5”,先翻了 libsybdb.so.5这个文件,没翻到。然后找到了这个命令:locate libsybdb.so.5,直接将所有都列出来了。
我发现路径没问题,因为我是用的virtualenv环境,我以为是用户权限问题,找配置文件发现没问题。
然后从网上查,发现有的解决方法是将lib路径加入/etc/ld.so.conf中,我就看了本地ubuntu系统和centos的上的这个配置文件,发现确实是centos上的没添加lib路径。centos上我是编译安装的,不知为啥没加上,加入/usr/local/freetds/lib,然后ldconfig使配置生效。问题解决。
Read more...
ubuntu deb包 解包并查看安装时进行的操作
我要把mercurial-server的相关文件放到web项目里一起部署,于是想知道在apt-get安装mercurial-server时都执行了那些操作。官方没有手动安装的教程,我就查了整理一下。
开始找到这个命令,这个命令只会将一些安装的文件列出来,还有一些不知道什么用0 0.没有达到目的。
dpkg -x xxxx.deb xxxx
然后找到
ar vx xxxx.deb
.deb其实是一个ar档,所以使用ar解压。
deb 包本身有三部分组成:数据包,包含实际安装的程序数据,文件名为 data.tar.XXX;安装信息及控制脚本包,包含 deb 的安装说明, 标识,脚本等,文件名为 control.tar.gz;最后一个是 deb 文件的一些二进制数据,包括文件头等信息,一般看不到,在某些软件中打开可 以看到。
control.tar.gz 则包含了一个 deb 安装的时候所需要的控制信息。一般有 5 个文件:control,用了记录软件标识,版本号,平 台,依赖信息等数据;preinst,在解包 data.tar.gz 前运行的脚本;postinst,在解包数据后运行的脚本;prerm,卸载时, 在删除文件之前运行的脚本;postrm,在删除文件之后运行的脚本。
搞定0 0.
参考:
http://www.linuxdiyf.com/viewarticle.php?id=78628
http://www.baike.com/wiki/DEB%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F
Read more...
ubuntu安装qq和搜狗、谷歌输入法
同事写在wiki上,和我说照装的,记录一下。
安装wine
sudo add-apt-repository ppa:ubuntu-wine/ppa
1911 sudo apt-get update
1912 sudo apt-get install wine
安装gtk
sudo apt-get install libgtk2.0-0:i386
不加386不行,我开始没有加,qq不能启动,报错了。
到http://www.longene.org/download/下载qq,并安装。
ubuntu搜狗谷歌输入法安装
ubuntu install sougoupinyin/googlepinyin
1. sudo apt-get remove --purge ibus 卸载Ubuntu 自带输入法
2. sudo add-apt-repository ppa:fcitx-team/nightly 添加源
3. sudo apt-get update
4. sudo apt-get install fcitx-sogoupinyin fcitx-googlepinyin
Read more...
Mercurial hg 指定ssh private key
发现现在越来越懒,很多小问题都不再记录。要改正
1.生成一个新key
Read more...
ssh-keygen2.添加key
ssh-add ~/.ssh/test
3.编辑~/.ssh/config 添加:
Host woqu
HostName 192.168.1.118
IdentityFile /home/a0x55aa/.ssh/test
4.项目.hg/hgrc修改
[paths]
default = ssh://hg@woqu/test/haha
还有一种方法:
定义hgrc里边[ui],ssh
ssh = ssh -i ~/.ssh/test -C
编辑的时候使用
hg clone -e 'ssh -i /path/to/key' ssh://user@host/path
ubuntu virtualenv下crontab编写执行python脚本
crontab的基本用法:
$ man crontab
crontab -e 编辑并生产cronbat文件,也可以直接使用crontab 文件名 添加一个写好的crontab文件。
crontab -l 查看当前用户的crontab list。
crontab -r 删除所有crontab任务。
还有一个-u指定用户。
virtualenv环境下使用crontab:
* * * * * /path/to/EVN/bin/python test.py > /path/to/log/test.log
在crontab脚本中指定使用哪一个python。
Read more...
执行sudo出现 sudo: must be setuid root解决方法
昨天在群里聊天的时候,有一段时间没看聊天记录,只看到他们在讨论不知道root密码,su命令不能用。我就说了句为什么要su。直接sudo不久行了么。然后发给我个命令"sudo chmod -R 777 /usr",说是执行这个命令了,sudo不能用了 ,我也没多想,直接敲上试了下。我查,果然不行了 ,然后就到网上查了一下原因以及解决方法。记录如下:
1 开机grub引导页面,按esc 或者是 shift(我在这里试了五六次,组后是不停狂按两个键,才进去的),grub启动页面时间很短,但是现在不能执行sudo命令,时间也不能修改,只有狂按了。这是为了进入recovery mode(修复模式)。
2 进入recovery mode(修复模式)之后,选择recovery mode(修复模式)并回车,下一个界面选择boot,下边有命令提示终端,我直接在里面输入命令,搞定~
3执行的命令,这个可以多种途径。网上直接是执行:
chown root:root /usr/bin/sudo
chmod 4755 usr/bin/sudo
我的方法是直接 passwd root ,修改密码。保证下次不用这么麻烦了。然后reboot,重启之后在su,切换到root下执行的命令。
4 为 SUID
2 为 SGID
1 为 SBIT
SUID 权限仅对二进位程序(binary program)有效;
运行者对於该程序需要具有 x 的可运行权限;
本权限仅在运行该程序的过程中有效 (run-time);
运行者将具有该程序拥有者 (owner) 的权限。
Read more...
Ubuntu PIL安装Python Imaging Library
apt-cache show python-imaging 查看版本是最新的1.1.7
直接apt-get install python-imaging 安装成功
import Image
Image.VERSION
'1.1.7'
查资料可以自己下载源码编译,但是我没选择折腾。直接安装吧。
再记录一个小问题:在Ubuntu下django的settings的配置中TIME_ZONE = 'CCT'不成功,需要修改为'Asia/Shanghai'。就OK了,昨天忘记记录了。
Read more...
Ubuntu下安装FTP服务-VSFTPD
安装命令:
apt-get install vsftpd
环境:Ubuntu 10.04 vsftpd_2.2.2-3ubuntu6.3_i386.deb
开启关闭服务的命令:
sudo /etc/init.d/vsftpd start
sudo /etc/init.d/vsftpd stop
查看ftp的根目录可以用这个命令 finger ftp
重启ftp:sudo /etc/init.d/vsftpd restart
查看vsftpd是否启动了可以用 pgrep vsftpd 或者列出所有进程 ps -d
配置:
/etc/vsftpd.conf
local_root=<file> :设置本地用户登陆后的目录,默认为本地用户的主目录
local_enable=<YES/NO> :设置是否支持本地用户帐号访问
/etc/ftpusers文件
该文件内的用户一律禁止ftp连接,默认列表包括了root, daemon, nobody等。需要禁止某个用户,添加进来便是。
在这里我的配置,允许本地用户访问,root默认禁止登陆,我把root去掉了。ftp不会长时间开,端口也关掉。
local_root=/data #设置修改默认路径,默认为用户根目录。
这里有个问题,文件权限
上传是需要有写权限的,系统写权限大于配置文件的写权限,给文件夹设置你那个用户可写后,在配置文件中在允许写就可以了
chmod 777 /data
chroot_local_user=<YES/NO> :当为YES时,所有本地用户可以执行chroot,控制用户访问上级目录。
Read more...