Sunday, December 25, 2011

How to Schedule Tasks on Linux: An Introduction to Crontab Files


The cron daemon on Linux runs tasks in the background at specific times; it’s like the Task Scheduler on Windows. Add tasks to your system’s crontab files using the appropriate syntax and cron will automatically run them for you.
Crontab files can be used to automate backups, system maintenance and other repetitive tasks. The syntax is powerful and flexible, so you can have a task run every fifteen minutes or at a specific minute on a specific day every year.

Opening Crontab


First, open a terminal window from your Linux desktop’s applications menu. You can click the Dash icon, type Terminal and press Enter to open one if you’re using Ubuntu.

Use the crontab -e command to open your user account’s crontab file. Commands in this file run with your user account’s permissions. If you want a command to run with system permissions, use the sudo crontab -e command to open the root account’s crontab file. Use the su -c “crontab -e” command instead if your Linux distribution doesn’t use sudo.

You may be asked to select an editor. Select Nano if it’s available by typing its number and pressing Enter. Vi and other more advanced editors may be preferred by advanced users, but Nano is an easy editor to get started with.

You’ll see the Nano text editor, identified by the “GNU nano” header at the top of your terminal window. If you don’t, crontab probably opened in the vi text editor.

If you’re not comfortable using vi, you can type :quit into vi and press Enter to close it. Run the export EDITOR=nano command, then run crontab -e again to open the crontab file in Nano.

Adding New Tasks

Use the arrow keys or the page down key to scroll to the bottom of the crontab file in Nano. The lines starting with # are comment lines, which means that cron ignores them. Comments just provide information to people editing the file.

Lines in the crontab file are written in the following sequence, with the following acceptable values:
minute(0-59) hour(0-23) day(1-31) month(1-12) weekday(0-6) command
You can use an asterisk (*) character to match any value. For example, using a asterisk for the month would cause the command to run every month.

For example, let’s say we want to run the command /usr/bin/example at 12:30 a.m. every day. We’d type:
29 0 * * * /usr/bin/example
We use 29 for the 30-minute mark and 0 for 12 a.m. because the minute, hour and weekday values start at 0. Note that the day and month values start at 1 instead of 0.

Multiple Values and Ranges

Use comma-separated values to specific multiple times. For example, the line
0,14,29,44 * * * * /usr/bin/example2
runs /usr/bin/example2 at the 15-minute mark on every hour, every day. Make sure you add each new task on a new line.

Use dash-separated values to specify a range of values. For example, the line
0 11 * 1-6 * /usr/bin/example3
runs /usr/bin/example3 at noon every day, but only in the first six months of the year.

Saving the File

Press Ctrl-O and press Enter to save the crontab file in Nano. Use the Ctrl-X shortcut to close Nano after you’ve saved the file.

You’ll see the “crontab: installing new crontab” message, indicating that your new crontab file was installed successfully.

Friday, May 20, 2011

How To Install Programs in Ubuntu in the Command-Line ?

Ubuntu has a lot of GUI-based methods for installing applications, but they take some time to search and find. Since the keyboard is usually faster than the mouse, managing your software via the command-line can be a real time-saver.

APT

Linux manages software through packages, individual units of software that contain user interfaces, modules, and libraries. Most applications link several co-dependent packages together, and still others allow you to choose which packages to install and which to leave out at your own discretion. This can get confusing, so there’s a package manager at your disposal to help
Each Linux distribution has its own package management system. For our own near and dear Ubuntu, it’s the Advanced Packaging Tool. It has a family of commands that allows you to add repositories; search for, install, and remove packages; and even simulate upgrades and such. The commands are fairly easily to remember and use, so you’ll be managing your system’s software in no time at all!
APT requires super-user permissions, as it deals with core aspects of the system, so in Ubuntu you’ll need to preface most commands with “sudo.”

Searching for Packages

