Clayton's Tech Bits

Home

Contact

Resumé / C.V.

Links

Search this site:
Custom Search

Categories:

/ (224)
  Admin/ (86)
    Apache/ (7)
      HTTPS-SSL/ (4)
    Cherokee/ (1)
    LAN/ (4)
    LVM/ (3)
    Monitoring/ (2)
      munin/ (2)
    OpenVPN/ (1)
    SSH-Proxy/ (3)
    SSH-SSL/ (6)
    backups/ (16)
      SpiderOak/ (1)
      backuppc/ (5)
      dirvish/ (1)
      misc/ (6)
      rdiff-backup/ (1)
      rsync/ (1)
      unison/ (1)
    commandLine/ (11)
    crontab/ (1)
    databases/ (8)
      MSSQL/ (2)
      MySQL/ (5)
      PostgreSQL/ (1)
    dynamicDNS/ (2)
    email/ (9)
      Dovecot/ (1)
      deliverability/ (1)
      misc/ (1)
      postfix/ (6)
    iptables/ (2)
    virtualization/ (8)
      VMware/ (1)
      virtualBox/ (7)
  Coding/ (11)
    bash/ (1)
    gdb/ (1)
    git/ (2)
    php/ (4)
    python/ (3)
      Django/ (1)
  Education/ (1)
  Hosting/ (23)
    Amazon/ (14)
      EBS/ (3)
      EC2/ (11)
    Godaddy/ (2)
    NearlyFreeSpeech/ (3)
    Rackspace/ (1)
    vpslink/ (3)
  Linux/ (20)
    Awesome/ (3)
    CPUfreq/ (1)
    Chinese/ (1)
    Debian/ (5)
      WPA/ (1)
    audio/ (1)
    encryption/ (2)
    fonts/ (1)
    misc/ (4)
    router-bridge/ (2)
  SW/ (39)
    browser/ (2)
      Chrome/ (1)
      Firefox/ (1)
    business/ (25)
      Drupal/ (8)
      KnowledgeTree/ (6)
      Redmine/ (2)
      SugarCRM/ (6)
      WebERP/ (2)
      eGroupware/ (1)
    email/ (1)
    fileSharing/ (1)
      mldonkey/ (1)
    graphics/ (2)
    research/ (2)
    website/ (6)
      blog/ (6)
        blosxom/ (3)
        rss2email/ (1)
        webgen/ (1)
  Security/ (12)
    IMchat/ (1)
    circumvention/ (2)
    e-mail/ (4)
    greatFirewall/ (1)
    hacking/ (1)
    password/ (1)
    privacy/ (1)
    skype/ (1)
  Services/ (1)
    fileSharing/ (1)
  TechWriting/ (1)
  xHW/ (13)
    Lenovo/ (1)
    Motorola_A1200/ (2)
    Thinkpad_600e/ (1)
    Thinkpad_a21m/ (3)
    Thinkpad_i1300/ (1)
    Thinkpad_x24/ (1)
    USB_audio/ (1)
    scanner/ (1)
    wirelessCards/ (2)
  xLife/ (17)
    China/ (9)
      Beijing/ (5)
        OpenSource/ (3)
    Expatriation/ (1)
    Vietnam/ (7)

