Linux的crontab简单使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wenqiang1208/article/details/82823283

Linux下的crontab命令:可以用来定时的去跑一些脚本或者程序

crontab的命令

crontab [-u user] file crontab [-u user] [ -e | -l | -r ]
  • -u user:用来指定某个用户
  • file:file 是你编写的crontab的任务列表。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
  • -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
  • -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
  • -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
  • -i:在删除用户的crontab文件时给确认提示

注意:-r,-i 还是尽量不要执行

最常用的就是crontab -l:列出当前的crontab 任务
crontab -e: 编辑crontab任务

crontab的文件格式

分 时 日 月 星期 要运行的命令
[* * * * * ]
第1列分钟0~59
第2列小时0~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~7(0和7表示星期天)
第6列要运行的命令

# 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
  • “*” 代表取值范围内的数字
  • “/” 代表”每”
  • “-” 代表从某个数字到某个数字
  • “,” 分开几个离散的数字

举例子
1、每晚的21:30重启smb

30 21 * * * /etc/init.d/smb restart

2、晚上11点到早上7点之间,每隔一小时重启smb

0 23-7 * * * /etc/init.d/smb restart

3、每一小时重启smb

* */1 * * * /etc/init.d/smb restart

ps:注意 2和3的区别 ,第一个秒 是 星号* 和0

4、在上午8点到11点的第3和第15分钟执行

3,15 8-11 * * * myCommand

运行脚本的环境变量(py或者 shell脚本)

1、脚本中涉及到的文件路径 一定要写全局路径

2、脚本执行要用到java或其他环境变量时,通过source命令引入环境变量

编写一个file文件中,存放环境变量  然后在脚本中source 引入该文件

3、直接在crontab 中引入环境

  举例子:项目全局路径,虚拟环境的全局路径, 执行脚本的全局路径
```
0 */6 * * *  PYTHONPATH=项目的全局路径 /xxx/env/bin/python test.py   && echo 'success at' `date` >> /xxxx/cronjob/hubble.log 2>&1
 ```

输出日志

“/dev/null 2>&1”表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,这样日志输出问题就解决了。

注意事项

crontab 完成后 不会立即启动,一般2分钟之后才有效

猜你喜欢

转载自blog.csdn.net/wenqiang1208/article/details/82823283