The command to search for software is:
apt-cache search [search term 1] [search term 2] … [search term n]
Replace [search terms] but don’t use brackets. You’ll get an output like this:
You can search for terms in the description of packages, say for a solitaire game, or by package name. Some searches may yield a tone of results, so you can scroll through the list with the following command:
apt-cache search [search terms] | less
That’s a pipe there in the middle (it shares a key with \). The less command will allow you to scroll through your list with the arrow keys, page up/down keys, and space, b, and enter. Hit q to exit the list and go back to the prompt.

Adding Repositories

You can find more software in repositories found online. Take, for instance, Ubuntu Tweak, a program that lets you change some hidden or otherwise difficult-to-change settings for your system. It’s hosted at another repository. If you add the repository instead of downloading and installing just the package, the system will notify you of updates and automatically keep it up-to-date for you. You can manually add and change repositories with by editing APT’s sources file:
sudo nano /etc/apt/sources.list
But Ubuntu 9.10 Karmic Koala changed that. There’s an easier way!
sudo add-apt-repository [repository name here]
Let’s look at Ubuntu Tweak’s repo to see what it’ll look like in practice:
sudo add-apt-repository ppa:tualatrix/ppa
Voila!

Updating Sources

After adding repositories, you have to update your package list.
sudo apt-get update
That will update the package lists from all repositories in one go. Remember to do this after every added repository!

Installation

Now that you’ve added your software repo and updated your package list, and found the package name you need, you can install it.
sudo apt-get install [package name 1] [package name 2] … [package name n]
This will download and install all of the packages listed. If there are dependencies – other prerequisite packages – they will also be installed. Sometimes you’ll also see a list of recommended but optional packages to go along with your selection. Sometimes, you’ll also see a confirmation prompt, though not always.
Often, you’ll see a core package with other linked packages, so installing this one will automatically install the dependencies and sometimes its associated packages, too.

Removing Packages

If you want to get rid of a program, you can uninstall its associated packages.
sudo apt-get remove [package name 1] [package name 2] … [package name n]
If you want to get rid of the configuration files and associated directories (usually in the user’s home directory), you’ll want to add the purge option:
sudo apt-get remove –purge [package name 1] [package name 2] … [package name n]
There are two dashes there. This will come in handy if a program isn’t working properly. By purging upon removal, you’ll can have a “clean” install.
Most of the time, you can just choose the core package and the associated ones will be removed as well. If it doesn’t, you can use the following command:
sudo apt-get autoremove
This will automatically remove any packages that aren’t used or associated with any installed program. For example, if you got rid of a core package, autoremove will get rid of it’s associated packages and any dependencies it had, so long as no other program is using them. It’s a great way to clean up any unused libraries and packages you don’t need.

Upgrading Software

So, what if your packages need upgrading? You can upgrade individual programs with the following command:
sudo apt-get upgrade [package name 1] [package name 2] … [package name n]
Or, you can upgrade all packages by having no further arguments:
sudo apt-get upgrade
This will tell you how many and which packages need updating and will ask for a confirmation before it continues.
Remember, you may need to update first. Upgrade will replace older versions of programs with their newer versions. This is a replacement process; the same package name is required and the older version is replaced with a newer version. No completely new packages are installed and no packages are uninstalled.
Some programs don’t quite work that way. They require a package with a slightly different name to be removed and a new one with a different name to be installed. Sometimes a program’s new version has a new required package. In these cases, you’ll need to use dist-upgrade.
sudo apt-get dist-upgrade [package name 1] [package name 2] … [package name n]
sudo apt-get dist-upgrade
Now, all of the dependencies will be satisfied no matter what. If you aren’t into micro-managing your packages, then this is the command you’re going to use.
If you only want to see which packages will be upgraded if you were to hypothetically run the command, you can simulate an upgrade with the –s option.
sudo apt-get –s upgrade
This is really useful if you aren’t sure if upgrading one package will mess up other programs, which happens occasionally with things like PHP and mail server libraries.

