Используя тройник, я теряю свои привилегии sudo

229
Lefty G Balogh

Я пишу установочный скрипт, и мне нужно запустить его, так sudoкак я тестирую его на экземплярах AWS RedHat, поэтому не могу напрямую перейти root. Я хочу записать журнал в файл, а также на экран. Нет ничего проще,

Я могу либо пойти в старую школу >> /tmp/Solr_Install.log 2>&1и запустить хвостовой процесс в фоновом режиме: tail -f installer.log &это решение имеет тенденцию дублировать или утроить выходные данные на экране, поэтому я выбрал решение «тройник-тоталлер».

Просто используйте силу силы, и 2>&1 | tee -a /tmp/Solr_Install.logс этим решением я теряю свои права sudo, и сценарий не выполняется.

Вопросы: почему хвост показывает одну и ту же линию 2-3 раза? (Это как-то связано с тем, что tail -fотображаются последние 10 строк?)

  • Можно ли это как-то исправить?

  • Почему я теряю свое sudo, когда я чаю?

  • Можно ли этого избежать?

  • Есть ли другой способ выбросить материалы журнала в файл и на экран одновременно?

1
Может быть, это может быть случай, который соответствует вашим потребностям http://unix.stackexchange.com/questions/61931/redirect-all-subfter-commands-stderr-using-exec Echoes_86 7 лет назад 0
Echoes_86, мне нужно просить прощения. Я дважды проверил и ваше решение, ну технически, решение @BatchyX работает. Я до сих пор не знаю, почему я теряю свое sudo mojo, но, по крайней мере, у меня есть рабочее решение. Lefty G Balogh 7 лет назад 0
Я рад, что вы нашли свое решение. Для меня подход (как я понимаю из вашего вопроса) `exec>> (tee" /tmp/Solr_Install.log ") 2> & 1` является лучшим для вас. Echoes_86 7 лет назад 0

1 ответ на вопрос

1
Stephen Rauch

sudoне является привилегией, специфичной для сессии. sudoэто команда, которая запускает другие команды с повышенными привилегиями Так что просто запустите ваш teeс sudo:

2>&1 | sudo tee -a /tmp/Solr_Install.log W 
Это не тройник, который не работает, это остальная часть сценария, который терпит неудачу из-за тройника. Пожалуйста, не одобряйте этот ответ как есть, без обид, потому что это не является удовлетворительным ответом. Lefty G Balogh 7 лет назад 0

Похожие вопросы