我正在编写一个安装程序脚本,需要sudo
在 AWS RedHat 实例上测试它时运行它,因此不能直接运行root
。我想将日志写入文件以及屏幕上。没有什么比这更容易了,
我可以采用老式的>> /tmp/Solr_Install.log 2>&1
方法,在后台启动尾部进程:tail -f installer.log &
这种解决方案往往会使屏幕上的输出重复或增加三倍,所以我选择了一种更彻底的解决方案。
只需使用武力即可,2>&1 | tee -a /tmp/Solr_Install.log
使用此解决方案,我失去了 sudo 权限,并且脚本失败。
tail -f
疑问:为什么尾部会显示2-3次相同的行?(这与显示最后10行有关系吗?)
可以以某种方式修复此问题吗?
为什么我在 tee 时会丢失 sudo?
可以避免这种情况吗?
还有其他方法可以同时将日志材料放入文件并显示在屏幕上吗?
答案1
sudo
不是会话特有的权限。 sudo
是一个以提升的权限运行其他命令的命令。因此,只需tee
使用以下命令运行sudo
:
2>&1 | sudo tee -a /tmp/Solr_Install.log W