определить процесс, отправляющий сигнал сценарию оболочки

На этот вопрос уже был дан ответ, и я не могу комментировать, потому что у меня пока недостаточно репутации. Но то, что вы ищете, это ciwв vim.

В emacs ближе всего к этой комбинации я подошел:

M-b M-d

Это возвращает к началу слова, на котором находится курсор, а затем удаляет слово.

2
24.06.2020, 21:08
1 ответ

То, что вы хотите, невозможно. Процесс не может точно знать, какой процесс отправил ему сигнал :, если несколько процессов отправят один и тот же процесс одному и тому же сигналу в течение достаточно короткого промежутка времени, получатель увидит только один сигнал.

Даже если бы вы знали, какой процесс отправил сигнал, у вас может не быть разрешения на запись в стандартный вывод отправителя.

Разумный способ сделать то, что вы хотите, — заставить процесс прослушивать сокет Unix. Когда в этом сокете есть соединение, запишите информацию о ходе выполнения в этом сокете. Пусть другой конец позаботится о том, чтобы напечатать его там, где он хочет.

Для запроса статуса можно использовать утилиту socket, которая есть в некоторых дистрибутивах, или более мощную, но и более сложнуюsocat.

socket -r./my-program-status              # If the socket is a filesystem domain socket in the current directory
socat UNIX-CLIENT:my-program-status -      # If the socket is a filesystem domain socket in the current directory
socat ABSTRACT-CLIENT:my-program-status -  # If the socket is an abstract domain socket in the current directory

Сервер -боковая проверка -концепции -:

while date | socket -q -s./status; do echo.; done

Другой подход заключается в том, чтобы ваша программа периодически записывала свое состояние в файл.

0
18.03.2021, 23:24

Теги

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