Linux crontab

Brief

无论是做开发还是做运维的程序猿,crontab命令是必须用到的命令。

##目录介绍

  • /var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名。J在这里面改成自己的用户名,就能看到已经设置的crontab作业。

sudo cat /var/spool/cron/root
  • /etc/crontab 这个文件负责调度各种管理和维护任务。J就是一些配置而已。

sudo cat /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
  • /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。J就是不用设置启动时间,直接放在这些目录下,就能定时执行。

流程介绍

1.查看crontab定时任务

2.编辑定时任务【删除-添加-修改】

  • The & makes the command run in the background.

  • 在shell脚本中,默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入)、标准输出(输出到屏幕)、标准错误(也是输出到屏幕),它们分别对应的文件描述符是0,1,2 。

    • 1,对于下面两个命令其实效果一样。一般来说,"1>" 通常可以省略成 ">"。

      • ls GetDictData.py 1> test.out

      • ls GetDictData.py > test.out

    • 就是说指定1和2可以分别输出正确和错误的结果&2表示2输出通道,&1表示1输出通道。

      • ls a.txt b.txt 1>file.out 2>&1

      • 输出ls: b.txt: No such file or directory a.txt

    • 输出不只1和2,还有其他的类型,这两种只是最常用和最基本的。

  • 可以将/dev/null看作"黑洞"。它非常等价于一个只写文件. 所有写入它的内容都会永远丢失。而尝试从它那儿读取内容则什么也读不到。然而,/dev/null对命令行和脚本都非常的有用。

    • 禁止标准输出。cat $filename >/dev/null # 文件内容丢失,而不会输出到标准输出。

    • 禁止标准错误:2>/dev/null这样错误信息[标准错误]就被丢到太平洋去了。

  • 1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。 2>&1 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

实际例子

Reference

Last updated