第一种办法:
在crontab末尾加上
>/dev/null 2>&1.
或者
&> /dev/null
| 类型 | 文件描述符 | 默认情况 | 对应文件句柄位置 |
|---|---|---|---|
| 标准输入(standard input) | 0 | 从键盘获得输入 | /proc/slef/fd/0 |
| 标准输出(standard output) | 1 | 输出到屏幕(即控制台) | /proc/slef/fd/1 |
| 错误输出(error output) | 2 | 输出到屏幕(即控制台) | /proc/slef/fd/2 |
1. >/dev/null
这条命令的作用是将标准输出1重定向到/dev/null中。/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。那么执行了>/dev/null之后,标准输出就会不再存在,没有任何地方能够找到输出的内容。
2. 2>&1
这条命令用到了重定向绑定,采用&可以将两个输出绑定在一起。这条命令的作用是错误输出将和标准输出同用一个文件描述符,说人话就是错误输出将会和标准输出输出到同一个地方。
linux在执行shell命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令,所以>/dev/null 2>&1的作用就是让标准输出重定向到/dev/null中(丢弃标准输出),然后错误输出由于重用了标准输出的描述符,所以错误输出也被定向到了/dev/null中,错误输出同样也被丢弃了。执行了这条命令之后,该条shell命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中
例如
0 1 5 10 * /usr/local/php7/bin/php /home/project/think51/think Task >/dev/null 2>&1
0 1 5 10 * /usr/local/php7/bin/php /home/project/kona/think51/think Task &> /dev/null
第二种办法:
另编辑crontab,crontab -e 在第一行加入
MAILTO=""
保存退出

本文介绍如何通过两种方法配置cron任务,使其在执行时不输出任何信息到控制台或文件中,包括使用重定向和邮件配置。
1684

被折叠的 条评论
为什么被折叠?



