Developer Forums | About Us | Site Map
Search  
HOME > TUTORIALS > SERVER SIDE CODING > ADMINISTRATION TUTORIALS > WINDOWS TO LINUX ROADMAP: PART 1. THINKING IN LINUX


Sponsors





Useful Lists

Web Host
site hosted by netplex

Online Manuals

Windows-to-Linux roadmap: Part 1. Thinking in Linux
By Chris Walden - 2004-05-10 Page:  1 2 3 4

Linux is different from Windows

Even though there are several similarities between the technologies, there are some key differences between the style of working in Windows and working in Linux. These differences are subtle until you get used to them, but they are key concepts to thinking in Linux.

Linux is built for the network more than printing

When Windows was first built, it was mostly a paper world. One of the beautiful things about Windows was that everything you did was pretty to look at and easy to print. This beginning has affected the evolution of Windows.

In the same manner, Linux has been affected by its origins. Linux was designed from the beginning to live on the network. It was inspired by the Unix operating system, so there was a simplicity, some might say terseness, to its command design. Since plain text works well across a network, text has always been the base for Linux configuration and data.

For those accustomed to a graphical environment, a Linux server might appear primitive at first glance. But Linux development has focused for most of its life more on what was under the hood. Linux has very sophisticated networking, scripting, and security capabilities that are active even in a text-only environment. Some of the seemingly bizarre steps required to perform some tasks are inexplicable until you realize that Linux expects to perform these tasks on a network in cooperation with other Linux systems. Linux has very capable automation capabilities and can be programmed to perform very detailed tasks using nothing more than the equivalent of batch file programming. Linux's text-based nature is a large part of this capability.

Optional GUI

Linux has a graphical component. Linux is capable of working with high-end graphical adapters and displays to do some truly stunning work. In fact, many digital effects artists do their design work on Linux workstations, where they would have used IRIX systems in the past. However, the graphical environment is not integral to Linux. It is a layer on top of the running system. That means that you run the GUI only if and when you need it. If your system spends most of its time serving up Web applications, then you can turn off the overhead of the graphical interface and use that memory and CPU for your service. If you need to do work on the system in a GUI, you can turn it on for your work and turn it off when you're done.

There are graphical tools for managing Linux, as well as tools for general office work, such as e-mail, Web-browsing, and document processing. However, in Linux, the graphical administration tools are normally front ends for the console (command-line) tools. That means that anything you can do with a graphical tool, you can also do with a console command. Also, using a graphical tool doesn't prevent you from making manual changes to a configuration file. The value of this may not be immediately apparent. But think about it. If anything done from a graphical administration tool can be done with a console command, that means that those tasks can also be scripted. Scripted commands can become automated tasks. Linux provides the best of both worlds and doesn't force you to work with only text or GUI. You choose the method that's best for your task.

Configuration files in Linux are human-readable text files. This is similar to the INI file of Windows past. This is a philosophical difference from the Windows Registry approach. Configuration files are generally provided for individual applications, and they are usually kept isolated from other configurations. However, most configuration files live in a single place on the directory tree (/etc), so there is a logical single place to look. Text file configuration makes it easy to back up, examine, and edit configurations without using any special system tools.

Filename extensions

Linux does not use filename extensions to identity a file's type. Rather, Linux looks at the header contents of a file to identity the type. You can still use filename extensions for human-readability, but Linux doesn't care. That said, some applications, such as a Web server, may use naming conventions to identify file types, but that is a factor of the individual applications.

Linux uses file access rights to determine if a file is an executable. Any file can be given executable status, so programs and scripts can be identified as executable by the creator or administrator. One clear advantage to this is security. An executable file saved onto the system cannot necessarily be automatically executed, a feature that thwarts many script viruses.

What's the kernel?
Linux is actually just the kernel; it implements multitasking and multiuser functionality, manages hardware, allocates memory, and enables applications to run.

For the beginner, probably the most important thing about the kernel that you need to remember is that odd-numbered kernel versions (in other words, 2.3, 2.5, 2.7) are the experimental, development kernel. Stable, release kernels carry even numbers (in other words, 2.4, 2.6, 2.8).

Rebooting is a last resort

If you have been using Windows for a long time, you are accustomed to rebooting the system for many reasons, from software installation to correcting problems with a service. This is a habit you will need to change to start thinking in Linux. Linux tends to be rather Newtonian in nature. Once set in motion, it will tend to stay in motion until it is acted upon by an outside force, such as a hardware failure. In fact, the system design of Linux prevents applications from corrupting the kernel, which is why it doesn't need frequent reboots (in contrast to Windows system design). So except for the Linux kernel, you can install, start, stop, and reconfigure software without having to reboot the system.

If you do reboot your Linux system, it will not likely change the behavior, and can make a problem worse. Learning to work with the Linux services and run levels is key to successful troubleshooting. Of everything you will learn going into Linux, overcoming the reboot habit will probably be the hardest.

However, the good news is that this allows you to do a lot of work remotely in Linux. As long as some basic network services are running, you can probably get into the system. Also, if you are having problems with a particular service on a system, you can let the others run while you continue to troubleshoot the problem. When you are consolidating several services onto a single system, this is a critical difference.

Commands are case sensitive

All Linux commands and options are case sensitive. For example, -R is different from -r, and will do different things. Console commands are almost always lowercase. We'll cover commands in more detail in "Part 2. Console crash course."

What should I be thinking about Linux?

The transition from administering Windows to Linux is not trivial. However, as a Windows administrator, you already have many advantages. Much of your understanding of how computing works will carry over. Success as a Linux administrator will be a matter of identifying the differences and adjusting your habits.

Many of the differences between Linux and Windows are advantageous. Overhead from an idle GUI can be reclaimed for services. Tasks can be scripted and automated. Configuration files are text based and human editable. You do not have to reboot the system for most tasks. In fact, you should overcome your instinct to reboot.



View Windows-to-Linux roadmap: Part 1. Thinking in Linux Discussion

Page:  1 2 3 4 Next Page: Resources

First published by IBM developerWorks


Copyright 2004-2017 GrindingGears.com. All rights reserved.
Article copyright and all rights retained by the author.