我无法弄清楚如何设置我的第一个 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 也很有用。