Sunday, September 27, 2009

Linux:Quickstart

Quickstart
In order to get the most out of this guide, we will immediately start with a practical chapter on
connecting to the Linux system and doing some basic things.
We will discuss:
¨ Connecting to the system
¨ Disconnecting from the system
¨ Text and graphic mode
¨ Changing your password
¨ Navigating through the file system
¨ Determining file type
¨ Looking at text files
¨ Finding help
2.1. Logging in, activating the user interface and logging
out
2.1.1. Introduction
In order to work on a Linux system directly, you will need to provide a user name and password. You always
need to authenticate to the system. As we already mentioned in the exercise from Chapter 1, most PC-based
Linux systems have two basic modes for a system to run in: either quick and sober in text console mode,
which looks like DOS with mouse, multitasking and multi-user features, or in graphical mode, which looks
better but eats more system resources.
2.1.2. Graphical mode
This is the default nowadays on most desktop computers. You know you will connect to the system using
graphical mode when you are first asked for your user name, and then, in a new window, to type your
password.
To log in, make sure the mouse pointer is in the login window, provide your user name and password to the
system and click OK or press Enter.
Careful with that root account!
It is generally considered a bad idea to connect (graphically) using the root user name, the system
adminstrator's account, since the use of graphics includes running a lot of extra programs, in root's case
with a lot of extra permissions. To keep all risks as low as possible, use a normal user account to connect
graphically. But there are enough risks to keep this in mind as a general advice, for all use of the root
account: only log in as root when extra privileges are required.
After entering your user name/password combination, it can take a little while before the graphical
environment is started, depending on the CPU speed of your computer, on the software you use and on your
personal settings.
Chapter 2. Quickstart 18
To continue, you will need to open a terminal window or xterm for short (X being the name for the underlying
software supporting the graphical environment). This program can be found in the Applications->Utilities,
System Tools or Internet menu, depending on what window manager you are using. There might be icons that
you can use as a shortcut to get an xterm window as well, and clicking the right mouse button on the desktop
background will usually present you with a menu containing a terminal window application.
While browsing the menus, you will notice that a lot of things can be done without entering commands via the
keyboard. For most users, the good old point-'n'-click method of dealing with the computer will do. But this
guide is for future network and system administrators, who will need to meddle with the heart of the system.
They need a stronger tool than a mouse to handle all the tasks they will face. This tool is the shell, and when
in graphical mode, we activate our shell by opening a terminal window.
The terminal window is your control panel for the system. Almost everything that follows is done using this
simple but powerful text tool. A terminal window should always show a command prompt when you open
one. This terminal shows a standard prompt, which displays the user's login name, and the current working
directory, represented by the twiddle (~):
Figure 2-1. Terminal window
Another common form for a prompt is this one:
[user@host dir]
In the above example, user will be your login name, hosts the name of the machine you are working on, and
dir an indication of your current location in the file system.
Later we will discuss prompts and their behavior in detail. For now, it suffices to know that prompts can
display all kinds of information, but that they are not part of the commands you are giving to your system.
To disconnect from the system in graphical mode, you need to close all terminal windows and other
applications. After that, hit the logout icon or find Log Out in the menu. Closing everything is not really
necessary, and the system can do this for you, but session management might put all currently open
applications back on your screen when you connect again, which takes longer and is not always the desired
effect. However, this behavior is configurable.
When you see the login screen again, asking to enter user name and password, logout was successful.
Gnome or KDE?
Introduction to Linux
Chapter 2. Quickstart 19
We mentioned both the Gnome and KDE desktops already a couple of times. These are the two most
popular ways of managing your desktop, although there are many, many others. Whatever desktop you
chose to work with is fine - as long as you know how to open a terminal window. However, we will
continue to refer to both Gnome and KDE for the most popular ways of achieving certain tasks.
2.1.3. Text mode
You know you're in text mode when the whole screen is black, showing (in most cases white) characters. A
text mode login screen typically shows some information about the machine you are working on, the name of
the machine and a prompt waiting for you to log in:
RedHat Linux Release 8.0 (Psyche)
blast login: _
The login is different from a graphical login, in that you have to hit the Enter key after providing your user
name, because there are no buttons on the screen that you can click with the mouse. Then you should type
your password, followed by another Enter. You won't see any indication that you are entering something, not
even an asterisk, and you won't see the cursor move. But this is normal on Linux and is done for security
reasons.
When the system has accepted you as a valid user, you may get some more information, called the message of
the day, which can be anything. Additionally, it is popular on UNIX systems to display a fortune cookie,
which contains some general wise or unwise (this is up to you) thoughts. After that, you will be given a shell,
indicated with the same prompt that you would get in graphical mode.
Don't log in as root
Also in text mode: log in as root only to do setup and configuration that absolutely requires administrator
privileges, such as adding users, installing software packages, and performing network and other system
configuration. Once you are finished, immediately leave the special account and resume your work as a
non-privileged user. Alternatively, some systems, like Ubuntu, force you to use sudo, so that you do not
need direct access to the administrative account.
Logging out is done by entering the logout command, followed by Enter. You are successfully disconnected
from the system when you see the login screen again.
The power button
While Linux was not meant to be shut off without application of the proper procedures for halting
the system, hitting the power button is equivalent to starting those procedures on newer systems.
However, powering off an old system without going through the halting process might cause
severe damage! If you want to be sure, always use the Shut down option when you log out from
the graphical interface, or, when on the login screen (where you have to give your user name and
password) look around for a shutdown button.
Now that we know how to connect to and disconnect from the system, we're ready for our first commands.
Introduction to Linux
Chapter 2. Quickstart 20
2.2. Absolute basics
2.2.1. The commands
These are the quickies, which we need to get started; we will discuss them later in more detail.
Table 2-1. Quickstart commands
Command Meaning
ls Displays a list of files in the current working directory, like the dir command in
DOS
cd directory change directories
passwd change the password for the current user
file filename display file type of file with name filename
cat textfile throws content of textfile on the screen
pwd display present working directory
exit or logout leave this session
man command read man pages on command
info command read Info pages on command
apropos string search the whatis database for strings
2.2.2. General remarks
You type these commands after the prompt, in a terminal window in graphical mode or in text mode, followed
by Enter.
Commands can be issued by themselves, such as ls. A command behaves different when you specify an
option, usually preceded with a dash (-), as in ls -a. The same option character may have a different meaning
for another command. GNU programs take long options, preceded by two dashes (--), like ls --all. Some
commands have no options.
The argument(s) to a command are specifications for the object(s) on which you want the command to take
effect. An example is ls /etc, where the directory /etc is the argument to the ls command. This indicates
that you want to see the content of that directory, instead of the default, which would be the content of the
current directory, obtained by just typing ls followed by Enter. Some commands require arguments,
sometimes arguments are optional.
You can find out whether a command takes options and arguments, and which ones are valid, by checking the
online help for that command, see Section 2.3.
In Linux, like in UNIX, directories are separated using forward slashes, like the ones used in web addresses
(URLs). We will discuss directory structure in-depth later.
The symbols . and .. have special meaning when directories are concerned. We will try to find out about those
during the exercises, and more in the next chapter.
Introduction to Linux
Chapter 2. Quickstart 21
Try to avoid logging in with or using the system administrator's account, root. Besides doing your normal
work, most tasks, including checking the system, collecting information etc., can be executed using a normal
user account with no special permissions at all. If needed, for instance when creating a new user or installing
new software, the preferred way of obtaining root access is by switching user IDs, see Section 3.2.1 for an
example.
Almost all commands in this book can be executed without system administrator privileges. In most cases,
when issuing a command or starting a program as a non-privileged user, the system will warn you or prompt
you for the root password when root access is required. Once you're done, leave the application or session that
gives you root privileges immediately.
Reading documentation should become your second nature. Especially in the beginning, it is important to read
system documentation, manuals for basic commands, HOWTOs and so on. Since the amount of
documentation is so enormous, it is impossible to include all related documentation. This book will try to
guide you to the most appropriate documentation on every subject discussed, in order to stimulate the habit of
reading the man pages.
2.2.3. Using Bash features
Several special key combinations allow you to do things easier and faster with the GNU shell, Bash, which is
the default on almost any Linux system, see Section 3.2.3.2. Below is a list of the most commonly used
features; you are strongly suggested to make a habit out of using them, so as to get the most out of your Linux
experience from the very beginning.
Table 2-2. Key combinations in Bash
Key or key combination Function
Ctrl+A Move cursor to the beginning of the command line.
Ctrl+C End a running program and return the prompt, see Chapter 4.
Ctrl+D Log out of the current shell session, equal to typing exit or logout.
Ctrl+E Move cursor to the end of the command line.
Ctrl+H Generate backspace character.
Ctrl+L Clear this terminal.
Ctrl+R Search command history, see Section 3.3.3.4.
Ctrl+Z Suspend a program, see Chapter 4.
ArrowLeft and
ArrowRight
Move the cursor one place to the left or right on the command line, so that you can
insert characters at other places than just at the beginning and the end.
ArrowUp and
ArrowDown
Browse history. Go to the line that you want to repeat, edit details if necessary,
and press Enter to save time.
Shift+PageUp and
Shift+PageDown Browse terminal buffer (to see text that has "scrolled off" the screen).
Tab
Command or filename completion; when multiple choices are possible, the system
will either signal with an audio or visual bell, or, if too many choices are possible,
ask you if you want to see them all.
Tab Tab Shows file or command completion possibilities.
Introduction to Linux
Chapter 2. Quickstart 22
The last two items in the above table may need some extra explanations. For instance, if you want to change
into the directory directory_with_a_very_long_name, you are not going to type that very long
name, no. You just type on the command line cd dir, then you press Tab and the shell completes the name for
you, if no other files are starting with the same three characters. Of course, if there are no other items starting
with "d", then you might just as wel type cd d and then Tab. If more than one file starts with the same
characters, the shell will signal this to you, upon which you can hit Tab twice with short interval, and the shell
presents the choices you have:
your_prompt> cd st
starthere stuff stuffit
In the above example, if you type "a" after the first two characters and hit Tab again, no other possibilities are
left, and the shell completes the directory name, without you having to type the string "rthere":
your_prompt> cd starthere
Of course, you'll still have to hit Enter to accept this choice.
In the same example, if you type "u", and then hit Tab, the shell will add the "ff" for you, but then it protests
again, because multiple choices are possible. If you type Tab Tab again, you'll see the choices; if you type
one or more characters that make the choice unambiguous to the system, and Tab again, or Enter when
you've reach the end of the file name that you want to choose, the shell completes the file name and changes
you into that directory - if indeed it is a directory name.
This works for all file names that are arguments to commands.
The same goes for command name completion. Typing ls and then hitting the Tab key twice, lists all the
commands in your PATH (see Section 3.2.1) that start with these two characters:
your_prompt> ls
ls lsdev lspci lsraid lsw
lsattr lsmod lspgpot lss16toppm
lsb_release lsof lspnp lsusb
2.3. Getting help
2.3.1. Be warned
GNU/Linux is all about becoming more self-reliant. And as usual with this system, there are several ways to
achieve the goal. A common way of getting help is finding someone who knows, and however patient and
peace-loving the Linux-using community will be, almost everybody will expect you to have tried one or more
of the methods in this section before asking them, and the ways in which this viewpoint is expressed may be
rather harsh if you prove not to have followed this basic rule.
2.3.2. The man pages
A lot of beginning users fear the man (manual) pages, because they are an overwhelming source of
documentation. They are, however, very structured, as you will see from the example below on: man man.
Reading man pages is usually done in a terminal window when in graphical mode, or just in text mode if you
prefer it. Type the command like this at the prompt, followed by Enter:
Introduction to Linux
Chapter 2. Quickstart 23
yourname@yourcomp ~> man man
The documentation for man will be displayed on your screen after you press Enter:
man(1) man(1)
NAME
man - format and display the on-line manual pages
manpath - determine user's search path for man pages
SYNOPSIS
man [-acdfFhkKtwW] [--path] [-m system] [-p string] [-C config_file]
[-M pathlist] [-P pager] [-S section_list] [section] name ...
DESCRIPTION
man formats and displays the on-line manual pages. If you specify
section, man only looks in that section of the manual.
name is normally the name of the manual page, which is typically the
name of a command, function, or file. However, if name contains a
slash (/) then man interprets it as a file specification, so that you
can do man ./foo.5 or even man /cd/foo/bar.1.gz.
See below for a description of where man looks for the manual
page files.
OPTIONS
-C config_file
lines 1-27
Browse to the next page using the space bar. You can go back to the previous page using the b-key. When you
reach the end, man will usually quit and you get the prompt back. Type q if you want to leave the man page
before reaching the end, or if the viewer does not quit automatically at the end of the page.
Pagers
The available key combinations for manipulating the man pages depend on the pager used in your
distribution. Most distributions use less to view the man pages and to scroll around. See Section 3.3.4.2
for more info on pagers.
Each man page usually contains a couple of standard sections, as we can see from the man man example:
The first line contains the name of the command you are reading about, and the id of the section in
which this man page is located. The man pages are ordered in chapters. Commands are likely to have
multiple man pages, for example the man page from the user section, the man page from the system
admin section, and the man page from the programmer section.
·
The name of the command and a short description are given, which is used for building an index of
the man pages. You can look for any given search string in this index using the apropos command.
·
The synopsis of the command provides a technical notation of all the options and/or arguments this
command can take. You can think of an option as a way of executing the command. The argument is
what you execute it on. Some commands have no options or no arguments. Optional options and
arguments are put in between "[" and "]" to indicate that they can be left out.
·
· A longer description of the command is given.
Options with their descriptions are listed. Options can usually be combined. If not so, this section will
tell you about it.
·
Environment describes the shell variables that influence the behavior of this command (not all
commands have this).
·
Introduction to Linux
Chapter 2. Quickstart 24
· Sometimes sections specific to this command are provided.
A reference to other man pages is given in the "SEE ALSO" section. In between parentheses is the
number of the man page section in which to find this command. Experienced users often switch to the
"SEE ALSO" part using the / command followed by the search string SEE and press Enter.
·
Usually there is also information about known bugs (anomalies) and where to report new bugs you
may find.
·
· There might also be author and copyright information.
Some commands have multiple man pages. For instance, the passwd command has a man page in section 1
and another in section 5. By default, the man page with the lowest number is shown. If you want to see
another section than the default, specify it after the man command:
man 5 passwd
If you want to see all man pages about a command, one after the other, use the -a to man:
man -a passwd
This way, when you reach the end of the first man page and press SPACE again, the man page from the next
section will be displayed.
2.3.3. More info
2.3.3.1. The Info pages
In addition to the man pages, you can read the Info pages about a command, using the info command. These
usually contain more recent information and are somewhat easier to use. The man pages for some commands
refer to the Info pages.
Get started by typing info info in a terminal window:
File: info.info, Node: Top, Next: Getting Started, Up: (dir)
Info: An Introduction
*********************
Info is a program, which you are using now, for reading
documentation of computer programs. The GNU Project distributes most
of its on-line manuals in the Info format, so you need a program called
"Info reader" to read the manuals. One of such programs you are using
now.
If you are new to Info and want to learn how to use it, type the
command `h' now. It brings you to a programmed instruction sequence.
To learn advanced Info commands, type `n' twice. This brings you to
`Info for Experts', skipping over the `Getting Started' chapter.
* Menu:
* Getting Started:: Getting started using an Info reader.
* Advanced Info:: Advanced commands within Info.
* Creating an Info File:: How to make your own Info file.
--zz-Info: (info.info.gz)Top, 24 lines --Top-------------------------------
Welcome to Info version 4.2. Type C-h for help, m for menu item.
Introduction to Linux
Chapter 2. Quickstart 25
Use the arrow keys to browse through the text and move the cursor on a line starting with an asterisk,
containing the keyword about which you want info, then hit Enter. Use the P and N keys to go to the previous
or next subject. The space bar will move you one page further, no matter whether this starts a new subject or
an Info page for another command. Use Q to quit. The info program has more information.
2.3.3.2. The whatis and apropos commands
A short index of explanations for commands is available using the whatis command, like in the examples
below:
[your_prompt] whatis ls
ls (1) - list directory contents
This displays short information about a command, and the first section in the collection of man pages that
contains an appropriate page.
If you don't know where to get started and which man page to read, apropos gives more information. Say that
you don't know how to start a browser, then you could enter the following command:
another prompt> apropos browser
Galeon [galeon](1) - gecko-based GNOME web browser
lynx (1) - a general purpose distributed information browser
for the World Wide Web
ncftp (1) - Browser program for the File Transfer Protocol
opera (1) - a graphical web browser
pilot (1) - simple file system browser in the style of the
Pine Composer
pinfo (1) - curses based lynx-style info browser
pinfo [pman] (1) - curses based lynx-style info browser
viewres (1x) - graphical class browser for Xt
After pressing Enter you will see that a lot of browser related stuff is on your machine: not only web
browsers, but also file and FTP browsers, and browsers for documentation. If you have development packages
installed, you may also have the accompanying man pages dealing with writing programs having to do with
browsers. Generally, a command with a man page in section one, so one marked with "(1)", is suitable for
trying out as a user. The user who issued the above apropos might consequently try to start the commands
galeon, lynx or opera, since these clearly have to do with browsing the world wide web.
2.3.3.3. The --help option
Most GNU commands support the --help, which gives a short explanation about how to use the command
and a list of available options. Below is the output of this option with the cat command:
userprompt@host: cat --help
Usage: cat [OPTION] [FILE]...
Concatenate FILE(s), or standard input, to standard output.
-A, --show-all equivalent to -vET
-b, --number-nonblank number nonblank output lines
-e equivalent to -vE
-E, --show-ends display $ at end of each line
-n, --number number all output lines
-s, --squeeze-blank never more than one single blank line
-t equivalent to -vT
-T, --show-tabs display TAB characters as ^I
-u (ignored)
-v, --show-nonprinting use ^ and M- notation,
Introduction to Linux
Chapter 2. Quickstart 26
except for LFD and TAB
--help display this help and exit
--version output version information and exit
With no FILE, or when FILE is -, read standard input.
Report bugs to .
2.3.3.4. Graphical help
Don't despair if you prefer a graphical user interface. Konqueror, the default KDE file manager, provides
painless and colourful access to the man and Info pages. You may want to try "info:info" in the Location
address bar, and you will get a browsable Info page about the info command. Similarly, "man:ls" will present
you with the man page for the ls command. You even get command name completion: you will see the man
pages for all the commands starting with "ls" in a scroll-down menu. Entering "info:/dir" in the address
location toolbar displays all the Info pages, arranged in utility categories. Excellent Help content, including
the Konqueror Handbook. Start up from the menu or by typing the command konqueror in a terminal
window, followed by Enter; see the screenshot below.
Figure 2-2. Konqueror as help browser
Introduction to Linux
Chapter 2. Quickstart 27
The Gnome Help Browser is very user friendly as well. You can start it selecting Applications->Help from the
Gnome menu, by clicking the lifeguard icon on your desktop or by entering the command gnome-help in a
terminal window. The system documentation and man pages are easily browsable with a plain interface.
The nautilus file manager provides a searchable index of the man and Info pages, they are easily browsable
and interlinked. Nautilus is started from the command line, or clicking your home directory icon, or from the
Gnome menu.
The big advantage of GUIs for system documentation is that all information is completely interlinked, so you
can click through in the "SEE ALSO" sections and wherever links to other man pages appear, and thus browse
and acquire knowledge without interruption for hours at the time.
2.3.3.5. Exceptions
Some commands don't have separate documentation, because they are part of another command. cd, exit,
logout and pwd are such exceptions. They are part of your shell program and are called shell built-in
commands. For information about these, refer to the man or info page of your shell. Most beginning Linux
users have a Bash shell. See Section 3.2.3.2 for more about shells.
If you have been changing your original system configuration, it might also be possible that man pages are
still there, but not visible because your shell environment has changed. In that case, you will need to check the
MANPATH variable. How to do this is explained in Section 7.2.1.2.
Some programs or packages only have a set of instructions or references in the directory /usr/share/doc.
See Section 3.3.4 to display.
In the worst case, you may have removed the documentation from your system by accident (hopefully by
accident, because it is a very bad idea to do this on purpose). In that case, first try to make sure that there is
really nothing appropriate left using a search tool, read on in Section 3.3.3. If so, you may have to re-install
the package that contains the command to which the documentation applied, see Section 7.5.
2.4. Summary
Linux traditionally operates in text mode or in graphical mode. Since CPU power and RAM are not the cost
anymore these days, every Linux user can afford to work in graphical mode and will usually do so. This does
not mean that you don't have to know about text mode: we will work in the text environment throughout this
course, using a terminal window.
Linux encourages its users to acquire knowledge and to become independent. Inevitably, you will have to read
a lot of documentation to achieve that goal; that is why, as you will notice, we refer to extra documentation for
almost every command, tool and problem listed in this book. The more docs you read, the easier it will
become and the faster you will leaf through manuals. Make reading documentation a habit as soon as possible.
When you don't know the answer to a problem, refering to the documentation should become a second nature.
We already learned some commands:
Table 2-3. New commands in chapter 2: Basics
Command Meaning
Introduction to Linux
Chapter 2. Quickstart 28
apropos Search information about a command or subject.
cat Show content of one or more files.
cd Change into another directory.
exit Leave a shell session.
file Get information about the content of a file.
info Read Info pages about a command.
logout Leave a shell session.
ls List directory content.
man Read manual pages of a command.
passwd Change your password.
pwd Display the current working directory.
2.5. Exercises
Most of what we learn is by making mistakes and by seeing how things can go wrong. These exercises are
made to get you to read some error messages. The order in which you do these exercises is important.
Don't forget to use the Bash features on the command line: try to do the exercises typing as few characters as
possible!
2.5.1. Connecting and disconnecting
Determine whether you are working in text or in graphical mode.
I am working in text/graphical mode. (cross out what's not applicable)
·
· Log in with the user name and password you made for yourself during the installation.
· Log out.
Log in again, using a non-existent user name
-> What happens?
·
2.5.2. Passwords
Log in again with your user name and password.
Change your password into P6p3.aa! and hit the Enter key.
-> What happens?
·
Try again, this time enter a password that is ridiculously easy, like 123 or aaa.
-> What happens?
·
Try again, this time don't enter a password but just hit the Enter key.
-> What happens?
·
Try the command psswd instead of passwd
-> What happens?
·
Introduction to Linux
Chapter 2. Quickstart 29
New password
Unless you change your password back again to what it was before this exercise, it will be "P6p3.aa!".
Change your password after this exercise!
Note that some systems might not allow to recycle passwords, i.e. restore the original one within a
certain amount of time or a certain amount of password changes, or both.
2.5.3. Directories
These are some exercises to help you get the feel.
Enter the command cd blah
-> What happens?
·
Enter the command cd ..
Mind the space between "cd" and ".."! Use the pwd command.
-> What happens?
·
List the directory contents with the ls command.
-> What do you see?
-> What do you think these are?
-> Check using the pwd command.
·
Enter the cd command.
-> What happens?
·
Repeat step 2 two times.
-> What happens?
·
· Display the content of this directory.
Try the command cd root
-> What happens?
-> To which directories do you have access?
·
Repeat step 4.
Do you know another possibility to get where you are now?
·
2.5.4. Files
Change directory to / and then to etc. Type ls; if the output is longer than your screen, make the
window longer, or try Shift+PageUp and Shift+PageDown.
The file inittab contains the answer to the first question in this list. Try the file command on it.
·
Introduction to Linux
Chapter 2. Quickstart 30
-> The file type of my inittab is .....
Use the command cat inittab and read the file.
-> What is the default mode of your computer?
·
Return · to your home directory using the cd command.
Enter the command file .
-> Does this help to find the meaning of "."?
·
· Can you look at "." using the cat command?
Display help for the cat program, using the --help option. Use the option for numbering of output
lines to count how many users are listed in the file /etc/passwd.
·
2.5.5. Getting help
· Read man intro
· Read man ls
· Read info passwd
· Enter the apropos pwd command.
Try man or info on cd.
-> How would you find out more about cd?
·
· Read ls --help and try it out.
Introduction to Linux
Chapter 2. Quickstart 31
Chapter 3. About files and the file system
After the initial exploration in Chapter 2, we are ready to discuss the files and directories on a
Linux system in more detail. Many users have difficulties with Linux because they lack an
overview of what kind of data is kept in which locations. We will try to shine some light on
the organization of files in the file system.
We will also list the most important files and directories and use different methods of viewing
the content of those files, and learn how files and directories can be created, moved and
deleted.
After completion of the exercises in this chapter, you will be able to:
¨ Describe the layout of a Linux file system
¨ Display and set paths
¨ Describe the most important files, including kernel and shell
¨ Find lost and hidden files
¨ Create, move and delete files and directories
¨ Display contents of files
¨ Understand and use different link types
¨ Find out about file properties and change file permissions
3.1. General overview of the Linux file system
3.1.1. Files
3.1.1.1. General
A simple description of the UNIX system, also applicable to Linux, is this:
"On a UNIX system, everything is a file; if something is not a file, it is a process."
This statement is true because there are special files that are more than just files (named pipes and sockets, for
instance), but to keep things simple, saying that everything is a file is an acceptable generalization. A Linux
system, just like UNIX, makes no difference between a file and a directory, since a directory is just a file
containing names of other files. Programs, services, texts, images, and so forth, are all files. Input and output
devices, and generally all devices, are considered to be files, according to the system.
In order to manage all those files in an orderly fashion, man likes to think of them in an ordered tree-like
structure on the hard disk, as we know from MS-DOS (Disk Operating System) for instance. The large
branches contain more branches, and the branches at the end contain the tree's leaves or normal files. For now
we will use this image of the tree, but we will find out later why this is not a fully accurate image.
3.1.1.2. Sorts of files
Most files are just files, called regular files; they contain normal data, for example text files, executable files
or programs, input for or output from a program and so on.
Chapter 3. About files and the file system 32
While it is reasonably safe to suppose that everything you encounter on a Linux system is a file, there are
some exceptions.
· Directories: files that are lists of other files.
Special files: the mechanism used for input and output. Most special files are in /dev, we will
discuss them later.
·
Links: a system to make a file or directory visible in multiple parts of the system's file tree. We will
talk about links in detail.
·
(Domain) sockets: a special file type, similar to TCP/IP sockets, providing inter-process networking
protected by the file system's access control.
·
Named pipes: act more or less like sockets and form a way for processes to communicate with each
other, without using network socket semantics.
·
The -l option to ls displays the file type, using the first character of each input line:
jaime:~/Documents> ls -l
total 80
-rw-rw-r-- 1 jaime jaime 31744 Feb 21 17:56 intro Linux.doc
-rw-rw-r-- 1 jaime jaime 41472 Feb 21 17:56 Linux.doc
drwxrwxr-x 2 jaime jaime 4096 Feb 25 11:50 course
This table gives an overview of the characters determining the file type:
Table 3-1. File types in a long list
Symbol Meaning
- Regular file
d Directory
l Link
c Special file
s Socket
p Named pipe
b Block device
In order not to always have to perform a long listing for seeing the file type, a lot of systems by default don't
issue just ls, but ls -F, which suffixes file names with one of the characters "/=*|@" to indicate the file type.
To make it extra easy on the beginning user, both the -F and --color options are usually combined, see
Section 3.3.1.1. We will use ls -F throughout this document for better readability.
As a user, you only need to deal directly with plain files, executable files, directories and links. The special
file types are there for making your system do what you demand from it and are dealt with by system
administrators and programmers.
Now, before we look at the important files and directories, we need to know more about partitions.
3.1.2. About partitioning
Introduction to Linux
Chapter 3. About files and the file system 33
3.1.2.1. Why partition?
Most people have a vague knowledge of what partitions are, since every operating system has the ability to
create or remove them. It may seem strange that Linux uses more than one partition on the same disk, even
when using the standard installation procedure, so some explanation is called for.
One of the goals of having different partitions is to achieve higher data security in case of disaster. By
dividing the hard disk in partitions, data can be grouped and separated. When an accident occurs, only the data
in the partition that got the hit will be damaged, while the data on the other partitions will most likely survive.
This principle dates from the days when Linux didn't have journaled file systems and power failures might
have lead to disaster. The use of partitions remains for security and robustness reasons, so a breach on one
part of the system doesn't automatically mean that the whole computer is in danger. This is currently the most
important reason for partitioning. A simple example: a user creates a script, a program or a web application
that starts filling up the disk. If the disk contains only one big partition, the entire system will stop functioning
if the disk is full. If the user stores the data on a separate partition, then only that (data) partition will be
affected, while the system partitions and possible other data partitions keep functioning.
Mind that having a journaled file system only provides data security in case of power failure and sudden
disconnection of storage devices. This does not protect your data against bad blocks and logical errors in the
file system. In those cases, you should use a RAID (Redundant Array of Inexpensive Disks) solution.
3.1.2.2. Partition layout and types
There are two kinds of major partitions on a Linux system:
data partition: normal Linux system data, including the root partition containing all the data to start
up and run the system; and
·
· swap partition: expansion of the computer's physical memory, extra memory on hard disk.
Most systems contain a root partition, one or more data partitions and one or more swap partitions. Systems in
mixed environments may contain partitions for other system data, such as a partition with a FAT or VFAT file
system for MS Windows data.
Most Linux systems use fdisk at installation time to set the partition type. As you may have noticed during the
exercise from Chapter 1, this usually happens automatically. On some occasions, however, you may not be so
lucky. In such cases, you will need to select the partition type manually and even manually do the actual
partitioning. The standard Linux partitions have number 82 for swap and 83 for data, which can be journaled
(ext3) or normal (ext2, on older systems). The fdisk utility has built-in help, should you forget these values.
Apart from these two, Linux supports a variety of other file system types, such as the relatively new Reiser
file system, JFS, NFS, FATxx and many other file systems natively available on other (proprietary) operating
systems.
The standard root partition (indicated with a single forward slash, /) is about 100-500 MB, and contains the
system configuration files, most basic commands and server programs, system libraries, some temporary
space and the home directory of the administrative user. A standard installation requires about 250 MB for the
root partition.
Swap space (indicated with swap) is only accessible for the system itself, and is hidden from view during
normal operation. Swap is the system that ensures, like on normal UNIX systems, that you can keep on
Introduction to Linux
Chapter 3. About files and the file system 34
working, whatever happens. On Linux, you will virtually never see irritating messages like Out of memory,
please close some applications first and try again, because of this extra memory. The swap or virtual memory
procedure has long been adopted by operating systems outside the UNIX world by now.
Using memory on a hard disk is naturally slower than using the real memory chips of a computer, but having
this little extra is a great comfort. We will learn more about swap when we discuss processes in Chapter 4.
Linux generally counts on having twice the amount of physical memory in the form of swap space on the hard
disk. When installing a system, you have to know how you are going to do this. An example on a system with
512 MB of RAM:
· 1st possibility: one swap partition of 1 GB
· 2nd possibility: two swap partitions of 512 MB
· 3rd possibility: with two hard disks: 1 partition of 512 MB on each disk.
The last option will give the best results when a lot of I/O is to be expected.
Read the software documentation for specific guidelines. Some applications, such as databases, might require
more swap space. Others, such as some handheld systems, might not have any swap at all by lack of a hard
disk. Swap space may also depend on your kernel version.
The kernel is on a separate partition as well in many distributions, because it is the most important file of your
system. If this is the case, you will find that you also have a /boot partition, holding your kernel(s) and
accompanying data files.
The rest of the hard disk(s) is generally divided in data partitions, although it may be that all of the
non-system critical data resides on one partition, for example when you perform a standard workstation
installation. When non-critical data is separated on different partitions, it usually happens following a set
pattern:
· a partition for user programs (/usr)
· a partition containing the users' personal data (/home)
· a partition to store temporary data like print- and mail-queues (/var)
· a partition for third party and extra software (/opt)
Once the partitions are made, you can only add more. Changing sizes or properties of existing partitions is
possible but not advisable.
The division of hard disks into partitions is determined by the system administrator. On larger systems, he or
she may even spread one partition over several hard disks, using the appropriate software. Most distributions
allow for standard setups optimized for workstations (average users) and for general server purposes, but also
accept customized partitions. During the installation process you can define your own partition layout using
either your distribution specific tool, which is usually a straight forward graphical interface, or fdisk, a
text-based tool for creating partitions and setting their properties.
A workstation or client installation is for use by mainly one and the same person. The selected software for
installation reflects this and the stress is on common user packages, such as nice desktop themes, development
tools, client programs for E-mail, multimedia software, web and other services. Everything is put together on
one large partition, swap space twice the amount of RAM is added and your generic workstation is complete,
providing the largest amount of disk space possible for personal use, but with the disadvantage of possible
data integrity loss during problem situations.
Introduction to Linux
Chapter 3. About files and the file system 35

No comments: