代码之家  ›  专栏  ›  技术社区  ›  Domagoj Ulamec

捕获gdrive的所有屏幕输出

  •  0
  • Domagoj Ulamec  · 技术社区  · 8 年前

    我有一台Debian机器和一个谷歌硬盘同步工具gdrive https://github.com/odeke-em/drive#traversal-depth

    #!/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
    

    因此,您可以看到有关同步文件的信息并没有在日志中结束,只有“解析…”行在日志中终止,为什么文件计数或“+/#transfer/test.txt”和“M/documents/downloads.xlsx”行没有结束。

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

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

    1 回复  |  直到 6 年前
        1
  •  0
  •   Domagoj Ulamec    8 年前

    答案是脚本命令:

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