Ubuntu的计划任务

作者: Roger_Hwong | 来源:发表于2018-07-18 13:06 被阅读3次

因为最近倒腾着Ubuntu,但是想着每天都要执行:

sudo apt update
sudo apt upgrade

来更新自己的软件,就有点烦。而且经常忘记。所以这个时候就发现了Crontab这种好用的软件。(懒癌患者救星


crontab相关文件的位置

  • /var/spool/cron/crontabs:存放着每个用户的crontab任务,各个文件以用户名命名。
  • /etc:存放着不同重复时间的计划任务的目录(如cron.daily,cron.weekly,每个目录下存放要执行的crontab文件或者脚本。

crontab基本命令

  • crontab -e:编辑当前用户的crontab任务,当该用户不存在crontab任务时新建一个文件
  • crontab -l:列出当前用户的crontab任务。
  • crontab -r:删除当前用户的crontab任务文件。
  • crontab -u <user>:指定某一用户的crontab任务文件。

新建自己的计划任务

我想着怎么新建一个自动执行sudo apt update的任务

开始踩坑填坑之路。。

第一步,新建自己的任务文件。

crontab -e

一开始会让你选择编辑器,我选了nano,因为它提示最简单:)

然后看着这个文件,有点头大,然后去找谷歌问了一下。

一条具体任务的格式是这样的:

分钟 小时 日期 月份 周几 命令

字段 描述 允许的值
分钟 一小时内的第几分 0-59
小时 一天里的第几个小时 0-23
日期 一个月的第几天 1-31
月份 一年的第几个月 1-12
周几 一周的第几天 0-7(0和7都是星期天)
命令 命令 任何可以被执行的命令

举一个例子:我想在每天早上10点钟的和晚上10点钟的时候执行updateupgrade命令

0 10,22 * * * sudo apt update
1 10,22 * * * sudo apt upgrade

其中每个字段用空格隔开,然后为了两个命令的先后顺序,一个设置了0分的时候,一个设置了1分的时候。

逗号隔开的时间都会执行该任务,也就是10点和22点的时候,任务都会执行。

*表示每天或者每小时,每个月都会执行

现在来查看我的计划任务创建了没,用命令crontab -l

▶ crontab -l
# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
# 
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').# 
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# 
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command

0 10,22 * * * sudo apt update
1 10,22 * * * sudo apt upgrade

说明已经创建成功了,但是在实际测试后,通过查看日志的方式发现这两条任务。。。

写的不对

写的不对

写的不对

因为在crontab里面直接执行sudo命令时无效的。

下面是强烈推荐:

想要在crontab里面执行root权限的命令,建议在创建任务时就使用root权限,如:

sudo crontab -e

将其中的任务改成:

0 10,22 * * * apt update
1 10,22 * * * apt upgrade

这是安全保险的一种方法。

不推荐的做法:

在crontab里面执行sudo命令。

注释/etc/sudoersDefaults requiretty这一行。

因为sudo默认需要tty终端,而crontab里的命令实际是以无tty形式执行的。

这么做,你的密码会以明文的形式存在在文件中,这将存在安全隐患。

@hourly echo “password” | sudo -S apt update

这里再提一下,如何查看日志

可以直接

sudo service cron status

查看最近的几条日志信息。

另一种方式,查看/var/log/syslog文件,这里面包含了系统里面的(应该是所有的)日志吧(还没研究过)

如果想只看crontab的日志,可以用一下命令

grep CRON /var/log/syslog

最后一定要记得

一定要记得

记得

sudo service cron start

参考

Linux 计划任务之crontab

Linux crontab下关于使用date命令和sudo命令的坑

Linux之crontab定时任务

如何查看crontab的日志记录

How to run a cron job using the sudo command

Where is the cron / crontab log?

相关文章

  • Ubuntu的计划任务

    因为最近倒腾着Ubuntu,但是想着每天都要执行: 来更新自己的软件,就有点烦。而且经常忘记。所以这个时候就发现了...

  • Ubuntu 计划任务--cron的介绍

    cron是一个Linux下的后台进程,用来定期的执行一些任务 编辑计划任务,使用下面这个命令即可 crontab ...

  • ubuntu下的定时器编写

    ubuntu下的定时器编写 一、cron简介 在Linux系统中,计划任务一般是由cron承担,我们可以把cron...

  • 计划任务(定时任务)

    计划任务分为一次性计划任务与长期性计划任务。 一次性计划任务 长期性计划任务 一次性计划任务 长期性计划任务 cr...

  • Ubuntu更换默认编辑器为vim

    在ubuntu下,首次编辑crontab计划任务的时候,会提示让选择编辑器。由于对nano编辑器不是很熟悉,若是选...

  • 20.Linux中的计划任务

    Linux中的计划任务At单次执行计划任务cron 计划任务的使用计划任务:在某个时段自动执行某个任务。 Linu...

  • Linux定时任务 day24

    1.计划任务基本概述2.计划任务时间管理3.计划任务编写实践4.计划任务如何调试 一、计划任务基本概述 1.什么是...

  • 十二、计划任务、日志轮转

    计划任务 计划任务分为一次性和循环性的计划任务 一、一次调度执行-----at 作用: 计划任务主要是做一些周期...

  • 计划任务服务程序

    [TOC] 计划任务服务程序 计划任务分为以下两种一次性计划任务:今晚11点30分开启网站长期性计划任务:每周一的...

  • 开启计划任务

    Linux 开启计划任务 开启计划任务(指定某个文件在什么时间段启动运行) 1.开启计划任务: service c...

网友评论

    本文标题:Ubuntu的计划任务

    本文链接:https://www.haomeiwen.com/subject/mssopftx.html