捕获 gdrive 的所有屏幕输出

capture all screen output of gdrive

我有一台 Debian 机器和一个 google 驱动器同步工具 gdrive https://github.com/odeke-em/drive#traversal-depth

Google sync 工作正常,但命令仅在提示符下执行时才同步。所以我在 cron

中创建了一个同步脚本 运行
#!/bin/sh

PATH=$PATH:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

cd /media/hdd/google_drive

date=`date +'%Y%m%d'`

echo "--- "$date" ---" >> /var/log/drive_sync.log

drive pull -no-prompt >> /var/log/drive_sync.log

除一个问题外,脚本工作正常。它只记录一些命令输出。这是日志文件的示例。

--- 20161109 ---
Resolving...
--- 20161110 ---
Resolving...
--- 20161111 ---
Resolving...
--- 20161112 ---
Resolving...
Everything is up-to-date.
--- 20161113 ---
Resolving...
Everything is up-to-date.
--- 20161114 ---
Resolving...
Everything is up-to-date.
--- 20161115 ---
Resolving...
Everything is up-to-date.
--- 20161116 ---
Resolving...
Everything is up-to-date.

问题是当 运行 出现提示时它不会记录以下信息。

user@name-pc:~/google_drive $ drive pull -no-prompt
Resolving...
+ /#transfer/test.txt
M /documents/downloads.xlsx
Addition count 1
Modification count 1 src: 10.96KB dest: 10.96KB

所以你看到关于同步文件的信息并没有出现在日志中,只有 "Resolving.." 行出现在日志中,为什么文件计数或行“+ / #transfer/test.txt”和"M /documents/downloads.xlsx".

所以我的问题是为什么输出重定向不起作用并将屏幕上的所有文本重定向到文件,而只有我在日志中向您展示的行。

关于如何记录命令的所有信息输出的任何建议都会有所帮助。 我尝试了各种 stderr 和 stdout 重定向,tee 命令,但从未将整个输出结果写入日志文件。

答案是脚本命令:

script -q -c "drive pull --no-prompt" -a /var/log/drive_sync.log