Завершение работы после закрытия программного обеспечения

msgattrib отображать цвета только при выполнении с реального терминала. Вы можете использовать команду unbuffer, которая является частью expect, чтобы заставить msgattribдумать, что она выполняется из реального терминала, а затем использовать опцию -rдля обработки экранов ANSI в less:

.
unbuffer msgattrib --untranslated pl.po | less -r

Вы можете сделать это в любой команде, производящей цвета. (Экранирующие коды ANSI )на основе существования tty.

0
27.10.2019, 00:57
1 ответ

Стоит попробовать сделать так, как вы предложили. Вот несколько советов на случай, если это не работает должным образом:

Использование псевдонимов.bash _

Обычно .bash_aliasesне считается файлом автозапуска. «Чистый» способ сделать это — добавить модуль systemd, но я понимаю, что это может быть слишком сложно для рассматриваемой проблемы.

Вы говорите, что "закрыли" Streamlink --за то, что предложили лучший способ его автоматического запуска, может быть интересно, как именно взаимодействие с streamlink (, например. закрытие )работает?

Использование &&

Синтаксис сценария оболочки &&означает :Запустить вторую команду, если первая завершилась успешно. Если вы используете обычное сочетание клавиш, такое как CTRL -C, для остановки потоковой связи, это может означать, что она фактически завершается с кодом ошибки. В этом случае запись ;, возможно, была бы лучше (выключение независимо от кода возврата):

someprogram; shutdown now

Отключение разрешений на использование

Существует еще одно предостережение, которое следует учитывать. :В системах UNIX завершение работы обычно считается действием, которое может выполнять только системный администратор. В последних системах Linux существуют различные механизмы, обеспечивающие завершение работы в качестве обычного пользователя, если другие пользователи не вошли в систему и т. д. Я рекомендую проверить (, прежде чем добавлять его в автозапуск ), если shutdown nowкоманда работает как положено. Если это не работает, возможно, потребуется настроить sudo, чтобы пользователь мог запустить завершение работы.

Альтернативное решение

Наконец, добавление завершения работы непосредственно после запуска программы, как описано в этом вопросе, обычно работает хорошо. В случае более сложного приложения (, например. запускает другие процессы и завершает работу до того, как все они завершатся ), может быть интересно отслеживать существование процесса с помощью отдельного сценария и запускать завершение работы, когда он отсутствует.

0
28.01.2020, 03:10

Теги

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