Захватить весь вывод экрана gdrive
У меня есть компьютер с Debian и gdrive для синхронизации с приводом Google https://github.com/odeke-em/drive
Синхронизация Google работает нормально, но команда синхронизируется только при выполнении из приглашения. Поэтому я создал скрипт синхронизации, который запускается в 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, но так и не получил весь вывод в файле журнала.
1 ответ
Ответом была команда сценария:
script -q -c "drive pull --no-prompt" -a /var/log/drive_sync.log