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:
##代码##
