waterye

          2008年9月28日 #

          使用rsync+ssh同步n個文件

          rsync -avz -e ssh bak@192.168.0.138:/home/res /home/res/bak

          posted @ 2009-12-29 20:24 waterye 閱讀(524) | 評論 (0)編輯 收藏

          mysql備份

          1. 使用Replication進行實時備份
          參考mysql docs
          2. 定期在slave上使用shell,mysqldump,sftp,crontab進行永久備份
          #!/bin/sh
          export d
          =`date +%Y%m%d%H%M%S`
          mkdir 
          -/data/dbbak/baktables/$d
          for i in `echo "show tables" | mysql -u bak -ppassword db|grep -v Tables`;
          do    
            echo $i; mysqldump 
          --add-drop-table --allow-keywords ----u bak -ppasswod mbook_hd $i > backup/$d/$i.sql
          done

          tar czf backup
          /$d.tar.gz backup/$d/
          rm 
          -rf backup/$d/

          lftp 
          -"cd /dbbak/; mput -c $d.tar.gz; quit" -u bak,password sftp://192.168.0.138
          參考http://ocaoimh.ie/simple-mysql-backup/
          10G級別的可以每天作一次備份,100G級別看帶寬和硬盤,T級沒有經驗

          posted @ 2009-12-29 20:17 waterye 閱讀(1062) | 評論 (0)編輯 收藏

          檢查哪些文件以\n結束

          #!/usr/bin/env python
          import string, os, sys  
             
          dir 
          = '/home/waterye/works/'  

          files 
          = os.listdir(dir)
          for f in files:
              
          if not os.path.isfile(dir+os.sep+f): continue
              linecount 
          = 0
              fp 
          = open(dir+os.sep+f,'r')
              
          for line in fp:
                  linecount 
          += 1
              fp 
          = open(dir+os.sep+f,'r')
              
          for i,line in enumerate(fp):
                  
          if (i==linecount-1 and line.endswith('\n')):
                      
          print f
                      
          print "--------------------------------"
          * bash太難理解,還是用py看上去舒服,雖然不專業,但能完成任務就行

          posted @ 2009-02-19 22:33 waterye 閱讀(920) | 評論 (0)編輯 收藏

          perl milliseconds

          "perldoc DateTime" would have told you how to format milliseconds.

            
          use DateTime;
            
          use Time::HiRes qw(time);
            
          my $dt = DateTime->from_epoch( epoch => time() );
            
          print $dt->strftime('%Y-%m-%d %H-%M-%S-%3N'), "\n";

          * sudo apt-get install libdatetime-perl

          perl真麻煩

          posted @ 2008-12-04 23:33 waterye 閱讀(1076) | 評論 (0)編輯 收藏

          memcached java client

          1. http://www.whalin.com/memcached/ v2.0.1
          2. http://code.google.com/p/spymemcached/ v2.2

          a. 使用whalin版會導致File Descriptor leak,而使用spy版則不會,原因是whalin版沒有使用selector管理socketchannel.
                 Thread.sleep(1000 * 30);
                  System.out.println(
          "begin");

                  Selector selector 
          = null;
                  SocketChannel channel 
          = null;
                  
          try {
                      String host 
          = "192.168.0.74";
                      
          int port = 11211;
                      
          int timeout = 1000 * 60;

                      selector 
          = Selector.open();
                      channel 
          = SocketChannel.open();
                      channel.configureBlocking(
          false);

                      channel.connect(
          new InetSocketAddress(host, port));
                      channel.register(selector, channel.validOps());

                      
          try {
                          selector.select();
                      } 
          catch (IOException e) {
                          e.printStackTrace();
                      }

                      Iterator it 
          = selector.selectedKeys().iterator();
                      
          int i = 0;
                      
          while (it.hasNext()) {
                          i
          ++;
                          System.out.println(i);
                          SelectionKey selKey 
          = (SelectionKey) it.next();
                          it.remove();

                          
          try {
                              processSelectionKey(selKey);
                          } 
          catch (IOException e) {
                              e.printStackTrace();
                              selKey.cancel();
                          }
                      }

                      System.out.println(
          "unclose");
                      Thread.sleep(
          1000 * 30);
                  } 
          catch (Exception e) {
                      e.printStackTrace();
                  } 
          finally {
                      
          if (channel != null && channel.isOpen()) {
                          
          try {
                              channel.close();
                          } 
          catch (Exception e) {
                              e.printStackTrace();
                          }
                      }
                      
          if (selector!=null) {
                          selector.close();      
          // not fd leak
                      }
                  }

                  System.out.println(
          "end");
                  Thread.sleep(
          1000 * 30 * 1);
          通過lsof -p pid | grep pipe可以觀察是否有fd leak.

          b. w版set 1000000 object 需要600s左右,s版只需150s左右

          posted @ 2008-10-31 19:55 waterye 閱讀(1555) | 評論 (2)編輯 收藏

          cacti-memcached

          192.168.0.74 [root avi]$ python /root/memcached/cacti-memcached-1.0/memcached.py localhost
          total_items:2002344 get_hits:3 uptime:50291 cmd_get:3 time:1224521129 bytes:58888890 curr_connections:1 connection_structures:8 bytes_written:16167008 limit_maxbytes:402653184 cmd_set:2002344 curr_items:1000000 rusage_user:101.730357 get_misses:0 rusage_system:199.092442 bytes_read:63849044 total_connections:314

          posted @ 2008-10-21 00:50 waterye 閱讀(1003) | 評論 (0)編輯 收藏

          ubuntu查看網絡流量

          1. iftop
          sudo apt-get install iftop
          sudo iftop -i ppp0
          2. slurm
          sudo apt-get install slurm
          slurm -i ppp0
          3. vnstat
          sudo apt-get install vnstat
          sudo chmod o+x /usr/bin/vnstat
          sudo chmod o+wx /var/lib/vnstat/
          vnstat -u -i ppp0
          vnstat -i ppp0
          vnstat -l -i ppp0

          因為不是server就沒有用復雜的mrtg

          posted @ 2008-10-05 22:19 waterye 閱讀(6283) | 評論 (3)編輯 收藏

          刪除最后一行\n

          vi,gedit會在最后一行加上\n,實在找不到好的解決方法,只好自己寫個shell script刪掉
          #!/usr/bin/env python
          import sys

          oldfile
          =sys.argv[1]
          newfile
          =sys.argv[2]
          print oldfile,newfile,
          print
          linecount 
          = 0
          str 
          = ''
          = open(oldfile,'r')
          for line in f:   
              linecount 
          += 1
          = open(oldfile,'r')
          for i,line in enumerate(f):
              
          if (i==linecount-1):
                  str 
          += line.replace('\n','')
          #        print line.replace('\n','')
              else:
                  str 
          += line
          #        print line,
          #
          print len(str),str
          f2 = open(newfile, 'w')
          f2.write(str)
          quit()


          posted @ 2008-09-28 19:58 waterye 閱讀(1149) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 杭锦后旗| 周口市| 调兵山市| 建始县| 莱州市| 咸阳市| 金门县| 饶平县| 霍城县| 珲春市| 安宁市| 惠水县| 鄂温| 威宁| 岐山县| 东莞市| 铜山县| 玉田县| 巍山| 当雄县| 徐闻县| 北安市| 秀山| 广汉市| 交口县| 麻江县| 祁门县| 新源县| 竹山县| 且末县| 莒南县| 府谷县| 海兴县| 沂南县| 巫山县| 定州市| 临猗县| 徐汇区| 永泰县| 大庆市| 泰和县|