如何实时将命令行输出保存到文件

如何实时将命令行输出保存到文件

我编写了一个 bash 脚本,用于每天晚上 4 点左右备份我的电脑。备份完成后,我的系统将重新进入睡眠状态。

目前我使用| tee -a $LOGFILE来记录所有命令,但是记录不是实时的。当我的电脑进入睡眠状态时,它还没有写入文件,所以我需要唤醒我的电脑,然后才能看到 webdav 备份位置上的更改。

这非常烦人,因为我无法快速查找为什么它昨晚没有备份。

答案1

根据现有信息,这有点像是在黑暗中尝试,但是......如果脚本是发出返回睡眠状态的命令的脚本(哪一个?)问题可能是 stdio 缓冲。 所以我会

  1. 准备一个执行备份但不会进入睡眠状态的脚本,调用它bck_script

  2. 准备另一个让 PC 进入睡眠状态的脚本,将其调用sleep_script

使用以下方式安排第三个脚本

bck_script | tee $LOGFILE
sync
sleep 30
sleep_script 

... 睡眠可能有点过度了,但是好吧 --- 我真的不太信任sync网络或“智能”(读取奇怪缓冲的) SSD。

相关内容