Fix: Unable to Use Package Manager Due to Exclusive Lock Error

Learn how to resolve the ‘exclusive lock’ error when using a package manager like apt on Linux systems. Step-by-step fixes for Ubuntu and Debian-based distros.

After start, Synaptic Manager in Ubuntu sometimes gives error

Unable to get exclusive lock. This usually means that another package management application(like apt-get or aptitude) is already running. Please close that application first.

In this post, we will learn about the causes and solutions for this error.

There are multiple causes for this error. As the message says, it means that package manager is already running.

After Boot

Cause

By default, Ubuntu runs a check after reboot automatically — not immediately, but some time within. So, during this time if you try to run the update command, you will get this error.

Solution

For Ubuntu automatic system checks, you have to wait for it to complete and then run your update command.

You can check, if any system check is running or not using the following command,

ps aux | grep dpkg | grep -v grep

If it shows any text then it means system is still updating, just wait for it to completed.

Software Updater is Running

Cause

Sometimes after boot, system software updater popup comes with many system updates. You can cancel this update and it will close. But, if you accept the updates, it will start updating the system.

If this updater is running and you try to run the update command, you will get same error as above.

Solution

Generally, it is not advised to pause the updater. Once an update has started, allow it to run its course. So, wait for some time till it completes and then run your update command.

Otherwise, you can pause the updater to run update command from terminal and restart the updater later after your update command completes.

Fix: phpMyAdmin Gives 404 Error in Localhost

Troubleshooting guide to fix the 404 error when accessing phpMyAdmin on localhost. Learn common causes and step-by-step solutions for Apache and Nginx servers.

To run phpmyadmin without getting 404 error, configure apache.conf for phpmyadmin.

gksu gedit /etc/apache2/apache2.conf

Then add the following line to the end of the file.

Include /etc/phpmyadmin/apache.conf

And restart apache

/etc/init.d/apache2 restart

Please read this section in Ubuntu wiki describes the 404 error problem for phpmyadmin.

How to Add Jobs to Cronjob in Unix (with Examples)

Learn how to schedule tasks using cron in Unix. This guide explains how to add, edit, and manage cron jobs with practical examples for beginners.

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:

$ crontab -e

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 2 3 4 5 /path/to/command arg1 arg2

OR

1 2 3 4 5 /root/backup.sh

Where,

  • 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:

* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

Your cron job looks as follows for system jobs:

1 2 3 4 5 USERNAME /path/to/command arg1 arg2

OR

1 2 3 4 5 USERNAME /path/to/script.sh

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:

# crontab -e

Append the following entry:

0 3 * * * /root/backup.sh

Save and close the file.

More examples

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

5 0 * * * /path/to/command

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

15 14 1 * * /path/to/script.sh

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

0 22 * * 1-5 /scripts/phpscript.php

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

23 0-23/2 * * * /root/scripts/perl/perlscript.pl

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

5 4 * * sun /path/to/unixcommand

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:

0 3 * * * /root/backup.sh >/dev/null 2>&1

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

MAILTO="vivek@nixcraft.in"
0 3 * * * /root/backup.sh >/dev/null 2>&1

Task: List all your cron jobs

Type the following command:

// List all cron jobs
# crontab -l

// List cron jobs of specific user. Must be run as the root user
# crontab -u username -l

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

// Delete all current cron jobs
crontab -r

// Delete cron jobs of specific user. Must be run as the root user
crontab -r -u username

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 stringMeaning
@rebootRun once, at startup.
@yearlyRun once a year, “0 0 1 1 *”.
@annually(same as @yearly)
@monthlyRun once a month, “0 0 1 * *”.
@weeklyRun once a week, “0 0 * * 0”.
@dailyRun once a day, “0 0 * * *”.
@midnight(same as @daily)
@hourlyRun once an hour, “0 * * * *”.

Examples

Run ntpdate command every hour:

@hourly /path/to/ntpdate

Make a backup everyday:

@daily /path/to/backup/script.sh

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:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

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:

DirectoryDescription
/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

Examples

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.

 #!/bin/bash
# A sample shell script to clean cached file from lighttpd web server
CROOT="/tmp/cachelighttpd/"
 
# Clean files every $DAYS
DAYS=10
 
# Web server username and group name
LUSER="lighttpd"
LGROUP="lighttpd"
 