Archives:

  • 2012/03
  • 2012/01
  • 2011/12
  • 2011/11
  • 2011/10
  • 2011/09
  • 2011/08
  • 2011/07
  • 2011/06
  • 2011/05
  • 2011/04
  • 2011/02
  • 2010/12
  • 2010/11
  • 2010/10
  • 2010/09
  • 2010/08
  • 2010/07
  • 2010/06
  • 2010/05
  • 2010/04
  • 2010/03
  • 2010/02
  • 2010/01
  • 2009/12
  • 2009/11
  • 2009/10
  • 2009/09
  • 2009/08
  • 2009/07
  • 2009/06
  • 2009/05
  • 2009/04
  • 2009/03
  • 2009/02
  • 2009/01
  • 2008/12
  • 2008/11
  • 2008/10
  • 2008/09
  • Subscribe XML RSS Feed

    Wed, 26 Oct 2011


    /Admin/commandLine: Find & process files & directories

    Find files ending in ".db", in and below the current directory:

    find . -name "*.db" -print | xargs /bin/ls -al
    find . -name "*.db" -print | xargs /bin/rm -f

    Files last modified more then thirty days ago, in a specified directory:

    find /home/userid/trash_* -mtime +30 -type f -exec rm -rf {} \;

    Remove empty directories:

    find /path/to/base/directory -type d -empty -delete

    Find files with a particular name:

    find . -type f -name "*unison.tmp-bad" -exec ls -alht {} \; | less

    Calculate the size of files found by "find":

    find . -type f -name "*unison.tmp-bad" -exec ls -l {} \; | awk '{ s+=$5 } END { print s }'

    posted at: 12:22 | path: /Admin/commandLine | permanent link to this entry

    Wed, 07 Sep 2011


    /Admin/commandLine: Logging to the System Log

    This is actually more of a scripting thing, but what is a bash script except a collection of command lines....

    To send a bit of text to /var/log/syslog:

    logger Hello logging world!!

    If you wish the output of a particular line in the script to be logged:

    mysql -V | logger

    will send the MySQL version to syslog. If you wish to also capture errors (STDERR) output, this will do it:

    mysql < /path/to/a/sql/script.sql 2>&1 | logger

    will send both script and error output to syslog.

    posted at: 09:55 | path: /Admin/commandLine | permanent link to this entry

    Wed, 01 Jun 2011


    /Admin/commandLine: Search and Replace with VI

    This seems to be really easy to forget:

    :%s/old-string/new-string/g

    will replace every occurance of old-string in the file with new-string. You can of course do more complicated things[1].

    [1] http://www.cyberciti.biz/faq/vi-vim-editor-search-and-replace-howto/

    posted at: 06:00 | path: /Admin/commandLine | permanent link to this entry

    Wed, 18 May 2011


    /Admin/commandLine: User Group Management

    To find out what groups a user belongs too:

    groups username

    The easiest way to add a group to a user:

    adduser username groupname

    However, this does not work on all Linux distributions (CentOS?). A more general method:

    usermod -a -G groupname username

    posted at: 02:29 | path: /Admin/commandLine | permanent link to this entry

    Sat, 07 May 2011


    /Admin/commandLine: Find What is Listening on a Port

    netstat -tulpn | grep <port#> ls -l /proc/<PID>/exe

    posted at: 04:13 | path: /Admin/commandLine | permanent link to this entry


    /Admin/commandLine: Send E-mail From the Command Line

    echo "This will go into the body of the mail." | mail -s "Hello world" you@youremail.com

    This also works well in a cron job.

    posted at: 04:08 | path: /Admin/commandLine | permanent link to this entry


    /Admin/commandLine: Search & Replace Text in multiple files and subdirectories

    perl -e "s/OLDSTRING/NEWSTRING/g;" -pi.save $(find /path/to/directory/to/be/searched -type f)
    grep -rl OLDSTRING . | xargs perl -pi~ -e 's/OLDSTRING/NEWSTRING/'

    Note that "." above seems to include hidden files. Replace "." with "*" and hidden files are not included.

    posted at: 04:07 | path: /Admin/commandLine | permanent link to this entry


    /Admin/commandLine: Search for multiple strings with egrep
    (In this case, searching a file system for multiple blocks of IP addresses.)

    nice ionice -c3 egrep -r '221\.122\.43\.(98|99|100)|221\.122\.48\.(98|99|100|101|102|103|104|105|107)|124\.205\.43\.(98|99|100|101|102|103|104|105|106|107|108|109|110)' /

    posted at: 04:04 | path: /Admin/commandLine | permanent link to this entry

    Wed, 01 Sep 2010


    /Admin/commandLine: Screen: An Easy Way to Open Multiple Terminals on a Linux Server

    I have been hearing buzz about the "screen"[1] utility for some time, and having tried it, I am now a serious devotee. Wish I had looked at it earlier....

    Screen basically gives access and control of multiple terminal sessions in one open SSH session to a server. Ie. instead of using SSH to login to a server from multiple terminals, just use one terminal and invoke "screen" once logged in.

    Screen becomes useful with only a very short list of keystrokes:

    Ctrl-a c - create a new "screen"
    Ctrl-a n - cycle to the next "screen"
    Ctrl-a p - cycle to the previous "screen"
    Ctrl-a d - detach from screen program, which continues to run in background
    Ctrl-a [ - permit scrolling through the terminal's history buffer
    Ctrl-c - exit scroll mode and return to command mode

    If you only have two or three "screens" open, that is about all you really need.

    Killer Feature #1: No More Clobbered SSH Sessions

    If you detach from screen and logout, or are forcibly detached by an interrupted SSH session, screen continues to run on the server in the background. That means, for instance, that you can allow a big file transfer to continue on the server without needing an open SSH session. Or, in the case of a network problem resulting in an interrupted SSH session, just log back into the server, and enter:

    screen -r -d

    to be returned to all your screen session, with all your open terminals, EXACTLY THE WAY YOU LEFT THEM. No more having to navigate back to where you were before. Absolutely indispensable in the crappy excuse for a network we have here in China.

    Killer Feature #2: Terminal Sharing!!

    Sharing your terminal (both input and output) is simple with screen, as long as both people can SSH into the server and su to the same user:

    First one person starts screen, then the other person su's to the same username on the server and attaches to the other screen session as follows:

    screen -x

    And now both people are looking at exactly the same screen / terminal session, and both can type into that terminal. Sometimes when the second person tries to attach, there is an error message like the following:

    Cannot open your terminal '/dev/pts/3' - please check.

    To fix, just chmod the file /dev/pts/3 to make permissions more permissive.

    [1] http://savannah.gnu.org/projects/screen

    posted at: 05:09 | path: /Admin/commandLine | permanent link to this entry

    Fri, 18 Sep 2009


    /Admin/commandLine: Copying Directories Between Machines

    When copying directories between two servers, there are two main candidates to choose from:

    scp -rp apache2/ root@server.com:/etc/

    rsync -avz -e ssh apache2 root@server.com:/etc/
    rsyncscp
    fastslow
    does well over poor networkdoes poorly
    requires rsync and ssh servers installed on both endsonly requires ssh server
    preserves sym linksdoes not
    can continue an interrupted transfermust start from scratch
    be careful to use ssh tunnel for secure tranferall transfers encrypted

    With rsync also be careful about the source specification. "apache2" will create an apache2 directory in the destination /etc/. But "apache2/" will copy the files contained within apache2 into the destination /etc/. You want the former.

    posted at: 12:50 | path: /Admin/commandLine | permanent link to this entry

    Fri, 24 Jul 2009


    /Admin/commandLine: Difficulty Unmounting

    When unmounting a partition / device, for example

    umount /media/thumb

    One might encounter a "busy" error, which indicates some process is still using the partition in question. To perhaps find out who / what is using the partition and do something about it:

    lsof | grep '/media/thumb'

    And as a last resort, kill all process accessing the partition:

    fuser -km /media/thumb
    umount /media/thumb

    posted at: 10:07 | path: /Admin/commandLine | permanent link to this entry