Cleaning

When you download packages, Ubuntu caches them in case it needs to refer to them further. You can delete this cache and get back some hard drive space with the following command:
sudo apt-get clean
If you want to get rid of your cache, but save the newest versions of what packages you have, then use this instead:
sudo apt-get autoclean
This will get rid of the older versions which are pretty much useless, but still leave you with a cache.

Checking What’s Installed

You can see a list of all your installed packages with dpkg.
sudo dpkg –list
You can also use less to scroll through this list.
sudo dpkg –list | less
You can also search through the list with the grep command.
dpkg –list | grep [search term]
If something is installed, you’ll see a package name and a description.
You can also search through a more compact method:
dpkg –l ‘search term’
That option is a lowercase letter L, and your search term must be inside single quotes. You can use wildcard characters to search better as well.

Easter Egg

APT has an interesting easter egg.
sudo apt-get moo
Enjoy your super cow powers!

Being able to manage packages and installed software via command-line can save you some time. Ubuntu’s Software Updater is often laggy on my system and it can really be a pain to have to add software repos and install packages through the Software Center, especially if you know the package names already. It’s also great for managing your system remotely via SSH. You don’t need to have a GUI running 
at all or deal with VNC.
There are a lot of things to learn when getting comfortable with the command-line, so you may want to check out The Beginner’s Guide to Nano, Linux Command-Line Text Editor. There’s more to come!

    Thursday, May 19, 2011

    The Beginner’s Guide to Nano, Linux Command-Line Text Editor

    New to the Linux command-line? Confused by all of the other advanced text 
    editors? How-To Geek’s got your back with this tutorial to Nano, a simple 
    text-editor that’s very newbie-friendly.
    When getting used to the command-line, Linux novices are often put off by 
    other, more advanced text editors such as vim and emacs. While they are 
    excellent programs, they do have a bit of a learning curve. Enter Nano, an 
    easy-to-use text editor that proves itself versatile and simple. Nano is installed
     by default in Ubuntu and many other Linux distros and works well in 
    conjunction with sudo, which is why we love it so much.

    Running Nano


    You can run nano in two ways. To open nano with an empty buffer, just type in “nano” at the command prompt.
    You can also use the following syntax:
    nano /path/to/filename
    Nano will follow the path and open that file if it exists. If it does not exist, it’ll 
    start a new buffer with that filename in that directory.
    Let’s take a look at the default nano screen.
    At the top, you’ll see the name of the program and version number, the name 
    of the file you’re editing, and whether the file has been modified since it was 
    last saved. If you have a new file that isn’t saved yet, you’ll see “New Buffer.
    ” Next, you’ll see the contents of your document, a body of text. The third-line 
    from the bottom is a “system message” line that displays information relevant to 
    the program executing a function. Here, you can see that it says “New File.” Lastly, the final two rows at the bottom are what make this program very user-friendly: 
    the shortcut lines.
    It’s a WYSIWYG editor; “what you see is what you get.” What you type directly 
    goes into the text input, unless you modify it with a key like Control or Meta. 
    It’s pretty simple, so type some text out, or copy something and paste it into 
    your terminal so we have something to play with.

    Shortcuts

    Program functions are referred to as “shortcuts” in nano, such as saving, quitting, justifying, etc. The most common ones are listed at the bottom of the screen, 
    but there are many more that aren’t. Note that nano does not use the Shift key 
    in shortcuts. All shortcuts use lowercase letters and unmodified number keys, 
    so Ctrl+G is NOT Ctrl+Shift+G.
    Hit Ctrl+G to bring up the Help documentation and scroll down to see a list of 
    valid shortcuts.
    When you’re done looking at the list, hit Ctrl+X to exit help.
    Let’s say you’re working on a new text file, or “buffer,” and you want to save it.
    This is called “writing out” and is executed by hitting Ctrl+O. You’ll be prompted 
    for a filename to use, and the shortcuts at the bottom will change to reflect what you can enter to complete this particular command.
    If you want to insert the contents of another file into your current buffer, you’d 
    type Ctrl+R.
    You can cancel both of the previous commands by typing Ctrl+C.
    You can hit Escape twice instead of holding down the Control key, if you have 
    trouble doing that. There are also some commands that require use of the Meta 
    key. On most keyboard layouts, Meta equates to the Alt button.
    When you want to quit nano, you just hit Ctrl+X. Nano will politely ask you if 
    you want to save your buffer, and you can cancel this action as well.

    Navigation

    Now that we’ve got a hang of shortcuts, let’s get used to moving around a text 
    file very quickly. Of course, you can always use the Home, End, Page Up, Page 
    Down, and the arrow keys to get around, but that requires moving your fingers 
    from the letters that we all love so much.


    To move the cursor forward or backward, you can type Ctrl+F and Ctrl+B. To 
    move up and down one line at a time, you can type Ctrl+P and Ctrl+N. In other words, you can use those keys instead of the Right, Left, Up, and Down arrows, respectively. Missing the Home and End keys? You can use Ctrl+A and Ctrl+E.
    Want to move pages at a time instead? Ctrl+V moves down a page, and Ctrl+Y moves up a page.
    But wait, there’s more! To move forward and backward one word at a time, you
    can use Ctrl+Space and Meta+Space (remember, that’s Alt+Space). And, if 
    you’re really in a rush, you can hit Ctrl+_ and then type in the line number, 
    comma, and the column number to jump straight there.
    If you want to see where your cursor currently is, sort of like nano-GPS,
     hit Ctrl+C.

    Copying, Cutting, and Pasting

    When we want to copy text in graphical environment, we highlight it with the 
    cursor. Similarly, in nano we “mark” it by using the Ctrl+^ command. You 
    simply move the cursor to where you want to start marking, and then you hit 
    Ctrl+^ to “set” it. This will mark everything between the starting point up to
     and NOT including the cursor.
    Note that the cursor is on the empty space, and copying/cutting will not include
    this space. You can also mark backwards from your “set” point. Be careful, 
    however, as you can edit text while your marking. If you messed up, just hit 
    Ctrl+^ again to unset the marker and you can start over.
    To copy the marked text, hit Meta+^. If, instead, you want to cut the text,
    hit Ctrl+K.
    To Paste your text, move the cursor to a suitable position and hit Ctrl+U.
    If you want to remove an entire line of text, simply hit Ctrl+K without 
    highlighting anything. This sometimes comes in handy when editing 
    configuration files.

    Some Extra Shortcuts

    You know how in notepad, you can force long lines of text to wrap-around
    into what look like paragraphs? You can toggle that feature in nano with the
    Meta+L shortcut. Since line wrapping is set to “on” by default, this usually 
    comes in handy in the opposite way; for example, you’re writing a config file
    and want to disable line-wrapping.
    You can see that the line the cursor is on has a “$” at both the beginning and
    end. This signifies that there’s more text both before and after the portion 
    being displayed on screen.
    If you want to search for a text string, hit Ctrl+W, and enter your search term.
    This search can then be cancelled mid-execution by hitting Ctrl+C without
    destroying your buffer.
    The previous search term appears in the square brackets, and leaving the line
    blank and hitting Enter will repeat that last search.
    And after you get really comfortable, you can turn that helpful section at the
    bottom off by hitting Meta+X to get more screen space for editing!

    Some History

    Nano was designed to be similar in look and feel to another program called Pico.
    Pico was the default text editor of Pine, an email program from back in the day 
    that wasn’t distributed with a GPL-friendly license. This meant that redistribution was somewhat of a fuzzy area, and so the TIP project was born. “TIP Isn’t Pico” added some functionality that Pico lacked and was licensed for free distribution,
    and over time, became the nano we love to use today.