Blog Posts
Fine tuning a Linux Apache MySQL PHP (LAMP) server
Case Study
November 25, 2006 | COMMENTS

I started to write this post many weeks ago and finally publish it even if it’s not totally finish. It is just a little feedback about tuning a full LAMP server with some user traffic and services load. Important thing to notice is that all stuff in this post is NOT THE SOLUTION. You will probably have to tune little more for adapt all this to your personal server usage, server load, development & architecture. So, use those tips as a kind of inspiration instead of an "how to". Don’t forget that when you do such tuning, take care to keep a backup of your previous configuration files.

We will try to tune the following server :

  • Current OS : Debian GNU Linux Kernel 2.4.32 ipv4 + GRSEC
  • 1Go RAM DDR
  • Intel(R) Celeron(R) CPU 2.66GHz
  • SWAP 512Mo
  • 3Go on / and 226Go on /home
  • Running services are Qmail, Bind9, mrtg, Apache 2.2.2, PHP 5.1.4, MySQL 5.0.21
Continue Reading
Determine which Windows OS version is running
Shell Tips
November 24, 2006 | COMMENTS

Many DOS commands in the 32-bit versions of Windows are similar but support different parameters, different commands or using different registry key name. Thus, if you wish to write a batch file that can run on different types of machines, it may prove beneficial to determine the version of Windows on which the batch file is running. This way the batch file can execute commands appropriate to the operating system.

Continue Reading
CLI workaround for Windows XP : Doing a pause in a batch script
Shell Tips
November 7, 2006 | COMMENTS

In our list of "CLI workaround for Windows XP", a missing command is SLEEP or WAIT. For fixing this I suggest you two solution, first is simply a batch workaround using PING command, the second solution use the Windows Server 2003 Ressource Kit tools.

With PING you can produce a fixed delay by testing the loopback address. This can be really usefull if you don’t want (or if you can’t) install extra software.

# Doing an approximative pause of 60 seconds

PING -n 61>nul

Second way is to install the [Windows Server 2003 Resource Kit tools][1] from You will get a SLEEP.exe that will do all the requested stuff.

# Doing a pause of 60 seconds


Enjoy. 😉

Using bash wildcards
Shell Tips
November 4, 2006 | COMMENTS

Common way for rename a mispelled file is to use mv but many dudes will first write the curent name then the new name (ie. mv old_file new_file). Stop ! Use the wildcards ! 😃

Most used wildcard is the asterix "*" (match all characters) but other usefull wildcards exist like the question mark "?" that match for a single character. In some case, as a large directories, that’s avoid you to use a grep on your ls command and give you a more concise listing.

# Question Mark Wildcard "?"

nicolas@grimm:~$ ls

pic1.jpg pic1.txt pic2.jpg pic3.jpg pic4.jpg pic5.jpg pic-big.jpg pic.jpg pic-small.jpg pic.txt pic1.txt pic2.txt pic1.bmp
nicolas@grimm:~$ ls pic?.jpg

pic1.jpg pic2.jpg pic3.jpg pic4.jpg pic5.jpg

Other usefful wildcard will be square brackets "[]" and curly brackets "{}". First let you match a range of values, second let you define a list of values.

# Square Brackets Wildcard "[]"

nicolas@grimm:~$ ls pic[ 1-3].jpg

pic1.jpg pic2.jpg pic3.jpg

# Curly Brackets Wildcard "{}"

nicolas@grimm:~$ ls pic1.{txt,jpg,bmp}

pic1.txt pic1.jpg pic1.bmp

You can use those wildcards simultanously for a better search.

nicolas@grimm:~$ ls pic[1-3].{txt,jpg}

pic1.jpg pic1.txt pic2.jpg pic3.jpg

We have seen how to perform our ls search but you can also use those bash wildcards in any of your bash commands !

nicolas@grimm:~$ mv a_too_{short,long}_file_name_with_lot_of_ch4r4ct3r3.txt

will result in renaming the file a_too_short_file_name_with_lot_of_ch4r4ct3r3.txt to a_too_long_file*_name_with_lot_of_ch4r4ct3r3.txt*

nicolas@grimm:~$ cp pic[1-3].jpg dest

will result in copying pic1.jpg, pic2.jpg and pic3.jpg into the directory dest

Working quickly with some usefull BASH Shortcuts
Shell Tips
October 29, 2006 | COMMENTS

Last day, one of my friends was doing some stuff on its Mac OSX Term without using any shortcuts. I suggest some of them (which are POSIX, GNU or Shell keys combinations) to him and he answer me : Why don’t you post it on ?!

Those shortcuts are for Bash shell but it’s probably work with other advance shells.

Control Keys combinations (CTRL+KEY)

  1. ctrl+a : move your cursor to the beginning of the line
  2. ctrl+e : move your cursor to the end of the line
  3. ctrl+k : delete any characters from your cursor to the end of the line
  4. ctrl+u : delete any characters from your cursor to the beginning of the line
  5. ctrl+w : delete previous word
  6. ctrl+t : transpose two previous characters
  7. ctrl+y : yank/recover the last deletion
  8. ctrl+d : delete one character at the cursor position
  9. ctrl+h : delete one character before the cursor
  10. ctrl+f : move forward (or use the right arrow ! 😃
  11. ctrl+b : move backward (or use the left arrow ! 😃
  12. ctrl+r : find character sequence in history (completion mode)
  13. ctrl+g : escape from completion mode
  14. ctrl+v : Literal next (LNEXT)

NB: LNEXT interpret the next character as a string. eg : for symbolize a CR+LF* you must do the key combination ctrl+v+return, that will print ^M.*

Escape Keys combinations (ESC+KEY)

  1. esc+d : delete from the cursor position to the end of the word
  2. esc+f : move forward a word
  3. esc+b : move backward a word
  4. esc+t : transpose two adjacent words

Other common keys

  1. Use up/down arrows to move thru the bash command history
  2. Use left/right arrows to move on the current line
  3. Use tabulation key (TAB) for auto-complete a command name or a file name
  4. Use exclamation key + command name for repeat last similar command (ex. : !vi will recall the last vi command)
  • ...
  • ...