Linux 中有时会遇到需要定时自动执行任务的情况,本文记录Linux 计划任务相关命令。
指的是定时执行一次的计划任务,可以使用
at命令完成
# ubuntu
apt install at
#CentOS
yum install at -y# 重启 at
systemctl restart atd 
# 设置开机自启 at
systemctl enable atd at + 时间
at -l
atqat -c <job-id>atrm  <job-id>ctrl D/var/spool/at目录中/etc/at.{allow,deny}控制用户是否能执行at任务(白名单优先)
先寻找/etc/at.allow 文件,文件中的使用者才能使用 at ,没有在这个文件中的使用者则不能使用 at (即使没有写在at.deny 当中)
如果/etc/at.allow 不存在,就寻找 /etc/at.deny 这个文件,若写在这个 at.deny 的使用者则不能使用 at ,而没有在这个 at.deny 文件中的使用者则可使用 at 命令。如果两个文件都不存在,只有 root 可以使用 at 这个命令。(相当于一个空的/etc/at.allow文件)命令选项  | 含义  | 
|---|---|
-e  | 编辑计划任务 edit  | 
-l  | 查看计划任务 display  | 
-u  | 指定用户 user  | 
-r  | 删除计划任务 remove  | 
*  *  *  *  *  user-name command

0 1 * * * root cd /etc/data_rsync && /usr/local/Anaconda3/bin/python rsync.py 
表示 root 用户每天凌晨 1:00 进入到 /etc/data_rsync 文件夹执行 python 脚本
vvd 创建 crontabcrontab -e -u vvdcrontab -lu vvdvvd的 crontab 文件crontab -eu vvdcrontab -ru vvd-r 删除crontab,会删除整个文件,删除所有任务
systemctl restart cron.service/var/log/syslog  中看到 crontab 日志sudo grep CRON /var/log/syslog示例任务  | 含义  | 
|---|---|
45 4 1,10,22 * * /usr/bin/systemctl restart network  | 每月1、10、22日的 4:45 重启network服务  | 
10 1 * * 6,7 /usr/bin/systemctl restart network  | 每周六、周日的1:10重启network服务  | 
*/30 18-23 * * * /usr/bin/systemctl restart network  | 每天18:00至23:00之间每隔30分钟重启network服务  | 
3,15 8-11 */2 * * /usr/sbin/reboot  | 每隔两天的上午8点到11点的第3和第15分钟执行一次重启  | 
30 2 * * 7 /usr/bin/cp /etc/fstab /tmp/fstab-date “+\%F_\%T”  | 每周日凌晨2点30分,运行cp命令对/etc/fstab文件进行备份,存储位置为/backup/fstab-YYYY-MM-DD-hh-mm-ss  | 
0 4 1 1 * /usr/bin/systemctl restart smb  | 一月一号的4点重启smb  | 
0 23-0/1,1-7/1 * * * /usr/bin/systemctl restart smb 0 23,0,1,2,3,4,5,6,7 * * * /usr/bin/systemctl restart smb  | 晚上11点到早上7点之间,每隔一小时重启smb  | 
0 * * * * /usr/bin/systemctl restart smb  | 每一小时重启smb  | 
#!/bin/sh
echo "Start to update repository"
cd path-to-your-repository
git pull
git add -A
git commit -m add-new-data
git push
crontab -e
# 每 2 分钟更新一次仓库
 */2  *  *   *   * /home/vvd/update.shsudo systemctl restart cron.service
sudo grep CRON /var/log/syslog