Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
当我们添加 * * * * * myTask.sh 2>&1 >> /var/log/myTask.log到 crontab 时,所有日志都输入到myTask.log但是,我想知道是否有任何方法可以提供备用位置(即使它是/dev/null),以便如果由于某种原因无法访问该位置(由于删除或权限)作业不应受到影响。
* * * * * myTask.sh 2>&1 >> /var/log/myTask.log
myTask.log
/dev/null
请让我知道我们是否可以做到这一点。
一个想法是sponge从moreutils包中使用。也就是说,sudo apt-get install moreutils,那么:
sponge
moreutils
sudo apt-get install moreutils
* * * * * myTask.sh 2>&1 | sponge /var/log/myTask.log
程序海绵吸收它的所有输入,然后只在最后写入。这意味着在您的程序完成之前不会检查文件的权限或其他任何内容。不利的一面是,海绵将消耗尽可能多的内存来缓冲其输入,因此如果您的程序打印很多,这可能是不可取的。