菜鸟国际电子游戏首页 > 文章中心 > 正文

crontab 将脚本错误写入指定日志文件-电子游戏app下载



如果crontab所执行的命令有输出内容的话,该输出内容是以邮件形式发送给用户,内容存储在邮件文件中

/var/spool/mail/

如果命令输出内容较多,或者命令执行比较频繁(如每分钟一次),会使邮件文件不断追加内容,文件会越来越大。而邮件文件一般存放在根分区,根分区一般相对较小,所以会造成根分区写满而无法登录服务器。

不输出任何内容
*/5 * * * * /dosomething.sh &>/dev/null 2>&1

将正确和错误日志都输出到 /tmp/dosomething.log
*/1 * * * * /dosomething.sh > /tmp/dosomething.log 2>&1 &

只输出正确日志到 /tmp/dosomething.log
*/1 * * * * /dosomething.sh > /tmp/dosomething.log & 等同于 */1 * * * * /dosomething.sh 1>/tmp/dosomething.log &

只输出错误日志到 /tmp/dosomething.log
*/1 * * * * /dosomething.sh 2> /tmp/dosomething.log &


在shell中,每个进程都和三个系统文件相关联:
0:表示键盘输入(stdin)
1:表示标准输出(stdout),系统默认是1
2:表示错误输出(stderr)

所以这里 2>&1 的意思就是将标准错误也输出到标准输出当中。

> 就相当于 1> 也就是重定向标准输出,不包括标准错误。通过 2>&1,就将标准错误重定向到标准输出了,再使用 > 重定向就会将标准输出和标准错误信息一同重定向。如果只想重定向标准错误到文件中,可以使用 2> file。

command >/dev/null 2>&1 & == command 1>/dev/null 2>&1 &

1)command:表示shell命令或者为一个可执行程序
2)>:表示重定向到哪里
3)/dev/null:表示linux的空设备文件
4)2:表示标准错误输出
5)&1:&表示等同于的意思,2>&1,表示2的输出重定向等于于1
6)&:表示后台执行,即这条指令执行在后台运行

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

这条命令的意思是在后台执行这个程序,并将错误输出2重定向到标准输出1,然后将标准输出1全部放到 /dev/nul l文件,也就是清空.
所以可以看出" >/dev/null 2>&1 "常用来避免shell命令或者程序等运行中有内容输出。


转载请注明出处:

0

相关文章