系统更新后如何启动应用程序或脚本

Pet*_*jko 5 updates scripts

我想在每次 Ubuntu 更新之后或期间启动我的脚本。例如:

如果我执行命令 sudo apt-get Upgrade,我想在成功更新后启动我的脚本。如果我通过软件更新程序进行更新也是如此。是否可以?

A.B*_*.B. 2

系统升级后如何启动应用程序或脚本

留意以下方面的变化/var/log/apt/history.log

sudo inoticoming /var/log/apt/ upgrade_success {} \;
Run Code Online (Sandbox Code Playgroud)

脚本upgrade_success

#!/bin/bash


if [ $1 == "history.log" ]
then

    echo "Changes in \"/var/log/apt/history.log\""

    if [ ! -f "/tmp/upgrade_success_last_run" ] || [ $(stat -c %Y "/tmp/upgrade_success_last_run") -lt $(date "+%s") ]
    then
        # look for changes since the last run
        # of this script ("upgrade_success")
        # in "/var/log/apt/history.log"
        # and make what you want.
    fi

    touch /tmp/upgrade_success_last_run

fi
Run Code Online (Sandbox Code Playgroud)

系统更新后如何启动应用程序或脚本

你写下以下内容:

...
我想在每次 Ubuntu 更新之后或期间启动我的脚本。
...


创建这个文件:

/etc/apt/apt.conf.d/16my-script
Run Code Online (Sandbox Code Playgroud)

并添加这一行:

APT::Update::Post-Invoke-Success {"<path_to_your_script> 2>/dev/null || true";};
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有办法对升级做同样的事情,例如:

APT::Upgrade::Post-Invoke-Success {"<path_to_your_script> 2>/dev/null || true";};
Run Code Online (Sandbox Code Playgroud)

或者


在文件中/etc/apt/apt.conf.d/15update-stamp

你可以找到这一行:

APT::Update::Post-Invoke-Success {"touch /var/lib/apt/periodic/update-success-stamp 2>/dev/null || true";};
Run Code Online (Sandbox Code Playgroud)

因此您可以监视文件的更改/var/lib/apt/periodic/update-success-stamp。在执行任何更新命令后,即使通过软件更新程序,该文件的修改日期也是上次成功更新的日期。

/var/lib/apt/periodic/使用以下命令查看文件夹inoticoming

sudo inoticoming /var/lib/apt/periodic/ upgrade {} \;
Run Code Online (Sandbox Code Playgroud)

脚本upgrade

#!/bin/bash

if [ $1 == "update-success-stamp" ]
then
    sudo apt-get upgrade
fi
Run Code Online (Sandbox Code Playgroud)

同样在这里:不幸的是,没有办法对升级执行相同的操作,例如:

APT::Upgrade::Post-Invoke-Success {"touch /var/lib/apt/periodic/upgrade-success-stamp 2>/dev/null || true";};
Run Code Online (Sandbox Code Playgroud)

并观察文件的变化/var/lib/apt/periodic/upgrade-success-stamp


kos*_*kos 1

您可以通过向 中添加 sayupgrade别名~/.bashrc并运行该别名来执行升级来完成此操作:

  1. 将您的脚本标记为可执行:chmod +x <path_to_script>

*<脚本路径> = 要运行的脚本的路径

  1. 添加upgrade别名~/.bashrc<<< "alias upgrade='sudo apt-get upgrade && <path_to_script>'" tee -a ~/.bashrc

*<脚本路径> = 要运行的脚本的路径

  1. 更新~/.bashrc. ~/.bashrc

这样,每次运行upgrade两者时sudo apt-get upgrade,脚本都会被执行,该脚本仅在sudo apt-get upgrade.