Debian或Ubuntu Linux 怎样在执行apt-get命令后如何运行脚本

时间:2019-11-20 08:53:10  来源:igfitidea点击:

如何在运行" apt-get upgrade"或" apt-get dist-upgrade"后,执行一个命令或者脚本?

可以在/etc/apt/apt.conf文件中配置apt-get命令
或者将配置文件放在/etc/apt/apt.conf.d/目录中。

下面将演示如何在调用dpkg/apt-get工具之前或者之后运行shell脚本。

在dpkg调用之后运行脚本

语法为:

# 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";};

在调用dpkg之前运行脚本

语法为:

# 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";};

示例

下面的例子中,我们将在apt-get调用之后,重新挂载/usr/文件系统。

首先,创建一个文件:

$ sudo vi /etc/apt/apt.conf.d/100update

添加如下内容:

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

或者内容使用下面的格式

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

示例 在Debian Ubuntu执行apt-get命令时运行自定义脚本

在运行apt-get命令时,执行/root/bin/php7helper修补配置文件:

#!/bin/bash
# Name: /root/bin/php7helper

function update_php7(){
	local u="theitroad"  # 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 "
$ vi /etc/apt/apt.conf.d/80upgradehook
: Patching $f..." sed -i "s/$r/$u/g" $f # restart it $prcmd $wrcmd } # main # update_php7

创建一个新文件:

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

内容如下:

$ sudo apt-get upgrade

只要运行apt-get upgrade命令,就会执行脚本/root/bin/php7helper:

##代码##