Common UNIX Commands for Web Developers

Below are various examples of UNIX commands that I’ve found helpful when modifying web sites, configuration files and viewing log files on a server. Most UNIX commands have many options and parameters which I have not listed here. Instead I have given examples of practical uses. For more complete information on most command, you can refer to the online manual by typing man [command] at the UNIX prompt. Some commands you can type [command] –help or [command] -?

Note, when I specify something in brackets like so: [filename] that is to indicate that you type in a filename or whatever. Do not include the brackets in your command.

Navigating UNIX:

  • / (refers to the root directory on the server)
  • ./ (the current directory that you are in)
  • ../ (parent directory of your current directory)
  • pwd (shows what you current directory is – giving the full path)
  • ls (lists all the files in your current directory)
  • ls -al (lists filenames + information)
  • ls -alR (lists filenames + information in all subdirectories)
  • ls -alR | more (lists filenames + information in all subdirectories,
  • pausing when the screen become full)
  • ls -alR > result.txt (lists filenames + information in all subdirectories,
  • and ouputs the results to a file instead of the screen)
  • ls *.html (lists all files ending with .html)
  • ls -al /home/usr/bob/ (lists files + info for /home/usr/bob)
  • cd (changes you to a new directory)
  • cd images
  • cd / (changes you to the root directory)
  • cd /home/usr/images
  • cd .. (this goes back one directory)

Moving, Copying and Deleting Files:

  • mv [old name] [new name] (move/rename a file)
  • cp [filename] [new filename] (copy a file)
  • rm [filename] (delete a file)
  • rm * (delete all files in your current directory)
  • rm *.html (delete all files ending in .html in your current directory)

Creating, Moving, Copying and Deleting Directories:

  • mkdir [directoryname] (creates a new directory)
  • ls -d */ (lists all directories within current directory)
  • cp -r [directoryname] [new directoryname] (copy a directory and all
  • files/directories in it)
  • rmdir [directoryname] (remove a directory if it is empty)
  • rm -r [directoryname] (remove a directory and all files in it)

Searching Files and Directories

  • find / -name [filename] -print (search the whole server for a file)
  • find . -name [filename] -print (search for a file starting with the current directory)
  • find / -name [directoryname] – type d -print (search the whole server for a direcory)
  • grep [text] [filename] (search for text within a file)
  • sed s/[oldtext]/[newtext]/g [filename] (searches file and replaces all occurances of [oldtext] with [newtext]

Viewing and Editing Files:

  • tail [filename] – view the tail end of a file, useful for checking the error log when debugging a script
  • vi [filename] – opens a file using the vi text editor. you are a true geek if you use vi, however it’s fairly easy to use. (refer to the vi primer in this support forum)

Installing Software & Scripts

For downloaded ‘tar’ scripts, to un-tar and un-gz

  • tar -xvf [archive.tar] – extracts files from the tar archive ‘archive.tar’
  • tar -zxvf [archive.tar.gz] extracts files from the tar archive ‘archive.tar.gz’

Getting Server Information

  • which (displays path to an executable, ex which perl, which php)
  • whoami – displays your current username
  • uptime – displays how long the server has been up and some performance statistics

Viewing disk space

  • du (to view disk usage on server)
  • quota (to view your disk usage on server)

Viewing and Stopping Processes

  • ps – displays running processes
  • top – (may be only available to admins) similar to windows task manager
  • kill -9 [process Id] – terminiates a running process (out of control CGI, etc). The process Id can be obtained using “ps”

File and Directory Permissions

There are three levels of file permission: read, write and execute. In addition, there are three groups to which you can assign permission, The file owner, the user group, and everyone. The command chmod followed by three numbers is used to change permissons. The first number is the permission for the owner, the second for the group and the third for everyone. Here are how the levels of permission translate:

  • 0 = — (no permission)
  • 1 = –x (execute only)
  • 2 = -w- (write only)
  • 3 = -wx (write and execute)
  • 4 = r– (read only)
  • 5 = r-x (read and execute)
  • 6 = rw- (read and write)
  • 7 = rwx (read, write and execute)

I prefer that the group always have permission of 0. This prevents other users on the server from browsing files via Telnet and FTP. Here are the most common file permissions used:

  • chmod 604 [filename] (minimum permission for www HTML file)
  • chmod 705 [directoryname] (minimum permission for www directories)
  • chmod 705 [filename] (minimum permission for www scripts & programs)
  • chmod 606 [filename] (permission for datafiles used by www scripts)
  • chmod 703 [directoryname] (write-only permission for public FTP uploading)

Note that some systems use AFS filesystem and chmod does not behave as expected.You can sometimes identify AFS if the path that you are using begins like so /afs/path/to/files/ If your system uses AFS, then the following commands are used instead of chmod.

  • fs setacl [directory] [group] [access] (set file permissions)
  • fs listacl [directory] (list file permissions)

example:

fs setacl . httpd rliw (set read, lookup, insert, write to http for current dir)

Scheduling Tasks

You can schedule tasks to run automatically by using the UNIX cron command. To use this, you create a text file with cron instructions, then process this file. cron instructions are basically UNIX commands with extra info about the time that they will run.

One important thing to note is that it is best to use full paths when creating your cron file. As an example, create a file called mycronfile and in it place one line:

0 1 * * * cp /usr/www/file.txt /usr/www/backup.txt

now at the command line, type the following:

crontab mycronfile

You have just scheduled an automated task! This task will run at the time specified until you decide you want to cancel it.
There are six fields in this file. The first five represent the time that the job will run. The sixth field is a UNIX command that will run at the specified time. The above example will run every night at 1AM, at which time it will copy a file.

Here is how the fields break down:

Field 1 | Field 2 | Field 3 | Field 4 | Field 5
Minutes | Hours | Day of Month | Month | Day of Week
(0-59) | (0-23) | (1-31) | (1-12) | (0-6)

You can enter a number in the field, a range of numbers, or an * to indicate all. Here are a few more examples. These examples use the ls command, which would be pretty useless. Note the time that it runs, though.

  • 0 1 * * 1-5 ls (this would run every Monday-Friday at 1am)
  • 0 1 * * 1,3,5 ls (this would run every Monday, Wednesday and Friday at 1am)
  • 10 2 1 * * ls (this would run at 2:10am on the first of every month)
  • 0 1 1 1 * ls (this would run at 1am on January 1 every year)

If you have a more complicated command that you want to run, it is sometimes helpful to create a shell script and have that script run. You specify the shell script as you would any UNIX command. For example:

  • 0 1 * * * /usr/www/myscript

There are some other crontab switches that are useful:

  • crontab -l (lists your currently scheduled tasks)
  • crontab -r (delete all currently scheduled tasks)
  • crontab -e (directly edit your scheduled tasks)

Credits

  • Originally created by Jason Hinkle
  • Additional content provided by Dave Wojo

4 Responses to “Common UNIX Commands for Web Developers”

  1. Ben May September 28, 2006 at 4:43 pm #

    Great tips mate, very hand reference

  2. Sathiya July 7, 2008 at 2:28 am #

    Good tips.. thanks..

  3. d May 12, 2011 at 1:56 pm #

    Great site! Great tips!

    Thought I’d point out that your sed command will only output the replaced result to stdout.

    As I’m sure you know, you need to

    sed s/oldtext/nextext/g newfile

    to save the output to a file

    and then

    mv newfile oldfile

    to put you changes into the original file

    :-)

    • Jason May 13, 2011 at 5:19 pm #

      ah cool thanks – i wrote this about 15 years ago and i noticed some of it is out of date for bash!

Leave a Reply

Please leave these two fields as-is: