每周 cron 作业保存已安装软件包的列表

每周 cron 作业保存已安装软件包的列表

我无法弄清楚如何设置我的第一个 cron 作业。我只想每周运行一次这个命令:

dpkg -l > ~/Dropbox/installed_packages

我的/etc/crontab文件包含以下行

7 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )

所以我需要将命令放在 /etc/cron.weekly 目录中的某个位置 - 但在哪个文件中?/etc/cron.weekly当前包含以下文件:

apt-xapian-index  man-db  0anacron  cvs

答案1

创建一个包含以下内容的文件(例如list_packages.sh):

#!/bin/bash

dpkg -l > ~/Dropbox/installed_packages

放入此文件/etc/cron.weekly/,它将每周运行一次。

答案2

将其另存为脚本,例如installed_packages_list.sh

#!/bin/bash
dpkg -l > ~/Dropbox/installed_packages

使其可执行。

chmod u+x installed_packages_list.sh

然后运行

crontab -e

这将在文本编辑器中打开一个文件。输入此内容并保存

@weekly /full/path/to/script

该脚本将每周执行一次,并具有计划 cron 作业的用户的权限。

答案3

首先,为此您不需要以超级用户身份执行作业。

解决这个问题最简单的方法是编辑普通用户的 crontab

crontab -e

根据您的编辑器环境变量,用户 crontab 将使用您最喜欢的文本编辑器打开。

在那里你可以添加类似的东西

# m h dom mon dow command
5 12 * * 1 bash $HOME/pkg.backup.sh

然后,您必须使用 dpkg 命令创建 pkg.backup.sh 文件。

顺便说一句,如果您希望能够轻松恢复机器当前的包状态(也称为包选择),那么这个命令行更加面向目标:

dpkg --get-selections > foo

要恢复它,您只需输入

dpkg --set-seclections < foo

实际上,如果您还想记录确切的软件包版本号,则 dpkg -l 也很有用。

相关内容