Archive for 系统

同事使用mtop监控mysql和redis,redis没有流量监控,然后我写个脚本集成到mtop里边。然后查了相关资料snmp。 发现线上n多的负值,不知道问题,我本地没有问题。我查了64位系统的流量累加没有上限,后来同事说可能snmp是32位的,汗。我在redis流量表中类似mtop的操作,保存临时值然后清除,移动到history表中,也看不到具体问题在哪。我也不能有线上权限,让同事查我看,大约知道在4000多M的时候出现负的,差不多应该上限是4g。然后判断 new-old<0,就new+4096-old,然后没出现负值了。

Continue

早就想实现这么个功能,大部分不确定删除的时候,我都直接先移动到我用户的tmp目录下,这个目录我都放一些可删可不删的测试文件等。确定的我就直接删除。但是还有失误啥的,根本不可能预防所有情况。今天搜索一文章,正好实现。原理就是用一个新命令替换系统的rm命令。 原文http://www.webupd8.org/2010/02/make-rm-move-files-to-trash-instead-of.html。 1.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

Continue

出现这个问题“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使配置生效。问题解决。

Continue

我要把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

Continue

同事写在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

Continue

发现现在越来越懒,很多小问题都不再记录。要改正 1.生成一个新key

ssh-keygen
2.添加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

Continue

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。  

Continue

昨天在群里聊天的时候,有一段时间没看聊天记录,只看到他们在讨论不知道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) 的权限。

Continue

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了,昨天忘记记录了。

Continue

安装命令: 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,控制用户访问上级目录。

Continue