首先是command > file将标准输出重定向到file中, 2>&1是标准错误拷贝了标准输出,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中。
如果改成: command 2>&1 >file
2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file后输出才被重定向到file,但标准错误仍然保持在终端。
延伸阅读:
Shell标准输出、标准错误 >/dev/null 2>&1
如何让Linux定时任务crond以秒为单位执行(如每隔3秒)
经验教训:
打算在服务器上 每天晚上23:00 定时执行Python脚本,去备份MySql数据库,命令如下:
* 23 * * * python /var/www/html/crontab_python/back_db.py>/dev/null 2>&1
结果呢,每次备份都产生了 60份备份文件,仔细查看定时任务命令,发现在“分”的位置上,少加了个“0”,因为“*”表示该位置的任何一个值,修改如下:
0 23 * * * python /var/www/html/crontab_python/back_db.py>/dev/null 2>&1
0 4 * * * /usr/local/php/bin/php/usr/local/nginx/www/backup-db/backup_db.php 172.16.8.26>/dev/null 2>&1
0 4 * * * /usr/local/php/bin/php/usr/local/nginx/www/backup-db/backup_db.php 172.16.10.151>/dev/null 2>&1
Ubuntu使用crontab定时任务