Вопрос Как я могу создать окно консоли, только если команда, которую я запускаю, производит вывод? [закрыто]


Я запускаю следующие регулярные интервалы, чтобы синхронизировать мой ноутбук с моим рабочим столом. Когда нечего делать, и поэтому нет выхода из унисона, я хочу, чтобы он заполнился молча; когда необходимо выполнить синхронизацию, я хочу, чтобы она всплывала в терминале, поэтому я могу принимать или отклонять изменения по мере необходимости.

В настоящее время он всегда всплывает окно независимо от меня, и меня беспокоят случайные пустые терминалы, появляющиеся и исчезающие. Вот команда, которую я запускаю автоматически каждые 30 минут или около того:

ps -e | grep -i unison || xterm -e 'unison -auto -perms=0 -terse Local_Sync'

Может ли кто-нибудь подумать о лучшем способе этого?


2
2017-08-22 22:12


происхождения


Я не знаком с унисон, но -auto означает «автоматически принимать действия по умолчанию» (согласно странице руководства). Что нужно принять или отвергнуть? Если взаимодействие с пользователем не требуется, не запускайте его в xterm, и он не откроет терминал. Возможно, вас тоже интересует опция -batch.
Действительно, это так. Если бы у меня было полное доверие к синхронизации файлов, я бы использовал авто и никогда не должен всплывать! К сожалению, я просто немного параноик, что однажды утром я проснусь, чтобы обнаружить, что пустой каталог был «авто» синхронизирован по всем моим другим копиям, поскольку я использую синхронизацию как способ хранения резервных копий и люблю подтвердите, что сделает унисон. В конце концов, я мог бы пойти таким образом, хотя я не могу найти вариант с сухим пробегом в унисон (хотя rsync имеет один). Спасибо за ваши предложения. - themuddler


ответы:


Вам, вероятно, придется вывести его в скрипт, где вы можете передать вывод переменной, проверьте, есть ли что-нибудь в этом var, а затем эхо в xterm, если у него есть контент.


3
2017-08-22 22:20



Вот вывод, о котором я говорю: «local mud-desktop deleted ----> test. Продолжайте распространять обновления? []« Поэтому я могу передать его переменной и проверить, а затем повторить его. Проблема в том, что он тоже хочет ввода от меня, и просто повторение его вывода не позволит, что я не думаю. Возможно, я мог бы запустить его в режиме «имитации» и протестировать вывод, а если он есть, запустите его правильно. Это приведет к двум проверкам обновлений, но только в случаях, когда необходимо выполнить обновление. Однако не удается найти режим «sim» в документах. Есть идеи? - themuddler


Я согласен с Оли, было бы намного проще сделать в скрипте, который вы можете сделать cron job каждые 30 минут

man crontab

1
2017-08-23 07:45



Спасибо, используя работу cron, чтобы запустить ее как однострочный «скрипт», но в этом нет ничего умного. Мне нужно выяснить, как заставить унисон делать «сухой ход». Время снова читать страницы человека! - themuddler