Intereting Posts
Создание пользователя во время аутентификации Как я могу запустить irb из сценария bash, выполнить некоторые команды, а затем передать сеанс irb на консоль? Почему все приложения переходят в папку «Другие» приложений в Gnome Shell 3.8? Измените пароль для многих учетных записей одновременно в Gnome Keyring Установите переменную окружения для всех оболочек tmux при перезапуске gnome-сессий virt-manager error "format = dir: 'dir' недопустимый формат" при создании qemu VM с ISO Как использовать pulseaudio для сетевого потока с Raspbmc (Kodi)? Может ли сценарий bash подключаться к файлу? Потоковая передача всего локального аудио на сервер Icecast Unix system ("unzip archive.zip") Извлечение ZIP-файлов lookbehind и использовать его с grep в Vi? Как определить, действительно ли я нахожусь в символической ссылке из командной строки? Невозможно изменить разрешения файлов / каталогов в chrooted файловой системе Как создать несколько устройств в подкаталоге / dev / (драйвер ядра) я не получаю ipv6. Почему я не могу ping ipv6.google.com?

«At» (пакетная) задание + диалог = ничего

Цель: иметь возможность получить «инфобокс» для открытия в терминале через некоторое время; стиль будильника, (в Linux-окне Debian). Однако:

> at now + 3 min dialog --infobox "Time to attend to matters\!" 6 33 

не производит выход. и системный адрес электронной почты, в котором говорится: «Ошибка открытия терминала: неизвестно». Таким образом, мы префикс диалога с некоторыми относящимися к окружающей среде материалами, которые делали трюк в прошлом, что команда после «at» теперь выглядит так:

 TERM=linux DISPLAY=":0.0" dialog --infobox "Seek ye the truth\!" 6 33 

Теперь единственное, что есть, – это системное письмо, заполненное escape-последовательностями, которое, я думаю, является результатом самого диалога? Как можно получить диалог, чтобы хорошо играть с «на»? (Благодарю!)

at и cron – инструменты для запуска команд без присмотра. Плановая команда может быть запущена, когда сеанс пользователя не существует или когда пользователь вошел в систему на другом терминале, поэтому демона atd считывает стандартный вывод команды и отправляет его пользователю по электронной почте. Когда пользователь хочет сделать что-то еще, он должен перенаправить стандартный вывод. Но перенаправление на пользовательский терминал довольно сложно, потому что команда должна каким-то образом определить терминал.

Если вы хотите что-то отобразить после задержки, попробуйте что-то вроде

 (sleep 10 && /bin/echo "game over") & 

Команды, использующие dialog , не работают, потому что не существует терминала (tty), связанного с процессом at . Подобно cron , at предназначен для неинтерактивной среды. Поскольку для взаимодействия с dialog не существует терминала, установка TERM не помогает.

Если вы вошли в систему (и у вас есть X), вы можете сделать dialog в отдельном терминале. Например:

 at now -f foo 

где foo

 xterm -display :0 -e dialog --msgbox "Seek ye the truth!" 6 33 & 

работает достаточно хорошо:

диалог запускается из сценария

но добавляет несколько изменений:

  • инфобокс будет мигать на экране и уходить слишком быстро. Вместо этого используйте msgbox
  • не ждите в задании at / batch для его завершения: используйте "&"

Если вам нужен ответ из dialog , вы должны иметь в виду, что он обычно записывает текстовый интерфейс в стандартный вывод и отвечает на стандартную ошибку. Вы можете отменить это (упростите скрипты) с помощью опции --stdout . (zenity не поддерживает эту опцию, поэтому вы можете захотеть приспособиться к обходному сценарию).

Дальнейшее чтение:

  • Корпус коммутатора не работает в Shell (показывает, как работать с ограничениями zenity)
  • at, batch, atq, atrm – очередь, проверка или удаление заданий для последующего выполнения
  • диалог – отображать диалоговые окна из сценариев оболочки
  • zenity – отображение диалогов GTK +