若要在 Linux 上的 Microsoft Defender for Endpoint 上运行更新,请参阅在 Linux 上部署Microsoft Defender for Endpoint更新。
Linux 和 Unix 有一个名为 crontab (的工具,类似于任务计划程序,) 能够运行计划任务。
Prerequisites
注意
若要获取所有时区的列表,请运行以下命令: timedatectl list-timezones
时区示例:
America/Los_AngelesAmerica/New_YorkAmerica/ChicagoAmerica/Denver
设置 Cron 任务
使用以下命令:
备份 crontab 条目
在进行更改之前,使用以下命令备份当前 crontab 条目:
sudo crontab -l > /var/tmp/cron_backup_201118.dat
注意
在我们的示例中,为 201118 == YYMMDD。
提示
在编辑或删除这些条目之前备份 crontab 条目。
编辑根用户的 crontab 并添加新作业:
sudo crontab -e
注意
默认编辑器为 VIM。
你可能会看到:
0 * * * * /etc/opt/microsoft/mdatp/logrorate.sh
和
0 2 * * sat /bin/mdatp scan quick>~/mdatp_cron_job.log
有关创建计划防病毒扫描作业的说明,请参阅使用 Microsoft Defender for Endpoint (Linux) 计划扫描。
按“插入”
添加以下条目。 使用 CRON_TZ 此设置可确保计划的 cron 作业在预期时区中运行:
CRON_TZ=America/Los_Angeles
#!RHEL 和变体 (CentOS 和 Oracle Linux)
0 6 * * sun [ $(date +\%d) -le 15 ] && sudo yum update mdatp -y >> ~/mdatp_cron_job.log
#!SLES 及其变种
0 6 * * sun [ $(date +\%d) -le 15 ] && sudo zypper update mdatp >> ~/mdatp_cron_job.log
#!Ubuntu 和 Debian 系统
0 6 * * sun [ $(date +\%d) -le 15 ] && sudo apt-get install --only-upgrade mdatp >> ~/mdatp_cron_job.log
注意
在 RHEL、SLES、Ubuntu 和 Debian 的 cron 条目中,0 6 * * sun 指定为:00 分、6 时(24 小时制)、每月中的任意一天、任意月份,以及星期日。
[$(date +\%d) -le 15] 除非它等于或小于第 15 天 (第三周) ,否则不会运行。
完整的 cron 条目意味着作业在星期日早上 6 点运行,但前提是月中的日期是 15 日或更早。
按“Esc”
输入“:wq”,不要输入双引号。
注意
w == 写入,q == 退出
若要查看 cron 作业,请键入 sudo crontab -l
若要验证与 Defender 相关的 cron 作业是否已运行,请在 cron 日志中搜索 mdatp 条目:
sudo grep mdatp /var/log/cron
若要打开日志文件并查看计划Defender更新任务的输出,
sudo nano mdatp_cron_job.log
使用 Ansible、Chef 或 Puppet 配置计划更新
使用以下命令:
在 Ansible 中设置 cron 作业
使用 Ansible 的 cron 模块管理 cron 作业:
cron - Manage cron.d and crontab entries
有关详细信息,请参阅 https://docs.ansible.com/ansible/latest。
在 Chef 中配置 crontab
使用 Chef 的 cron 资源管理 cron 作业:
cron resource
有关详细信息,请参阅 https://docs.chef.io/resources/cron/。
在 Puppet 中设置 cron 作业
资源类型:cron
有关详细信息,请参阅 https://puppet.com/docs/puppet/5.5/types/cron.html。
使用 Puppet 实现自动化:Cron 作业和计划任务
有关详细信息,请参阅 https://puppet.com/blog/automating-puppet-cron-jobs-and-scheduled-tasks/。
常见 crontab 命令和示例
以下命令涵盖常见的 crontab 任务,例如列出、备份、编辑和删除 cron 条目。
获取有关 crontab 的帮助
运行以下命令以查看 crontab 手动页:
man crontab
获取当前用户的 crontab 文件列表
运行以下命令列出当前用户的 crontab 条目:
crontab -l
获取其他用户的 crontab 文件列表
运行以下命令列出其他用户的 crontab 条目:
crontab -u username -l
备份 crontab 条目
使用以下命令备份当前 crontab 条目:
crontab -l > /var/tmp/cron_backup.dat
提示
在编辑或删除之前执行此操作。
恢复 crontab 条目
运行以下命令,从备份文件还原 crontab 条目:
crontab /var/tmp/cron_backup.dat
以 root 用户身份编辑 crontab 并添加新作业
使用以下命令编辑根用户的 crontab 并添加新作业:
sudo crontab -e
编辑 crontab 并添加新作业
运行以下命令以编辑当前用户的 crontab 并添加新作业:
crontab -e
编辑其他用户的 crontab 条目
运行以下命令以编辑其他用户的 crontab 条目:
crontab -u username -e
删除所有 crontab 条目
Warning
此命令删除当前用户的所有 crontab 条目,而无需提示确认。 如果之后可能需要恢复 crontab,请先使用 crontab -l > /var/tmp/cron_backup.dat 备份它。
使用以下命令删除当前用户的所有 crontab 条目:
crontab -r
删除其他用户的 crontab 条目
Warning
此命令会永久删除指定用户的所有 crontab 条目,而不会提示确认。 在运行此命令之前备份用户的 crontab。
使用以下命令通过删除该用户的 crontab 条目删除特定用户的所有计划任务:
crontab -u username -r
Cron 表达式字段说明
下图说明了 cron 表达式中的字段:
+—————- 分钟 (值: 0 - 59) (特殊字符: , - * /)
|+————- 小时 (值: 0 - 23) (特殊字符: , - * /)
| | +———- 每月中的日期(取值:1 - 31)(特殊字符:, - * / L W C)
| | |+——- 个月 (值: 1 - 12) (特殊字符: ,- * / )
| | | |+—- 星期几 (值:0 - 6) (Sunday=0 或 7) (特殊字符: , - * / L W C)
| | | | |*****command to be executed