Можно отправить входной текст запущенному процессу без запуска screen
утилиты или любой другой необычной утилиты. И это можно сделать, отправив этот входной текст в стандартный файл ввода процесса /proc/PID#/fd/0
.
Тем не менее, входной текст должен быть отправлен специальным способом для чтения процессом. Отправка введенного текста обычным write
методом файла не приведет к тому, что процесс получит текст. Это потому, что это добавит только к этому «файлу», но не запустит процесс для чтения байтов.
Чтобы запустить процесс для чтения байтов, необходимо выполнить IOCTL
операцию типа TIOCSTI
для каждого отправляемого байта. Это поместит байт в стандартную очередь ввода процесса.
Это обсуждается здесь с некоторыми примерами на C, Perl и Python:
https://unix.stackexchange.com/questions/48103/construct-a-command-by-putting-a-string-into-a-tty/48221
-
Таким образом, чтобы ответить на первоначальный вопрос, заданный почти 9 лет назад, заданию cron нужно было бы запустить небольшой служебный скрипт / программу, аналогичную примерам, которые люди написали для этого другого вопроса, который отправил бы строку «stop \ n» этому серверному процессу. в вопросе, отправив каждый из 5 байтов с помощью IOCTL
операции типа TIOCSTI
.
Конечно, это будет работать только на системах, которые поддерживают TIOCSTI
IOCTL
тип операции (например, Linux), и только от root
учетной записи пользователя, так как эти «файлы» в /proc/
«принадлежат» root
.