Tag Archives: shell

Automatically start Tomcat on startup in Ubuntu

Apache Tomcat is not configured with autostart by default in Ubuntu. So, custom init script is required to configure Tomcat for autostart on startup.

Create the init script in /etc/init.d/tomcat8 with the contents as per below.

Init script contents:

Note: Please change {tomcat_root} with your Tomcat installation folder path.

Change its permissions and add the correct symlinks automatically:

And from now on it will be automatically started and shut down upon entering the appropriate run levels.

It could be also controlled with justservice tomcat8 <stop|start|restart> like Apache control commands.

Using above process any server script can be created and configured to start on startup.

Access shell with SSH on cPanel server from Linux

Some of the important server related problems will be solved only using shell access to the server. To access the cPanel server shell using SSH, there must be an SSH client installed on PC. Most of the Linux distros include SSH client software by default. If it is not installed, then it can be easily installed with following commands,

For Ubuntu: apt-get install openssh-client
For CentOS: yum install openssh-clients

After installation, follow these steps to access the cPanel shell with SSH from Linux:

  1. Login to cPanel and go to Security > SSH/Shell Access to generate SSH key pair.
  2. Click Manage SSH Keys > Generate a New Key. You should use a password to protect the key. You will be asked the password each time you use the key.
  3. In Public Keys section click ‘Manage Authorization’ and ‘Authorize’
  4. In Private Keys section click, Vew/Download then download the key (id_dsa or id_rsa) to your PC.
  5. Save it to ~/.ssh directory on your Linux machine under a meaningful name to not overwrite your existing keys for example id_dsa.myjavahost
  6. Now make sure permissions are correct on the key (one-time task) and connect:
  7. Provide the password for the key, set up in step #2

You should be logged in by now.

Add Jobs to cronjob in UNIX

Cron jobs allows Unix users to run commands or scripts at a given date and time as per scheduled period of time. Cron is one of the most useful tool in a UNIX like operating systems. In Windows, same thing will be achieved by Scheduled Tasks. It is usually used for sysadmin jobs such as periodic backups, scripts to be executed on period of time or do any periodic activities and more. The cron service (daemon) runs in the background and constantly checks the/etc/crontab file, /etc/cron.*/ directories and /var/spool/cron/directory.

crontab command

crontab command is used to edit/create, install, deinstall or list the cron jobs in Cron. Every user can have their own crontab file, and though crontab files in /var/spool/cron/crontabs are not intended to be edited directly. Each user need to use crontab command for editing or setting up their own cron jobs.

Types of cron configuration files

There are different types of configuration files:

  1. The UNIX system crontab : Usually, used by system services and critical jobs that requires root like privileges. The sixth field (see below for field description) is the name of a user for the command to run as. This gives the system crontab the ability to run commands as any user.
  2. The user crontabs: User can install their own cron jobs using the crontab command. The sixth field is the command to run, and all commands run as the user who created the crontab

Note: This faq features cron implementations written by Paul Vixie and included in many Linux distributions and Unix like systems such as in the popular 4th BSD edition. The syntax is compatible with various implementations of crond service.

Install or create or edit cron jobs

To edit or create your own crontab file, type the following command at the UNIX / Linux shell prompt:

Cron will examine the modification time on all crontab files and reload those which have changed. Thus cron need not be restarted whenever a crontab file is modified.

Syntax of crontab (field description)

The syntax is:



  • 1: Minute (0-59)
  • 2: Hours (0-23)
  • 3: Day (0-31)
  • 4: Month (0-12 [12 == December])
  • 5: Day of the week(0-7 [7 or 0 == sunday])
  • /path/to/command – Script or command name to schedule

Easy to remember format:

Your cron job looks as follows for system jobs:


Example: Run backup cron job script

If you wished to have a script named /root/backup.sh run every day at 3am, your crontab entry would look like as follows. First, install your cronjob by running the following command:

Append the following entry:

Save and close the file.

More examples

To run /path/to/command five minutes after midnight, every day, enter:

Run /path/to/script.sh at 2:15pm on the first of every month, enter:

Run /scripts/phpscript.php at 10 pm on weekdays, enter:

Run /root/scripts/perl/perlscript.pl at 23 minutes after midnight, 2am, 4am …, everyday, enter:

Run /path/to/unixcommand at 5 after 4 every Sunday, enter:

How do I use operators?

An operator allows can be used to specifying multiple values in a field. There are three operators:

  1. The asterisk (*) : This operator specifies all possible values for a field. For example, an asterisk in the hour time field would be equivalent to every hour or an asterisk in the month field would be equivalent to every month.
  2. The comma (,) : This operator specifies a list of values, for example: “1,5,10,15,20, 25”.
  3. The dash (-) : This operator specifies a range of values, for example: “5-15” days , which is equivalent to typing “5,6,7,8,9,….,13,14,15” using the comma operator.
  4. The separator (/) : This operator specifies a step value, for example: “0-23/” can be used in the hours field to specify command execution every other hour. Steps are also permitted after an asterisk, so if you want to say every two hours, just use */2.

How do I disable email output?

By default the output of a command or a script (if any produced), will be email to provided email account. To stop receiving email output from crontab, append >/dev/null 2>&1. For example:

To mail output to particular email account let us say abc@example.com, define MAILTO variable as follows:

Task: List all your cron jobs

Type the following command:

To remove or erase all crontab jobs use the following command:

Use special string to save time

Instead of the first five fields, use any one of eight special strings. It will not just save time but also improve readability.

Special 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 * * * *”.


Run ntpdate command every hour:

Make a backup everyday:

More about /etc/crontab file and /etc/cron.d/* directories

/etc/crontab is system crontabs file. Usually only used by root user or daemons to configure system wide jobs. All individual user must use crontab command to install and edit their jobs as described above. /var/spool/cron/ or /var/cron/tabs/ is directory for personal user crontab files. It must be backup with users home directory.

Understanding Default /etc/crontab

Typical /etc/crontab file entries:

First, the environment must be defined. If the shell line is omitted, cron will use the default, which is sh.

If the PATH variable is omitted, no default will be used and file locations will need to be absolute.

If HOME is omitted, cron will use the invoking users home directory.

Additionally, cron reads the files in /etc/cron.d/ directory. Usually system daemon such as sa-update or sysstat places their cronjob here and used as the root user or superuser to configure cron jobs. Users can directly drop your scripts here. The run-parts command run scripts or programs in a directory via /etc/crontab file:

Directory Description
/etc/cron.d/ Put all scripts here and call them from /etc/crontab file.
/etc/cron.daily/ Run all scripts once a day
/etc/cron.hourly/ Run all scripts once an hour
/etc/cron.monthly/ Run all scripts once a month
/etc/cron.weekly/ Run all scripts once a week


Here is a sample shell script called clean.cache. This script is created to clean up cached files every 10 days. This script is directly created at /etc/cron.daliy/ directory. In other words create a text file called /etc/cron.daily/clean.cache as follows.

Save and close the file. Set the permissions:

Backup installed cron job entries

Simply type the following command to backup cronjobs to a nas server mounted at /nas01/backup/cron/users.root.bakup directory:

See also