Backup MySQL Database to a file

Backing up your database is a very important system administration task, and should generally be run from a cron job at scheduled intervals. We will use the mysqldump utility included with mysql to dump the contents of the database to a text file that can be easily re-imported.

Syntax:

mysqldump -h localhost -u root -pmypassword databasename > dumpfile.sql

Example:

mysqldump -h localhost -u root -p2Uad7as9 database01 > dumpfile.sql

This will give you a text file containing all the commands required to recreate the database.

A «live» view of a logfile on Linux

This approach works for any linux operating system, including Ubuntu, and is probably most often used in conjunction with web development work.

tail -f /path/thefile.log

This will give you a scrolling view of the logfile. As new lines are added to the end, they will show up in your console screen.

For Ruby on Rails, for instance, you can view the development logfile by running the command from your project directory:

tail -f log/development.log

As with all linux apps, Ctrl+C will stop it.

A Short Introduction To Cron Jobs

crontab

The command to create/edit, list, and remove cron jobs is crontab. If you call it with the -u option, it specifies the name of the user whose crontab is to be tweaked. If this option is not given, crontab examines «your» crontab, i.e., the crontab of the person executing the command. If you are looged in as root and run crontab without -u, then root’s crontab is listed/modified/removed. If you are logged in as exampleuser and run crontab without -u, then exampleuser‘s crontab is listed/modified/removed.

Examples:

crontab -l

lists the cron jobs of the user as that you are currently logged in:

server1:~# crontab -l
* * * * * /usr/local/ispconfig/server/server.sh > /dev/null 2>> /var/log/ispconfig/cron.log
30 00 * * * /usr/local/ispconfig/server/cron_daily.sh > /dev/null 2>> /var/log/ispconfig/cron.log
server1:~#

crontab -u exampleuser -l

lists all cron jobs of exampleuser.

crontab -e

let’s you create/modify the cron jobs of the user as that you are currently logged in (I’ll come to the syntax in the next chapter).

crontab -u exampleuser -e

let’s you create/modify the cron jobs of exampleuser.

crontab -r

deletes all cron jobs of the user as that you’re currently logged in.

crontab -u exampleuser -r

deletes all cron jobs of exampleuser.

If you have written your cron jobs to a text file, you can use the text file to create the cron jobs. For example, let’s assume you have created the text file /tmp/my_cron_jobs.txt

vi /tmp/my_cron_jobs.txt

… with the following contents:

30 00 * * * /path/to/script

You can create a cron job from that file as follows:

crontab /tmp/my_cron_jobs.txt

(Or for exampleuser:

crontab -u exampleuser /tmp/my_cron_jobs.txt

)

Please note that this will overwrite all previously created cron jobs – if you’ve already created some cron jobs, you better use crontab -e and add the new cron job manually.

See

man crontab

to learn more about the crontab command.

Cron Job Syntax

A cron job consists out of six fields:

<minute> <hour> <day of month> <month> <day of week> <command>

field          allowed values
—–          ————–
minute         0-59
hour           0-23
day of month   1-31
month          1-12 (or names, see below)
day of week    0-7 (0 or 7 is Sun, or use names)

When specifying day of week, both day 0 and day 7 will be considered Sunday.

A field may be an asterisk (*), which always stands for first-last.

Names can also be used for the «month» and «day of week» fields. Use the first three letters of the particular day or month (case doesn’t matter), e.g. sun or SUN for Sunday or marMAR for March..

Let’s take a look at the two cron jobs from the first chapter:

* * * * * /usr/local/ispconfig/server/server.sh > /dev/null 2>> /var/log/ispconfig/cron.log

This means: execute /usr/local/ispconfig/server/server.sh > /dev/null 2>> /var/log/ispconfig/cron.log once per minute.

30 00 * * * /usr/local/ispconfig/server/cron_daily.sh > /dev/null 2>> /var/log/ispconfig/cron.log

This means: execute /usr/local/ispconfig/server/cron_daily.sh > /dev/null 2>> /var/log/ispconfig/cron.log once per day at 00:30h.

