How to run a command or script after running apt-get command on a Debian or Ubuntu Linux

How do I run custom command after ‘apt-get upgrade‘ or ‘apt-get dist-upgrade‘ on a Debian or Ubuntu Linux based system? How do I hook a script to apt-get command on my Ubuntu Linux server?

You can configure the apt-get command using /etc/apt/apt.conf file or place configuration in a special directory at /etc/apt/apt.conf.d/. The following two options allows you to run shell commands or script before/after invoking dpkg/apt-get tools:


The syntax is:

# This is a list of shell commands to run after invoking dpkg/apt-get #
DPkg::Post-Invoke {"command";};
DPkg::Post-Invoke {"/path/to/sbin/command";};
DPkg::Post-Invoke {"/path/to/script";};


The syntax is:

# This is a list of shell commands to run before invoking dpkg/apt-get #
DPkg::Pre-Invoke {"command";};
DPkg::Pre-Invoke {"/path/to/sbin/command";};
DPkg::Pre-Invoke {"/path/to/script";};

Like options this must be specified in list notation. The commands are invoked in order using /bin/sh; should any fail APT will abort.


In this example auto re-mounting of a readonly /use/ folder so that apt-get will work properly. Edit or create a file called /etc/apt/apt.conf.d/100update:
$ sudo vi /etc/apt/apt.conf.d/100update
Append/edit as follows:

   Pre-Invoke {"/bin/mount -o remount,rw /usr/";};
   Post-Invoke {"/bin/mount -o remount,ro /usr/";};

Another example:

     Pre-Invoke {"touch /var/lib/apt/pre-update-stamp"; };
     Post-Invoke {"touch /var/lib/apt/post-update-stamp"; };

Running or hooking a custom script to apt-get on a Debian or Ubuntu Linux server

In this example I want to run the following script (/root/bin/php7helper) so that I can patch config file upon running apt-get command:

# Name: /root/bin/php7helper
# Purpose: A shell script to patch php 7 fpm on Ubuntu serer
# Author: SXI ADMIN <> under GPL version 2+
# ------
function update_php7(){
	local u="cyberciti"  # new user name
	local r="www-data"   # old user name
	local f="/usr/lib/tmpfiles.d/php7.0-fpm.conf" # config file
	local wrcmd="/etc/init.d/lighttpd restart"    # restart services
	local prcmd="/etc/init.d/php7.0-fpm restart"
	# patch it
	echo "$0: Patching $f..."
	sed -i "s/$r/$u/g" $f  
	# restart it
# main #

Create a file called /etc/apt/apt.conf.d/80upgradehook:
$ cat /etc/apt/apt.conf.d/80upgradehook
Sample outputs:

DPkg::Post-Invoke {"/root/bin/php7helper";};

Now simply run the apt-get upgrade command and the script /root/bin/php7helper will get executed:
$ sudo apt-get upgrade
Sample outputs:

Fig.01: apt-get hook called a script called /root/bin/php7helper after running it

See man pages for more info – dpkg(1)

Posted by: SXI ADMIN

The author is the creator of SXI LLC and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

Leave a Reply

Your email address will not be published. Required fields are marked *

Previous Post

How to Make Website WCAG Compliant?

Next Post

Link download Kali Linux 2020.1 (ISO + Torrent)

Related Posts