我想在每次 Ubuntu 更新之后或期间启动我的脚本。例如:
如果我执行命令 sudo apt-get Upgrade,我想在成功更新后启动我的脚本。如果我通过软件更新程序进行更新也是如此。是否可以?
留意以下方面的变化/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
。
您可以通过向 中添加 sayupgrade
别名~/.bashrc
并运行该别名来执行升级来完成此操作:
chmod +x <path_to_script>
*<脚本路径> = 要运行的脚本的路径
upgrade
别名~/.bashrc
:<<< "alias upgrade='sudo apt-get upgrade && <path_to_script>'" tee -a ~/.bashrc
*<脚本路径> = 要运行的脚本的路径
~/.bashrc
:. ~/.bashrc
这样,每次运行upgrade
两者时sudo apt-get upgrade
,脚本都会被执行,该脚本仅在sudo apt-get upgrade
.
归档时间: |
|
查看次数: |
814 次 |
最近记录: |