The day of a command’s execution can be specified by two fields: day of month, and day of week. If both fields are restricted (i.e., aren’t *), the command will be run when either field matches the current time. For example, 30 4 1,15 * 5 would cause a command to be run at 4:30h on the 1st and 15th of each month, plus every Friday.

You can use ranges to define cron jobs:

Examples:

1,2,5,9 – means every first, second, fifth, and ninth (minute, hour, month, …).

0-4,8-12 – means all (minutes, hours, months,…) from 0 to 4 and from 8 to 12.

*/5 – means every fifth (minute, hour, month, …).

1-9/2 is the same as 1,3,5,7,9.

Ranges or lists of names are not allowed (if you are using names instead of numbers for months and days – e.g., Mon-Wed is not valid).

1,7,25,47 */2 * * * command

means: run command every second hour in the first, seventh, 25th, and 47th minute.

Instead of the first five fields, one of eight special strings may appear:

string         meaning
——         ——-
@reboot        Run once, at startup.
@yearly        Run once a year, «0 0 1 1 *».
@annually      (same as @yearly)
@monthly       Run once a month, «0 0 1 * *».
@weekly        Run once a week, «0 0 * * 0».
@daily         Run once a day, «0 0 * * *».
@midnight      (same as @daily)
@hourly        Run once an hour, «0 * * * *».

You can also use name=value pairs in a crontab to define variables for the cron jobs:

# use /bin/bash to run commands, instead of the default /bin/sh
SHELL=/bin/bash
# mail any output to exampleuser, no matter whose crontab this is
MAILTO=exampleuser
# set the PATH variable to make sure all commands in the crontab are found
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

* * * * * my_command

Please note: unless you set a PATH variable in a crontab, always use full paths in the crontab to make sure commands are found and can be executed. For example, instead of writing rsync, you should write /usr/bin/rsync. Use which to find out the full path of a program:

which rsync

server1:~# which rsync
/usr/bin/rsync
server1:~#

See man 5 crontab to learn more about the cron job syntax.

How to check installed software in debian based linux (ubuntu)

Who remembers what has installed in his Ubuntu box?

Here is the simple command:

dpkg –get-selections > installed-software

more installed-software

What can you do in a fresh Ubuntu installation that you do not remember what software you need?

dpkg –set-selections < installed-software

and after that

dselect

All set in your fresh debian based linux.

Debian makes things simple 😀

Shuttleworth: Ubuntu developer Canonical may need 3-5 more years of funding

Founder of unprofitable Linux vendor says he’s willing to continue bankrolling the company Canonical Ltd., the commercial backer of the Ubuntu Linux operating system, is not yet turning a profit, but founder Mark Shuttleworth said during a teleconference today that he is prepared to bankroll the company for three to five more years.

«We continue to require investment, and I continue to be careful with my pennies in making those investments, but I consider this a good proposition,» the billionaire technologist said. «Canonical is not cash-positive, but our offering is very attractive to those who want to pinch their pennies in the Linux space.»

The dismal economic climate could, in fact, drive more business for Ubuntu, Shuttleworth added optimistically.

Canonical, which brings in money by providing fee-based services and support for the Ubuntu software, currently has annual revenue in the range of «several million» dollars, Shuttleworth said. But the company’s low revenue and lack of profits hasn’t shaken his belief in its business model.

«We are entering a time when there’s a real commoditization of the desktop, so I don’t think it would be possible to make a lot of money, or even any money,» by trying to sell Linux itself, Shuttleworth said. «The only way to build businesses around Linux is around services.»

Shuttleworth held the teleconference in conjunction with this week’s upcomingUbuntu 8.10 release, which Canonicalannounced today. Ubuntu 8.10 includes improved 3G wireless support and new features such as a «guest» capability that lets users lend their PCs to other people to check e-mail and perform other tasks without disturbing the existing programs or settings.

Looking forward, Canonical expects Ubuntu’s development to embrace three key trends, Shuttleworth said: touch-based interactivity, 3-D imagery and the integration of Web-like features into the desktop user experience.

In the future, «most devices will have a touch dimension within them,» he said, adding that «the lines between the 2-D desktop and 3-D gaming environment are going to blur.»

 

Thanks to: here