3

Мне часто приходится загружать, обновлять и создавать большие проекты, из-за чего между двумя командами существует длительный период ожидания. Проекты хранятся и используются на машине с Linux, и я подключаюсь к ней удаленно, используя PuTTY.

Ищите способ получить уведомление, когда команда выполнена, пока я продолжаю работать над чем-то другим.

Я не ожидаю подхода ниже, так как сама команда может ожидать ввода.

<command> && tput bel

Благодарю.

2 ответа2

1

PuTTY не знает, когда удаленная команда ожидает ввода. Что касается терминала (или клиента SSH), ввод всегда может быть отправлен. (Даже пытаться угадать, основываясь на показанном тексте, бесполезно, поскольку многие индикаторы прогресса неотличимы для компьютера по подсказкам ввода.)

Учитывая ваши требования, единственный вариант, который я могу придумать, - это библиотека LD_PRELOAD которая печатает звонок всякий раз, когда какая-либо программа пытается прочитать с устройства tty. Что-то вроде:

#define _GNU_SOURCE
#include <dlfcn.h>
#include <unistd.h>

ssize_t read(int fd, void *buf, size_t count) {
    static ssize_t (*real_read)(int fd, void *buf, size_t count);

    if (isatty(fd))
        write(fd, "\a", 1);

    if (!real_read)
        real_read = dlsym(RTLD_NEXT, "read");

    return real_read(fd, buf, count);
}

(Ну, это не работает для любого статически связанного двоичного файла, но достаточно близко.)

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

0

Как 90% -ное решение, вы можете сказать своей оболочке эхолотить, когда команда завершится. Например, в bash просто включите \a в свой PS1 .

Если вам нужно, чтобы команда перестала запрашивать ввод, то 99% -ное решение доступно в не-Linux Unixen: нажмите Ctrl-Y после выполнения вашей команды. Однако, не имея поддержки для этого, попробуйте поискать конфигурации для конкретной программы. Например, в Vim вы можете добавить norm \ к вашему .vimrc чтобы выводить звонок каждый раз, когда он запускается.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .