Linux Knowledge
Linux Knowledge
Linux is a free open-source operating system based on Unix. Linux was originally created by Linus Torvalds with the assistance of developers
from around the globe. Linux is free to download, edit and distribute. Linux is a very powerful operating system and it is gradually becoming
popular throughout the world.
Advantages of Linux
1. Low cost:
There is no need to spend time and huge amount money to obtain licenses since Linux and much of it’s software come with the GNU
General Public License. There is no need to worry about any software's that you use in Linux.
2. Stability:
Linux has high stability compared with other operating systems. There is no need to reboot the Linux system to maintain
performance levels. Rarely it freeze up or slow down. It has a continuous up-times of hundreds of days or more.
3. Performance:
Linux provides high performance on various networks. It has the ability to handle large numbers of users simultaneously.
4. Networking:
Linux provides a strong support for network functionality; client and server systems can be easily set up on any computer running
Linux. It can perform tasks like network backup more faster than other operating systems.
5. Flexibility:
Linux is very flexible. Linux can be used for high performance server applications, desktop applications, and embedded systems. You
can install only the needed components for a particular use. You can also restrict the use of specific computers.
6. Compatibility:
It runs all common Unix software packages and can process all common file formats.
7. Wider Choice:
There is a large number of Linux distributions which gives you a wider choice. Each organization develop and support different
distribution. You can pick the one you like best; the core function's are the same.
10. Multitasking:
Linux is a multitasking operating system. It can handle many things at the same time.
11. Security:
Linux is one of the most secure operating systems. File ownership and permissions make linux more secure.
Today, Linux is widely used for both basic home and office uses. It is the main operating system used for high performance business and in
web servers. Linux has made a high impact in this world.
Linux Vs Windows
Linux is an open-source Operating System. People can change codes and add programs to Linux OS which will help use your computer better.
Linux evolved as a reaction to the monopoly position of windows. you can't change any code for windows OS. You can't even see which
processes do what and build your onw extension. Linux wants the programmers to extend and redesign it's OS. Linux user's can edit its OS and
design new OS.
All flavors of Windows come from Microsoft. Linux come from different companies like LIndows , Lycoris, Red Hat, SuSe, Mandrake, Knopping,
Slackware.
Linux is customizable but Windows is not. For example,NASlite is a version of Linux that runs off a single floppy disk and converts an old
computer into a file server. This ultra small edition of Linux is capable of networking, file sharing and being a web server.
Linux is freely available for desktop or home use but Windows is expensive. For server use, Linux is cheap compared to Windows. Microsoft
allows a single copy of Windows to be used on one computer. You can run Linux on any number of computers.
Linux has hign security. You have to log on to Linux with a userid and password. You can login as root or as normal user. The root has full
previlage.
Windows must boot from a primary partition. Linux can boot from either a primary partition or a logical partition inside an extended partition.
Windows must boot from the first hard disk. Linux can boot from any hard disk in the computer.
Windows uses a hidden file for its swap file. Typically this file resides in the same partition as the OS (advanced users can opt to put the file in
another partition). Linux uses a dedicated partition for its swap file.
Windows separates directories with a back slash while Linux uses a normal forward slash.
Windows file names are not case sensitive. Linux file names are. For example "abc" and "aBC" are different files in Linux, whereas in Windows it
would refer to the same file.
Windows and Linux have different concepts for their file hierarchy. Windows uses a volume-based file hierarchy while Linux uses a unified
scheme. Windows uses letters of the alphabet to represent different devices and different hard disk partitions. eg: c: , d: , e: etc.. while in linux "
/ " is the main directory.
Linux and windows support the concept of hidden files. In linux hidden files begin with " . ", eg: .filename
In Linux each user will have a home directory and all his files will be save under it while in windows the user saves his files anywhere in the
drive. This makes difficult to have backup for his contents. In Linux its easy to have backup's.
Permission Sets
1 - Execute
2 - Write
3- Write and Execute
4- Read
5- Read and Execute
6 - Read and Write
7 - Read, Write and Execute
Try chmod 700 filename. This will give the owner of the file full permission. The Group and other's will have no permission to access the file.
Only the owner of the file can read, write or execute the file. If you want other and Group only to read the file you can give chmod 744
filename.
" / " is the root Directory in Linux. " /root " will be the home directory for the root user (administrator). root will have the full administrative
power over the system and other users. There are other directories like / home, /bin, /sbin, /lib etc. Each user will have there own home
directory
Linux operating system has a beautiful graphical interface which most of us will be using. It will be good to learn the basic commands in Linux to
work interactively with the Linux operating system. Linux has a back end access know as shell. You can control and activate all the process in
Linux from the shell. So it is very important to learn few basic commands to work with Linux operating system.
First we will learn how to login for shell access. There are 7 terminals for Linux. 6 terminals are non - GUI and 1 terminal for GUI access. You can
login to each terminal using Alt + Ctrl + F1 , F2, .. F7. Each terminals will request your username and password for login. If you want to use the
shell in the graphical interface (GUI), press Alt + F2 and type "konsole". As a user you will have permission to access only your /home/user
directory and other directories in it.
*Note: user denotes the username.
pwd
This command is used to find the current location or current working directory.
Eg:
[user@ws26 ~]$ pwd
/home/user
cd
This command id used to change the directory. You can move from one directory to another using this command. Few examples are given
below.
Concider you have a directory structure /home/user/test/test1/ . test and test1 are directories in user home.
Example 1:
Consider you have a directory "test" in /home/user. Your current working directory is /home/user. You want to change your current working
directory from /home/user to /home/user/test, use the following command
[user@ws26 ~]$ pwd
/home/user
[user@ws26 ~]$ cd test
[user@ws26 ~]$ pwd
/home/user/test
Example 2:
If you want to move back to /home/user, use the following command
[user@ws26 ~]$ cd ..
[user@ws26 ~]$ pwd
/home/user
Example 3:
To get back to the home directory of the user
[user@ws26 ~]$ cd ~
[user@ws26 ~]$ pwd
/home/user.
ls
This command is used to list all the files and directory in the current directory.
Eg:
[user@ws26 ~]$ ls
1152696870.jpg book OperaDownloads snapshot52.png
image300.jpg Desktop test spiderman2.jpg
ls -l or ll
This command is also used to list all the files and directories. Here you will get more details about the files and directories present in the
current directory. You will see the permission set, creation date, file / directory size etc.
Eg:
[user@ws26 ~]$ ls -l
total 5
-rw-rw-r-- 1 user user 33188 Dec 22 02:56 1152696870.jpg
-rw-rw-r-- 1 user user 17647 Aug 19 2006 534458.gif
-rw-rw-r-- 1 user user 26817 Aug 19 2006 534477.gif
drwxrwxr-x 2 user user 4096 Jan 13 04:20 book
drwx------ 3 user user 4096 Feb 4 02:34 Desktop
Example:
vi testfile
The command will open a new window and you can insert text to it. To begin press "i". After adding your contect press ":wq" to save the file.
All commands in Linux are equally important to manage Linux system / server.
Here I have listed some important commands that are widely used in Linux system / server administration.
Use the following option to get more process information from the " ps " commands,
root@server [~]$ ps -aux
pstree
This command is also used the check the process on the server. " pstree " command will list all the running process in the form of a tree
structure.
Example:
root@server [~]$ pstree
init─┬─agetty
├─antirelayd
├─bdflush
├─chkservd
├─4*[courierlogger───couriertcpd]
├─courierlogger───authdaemond───5*[authdaemond───authProg]
├─cpanellogd
├─cpdavd
├─cphulkd.pl
├─cpsrvd-ssl───cpsrvd-ssl
├─crond
├─entropychat
├─exim───exim─┬─3*[exim]
│ └─spamc
├─2*[exim]
├─exim───20*[exim]
├─eximstats
├─hpt_wt
├─httpd───56*[httpd]
├─interchange
├─keventd
├─7*[kjournald]
├─klogd
├─ksoftirqd_CPU0
├─ksoftirqd_CPU1
├─ksoftirqd_CPU2
├─ksoftirqd_CPU3
├─kswapd
├─kupdated
├─mailmanctl───8*[python2.4]
├─mdrecoveryd
├─6*[mingetty]
├─mysqld_safe───mysqld───mysqld───26*[mysqld]
├─named───named───6*[named]
├─portsentry
├─pure-authd
├─pure-ftpd
├─10*[python2.4]
├─scsi_eh_0
├─spamd───2*[spamd]
├─ssh
├─sshd─┬─sshd───sshd───bash───su───bash
│ └─sshd───sshd───bash───su───bash───pstree
├─syslogd
└─xinetd
Also try the following options for " pstree ".
root@server [~]$ pstree -p
init(1)─┬─agetty(7480)
├─antirelayd(8658)
├─bdflush(8)
├─chkservd(6224)
├─courierlogger(6833)───couriertcpd(6834)
├─courierlogger(6840)───couriertcpd(6841)
├─courierlogger(6846)───couriertcpd(6847)
├─courierlogger(6852)───couriertcpd(6853)
├─courierlogger(6858)───authdaemond(6859)─┬─authdaemond(6873)
│ ├─authdaemond(6874)───authProg(26164)
│ ├─authdaemond(6875)───authProg(17488)
│ ├─authdaemond(6876)───authProg(8194)
│ └─authdaemond(6877)───authProg(29956)
top
This command is used to find the load on the server. " top " command can also be used to find the process and users that causes load on the
server. It gives information about the total process, sleeping process, the zombie process etc.
Example:
CPU states: cpu user nice system irq softirq iowait idle
Mem: 3104932k av, 2909432k used, 195500k free, 0k shrd, 284548k buff
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
3754 root 16 0 1252 1252 896 R 1.4 0.0 0:01 2 top -cd3
3620 nobody 9 0 61460 45M 28768 S 0.6 1.4 2:23 0 /usr/local/apache/bin/httpd -DSSL
3604 mailnull 9 0 4204 4116 2816 S 0.2 0.1 0:00 0 /usr/sbin/exim -bd -q60m
From the above example you can see the load average, total processes, sleeping processes and the CPU usage. You can find the load average
( here the load average is " 4.95 " ), the memory usage, stats, swap and the list of process and its users.
This command is also find the load and users on the server. " w " command will provide a brief description about the load, time, number of
users and the uptime of the server.
Example:
root@server [~]$ w
user1 pts/0 user - ip1 8:26am 3:13m 0.09s 0.00s sshd: user1 [priv]
user2 pts/3 user - ip2 11:09am 0.00s 0.13s 0.02s sshd: user2 [priv]
uptime
This command gives the basic information about the uptime and load of the server.
Example:
From the above example you can find the load and the number of days server running with out failure etc..
kill
This command is used to kill a running process on the server. You need to process id to execute the kill command. Consider you run " pstree -p "
which will list all the process with its respective process id. To kill a particular process use the command " kill <process-id> ".
Example:
or
This command will kill the child processes of a particular process. Consider you want kill httpd on the server.
Example:
or
or
The above command will only kill all the child process of " httpd ". Using this command the parent process will be running and all the child
process will be killed.
killall
This command is used to kill all the processes ( parent process and child process ).
Example:
This command is used to find the number of connections to the server. " netstat " command will list all the connections using httpd, exim, ftp
etc. You can grep the needed port and find the number of connections to a particular port. You can find the Local Address, Foreign Address,
State, port etc of all the connections.
Example:
or
mysqladmin processlist
This command is used to find the connections to the mysql database. It gives information about Id, User, Host, db, Command, Time, State and
Info of a mysql request to the server.
Example:
+--------+-----------------+-----------+-----------------------------+---------+-------+-------+
+--------+-----------------+-----------+-----------------------------+---------+-------+-------+
You can use these commands to block a particular IP from connecting to the server. This command is mainly used when you find too many
connections from a particular IP. Normally too many connection might be a attack to the server. So it is important to block such IP before it
interrupts the balance of the server.
Example:
or
TELNET (TELecommunication NETwork) is a network protocol used on the Internet. TELNET is a client-server protocol, based on a reliable
connection-oriented transport. This command will help us to find if a particular port on the server is open or not.
Example:
Trying 64.233.187.99...
nmap
This command is used to install software’s to the server without any dependences.
Example:
If you find any software’s missing on the server, you can directly install it using this yum command. It will install the particular software on the
server without dependencies.
The simplest kind of semaphores is called a binary semaphore and they have two states ( locked or unlocked ).
These act like traffic lights, which allows certain processes to exclusively access certain resources.
When a process wants exclusive access to a resource, example: shared memory, they attempt to lock the semaphore associated with that
resource. If the semaphore they are attempting to lock is already locked, the caller is suspended, otherwise they are granted to lock.
When the process completes the task, it unlock the resource and any processes that have attempted to lock that semaphore in the meantime
are woken up again to attempt the lock again. This way only one process can have access to the resource at once.