# Okay, let us start cleaning as per $DAYS
/usr/bin/find ${CROOT} -type f -mtime +${DAYS} | xargs -r /bin/rm
 
# Failsafe 
# if directory deleted by some other script just get it back 
if [ ! -d $CROOT ]
then
        /bin/mkdir -p $CROOT
        /bin/chown ${LUSER}:${LGROUP} ${CROOT}
fi

Save and close the file. Set the permissions:

# chmod +x /etc/cron.daily/clean.cache

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:

// Backup all cron jobs
# crontab -l > /nas01/backup/cron/users.root.bakup

// Backup cron jobs of specific user
# crontab -u userName -l > /nas01/backup/cron/users.userName.bakup

See also

See man pages for more information cron(8), crontab(1), crontab(5), run-parts(8)

How to Execute a JAR File from the Terminal on Ubuntu?

Learn how to run JAR files directly from the terminal on ubuntu. Includes syntax examples, troubleshooting tips, and Java runtime requirements.

To execute .jar file, java command should be used as below:

java -jar {path_of_the_file}/{file_name}.jar

And to execute above command, Java package must be installed on Ubuntu PC. To check if java package is already installed, execute below command in a terminal:

java -version 

It should display current version of Java package installed.

If it displays “The program java can be found in the following packages”, It means Java hasn’t been installed yet. Execute below command in a terminal to install java package,

sudo apt-get install default-jre

This will install the Java Runtime Environment (JRE) only not Java Development Kit (JDK). If Java Development Kit (JDK) is needed, which is usually needed to compile Java applications, execute the following command in terminal:

sudo apt-get install default-jdk

That is everything to install Java. Now run first command to execute .jar file.

How to Reset a Forgotten phpMyAdmin Password

Forgot your phpMyAdmin password? Follow this simple guide to reset your MySQL root or user password and regain access to phpMyAdmin on localhost or server.

Forgetting your phpMyAdmin password can be frustrating, especially when you’re in the middle of working on a critical project. Fortunately, resetting the password is a straightforward process. This guide walks you through the steps needed to reset your phpMyAdmin (MySQL/MariaDB) root password on a local or remote server.

Step-by-Step Guide to Reset phpMyAdmin Root Password

Step 1: Stop the MySQL Service

Before making any changes, stop the MySQL or MariaDB service.

sudo systemctl stop mysql

Step 2: Start MySQL in Safe Mode

Run MySQL in safe mode without password authentication.

sudo mysqld_safe --skip-grant-tables &

This allows you to log in without needing a password.

Step 3: Log in to MySQL

Now log into MySQL as the root user:

mysql -u root

You’ll be taken directly to the MySQL shell.

Step 4: Change the Root Password

Run the following commands to change the root password.

For MySQL 5.7+ or MariaDB 10.1+:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password';

For older versions:

USE mysql;
UPDATE user SET password=PASSWORD('your_new_password') WHERE User='root';
FLUSH PRIVILEGES;

Replace 'your_new_password' with your desired password.

Step 5: Stop MySQL Safe Mode and Restart Normally

Press Ctrl+C to stop the MySQL safe mode process (if it’s running in foreground), or kill it using:

sudo killall -9 mysqld_safe
sudo killall -9 mysqld

Then start the service again:

sudo systemctl start mysql

Step 6: Test Login to phpMyAdmin

Go to http://localhost/phpmyadmin or your server’s phpMyAdmin URL and log in using:

  • Username: root
  • Password: the new password you just set

If successful, you’re good to go!

Tips for Better Security

  • Avoid using the root account for daily tasks. Create a separate user with limited privileges.
  • Use strong, unique passwords and store them securely using a password manager.
  • Regularly update MySQL/MariaDB and phpMyAdmin for security patches.

Common Issues & Fixes

Issue: Access denied for user 'root'@'localhost'
Fix: Ensure you flushed privileges and restarted the MySQL server after changing the password.

Issue: phpMyAdmin login loop
Fix: Check config.inc.php in your phpMyAdmin directory. Ensure $cfg['Servers'][$i]['auth_type'] is set to 'cookie'.

Conclusion

Resetting a forgotten phpMyAdmin password isn’t difficult when you follow the correct steps. Always remember to restart the MySQL service after resetting the password and ensure your configuration files are properly set. Keeping your credentials secure and using non-root accounts for regular usage can further enhance your database security.