Как отправить часть данных через канал/файл и позже в интерактивном режиме?

Проблема проста, Вы используете OpenSuse 12.1, какой использование systemd вместо Вашей классической System V загружают систему.

Для установки нового сервисного места создают следующий файл в/etc/systemd/system/myprogname.service

[Unit]
Description=My progname service file

[Service]
ExecStart=/home/bits/MyProgram

[Install]
WantedBy=multi-user.target

Aftwards выполняется systemctl daemon-reload и systemctl start myprogname.service

Если Вы хотите автоматически перезапустить MyProgname, необходимо добавить

Restart=restart-always

к сервисному разделу.

3
22.07.2013, 00:21
3 ответа

Можно также сделать, это без использования ожидает:

{ echo foo ; cat ; } | command
4
27.01.2020, 21:10

expect инструмент для этого задания:

#!/usr/bin/expect -f
spawn program
expect "I'm ready for input"
send "command 1\r"
expect "I'm ready for input"
send "command 2\r"
# ...
send "command last\r"
interact

interact управляйте управлением возвратами пользователю.

3
27.01.2020, 21:10

Можно использовать rlwrap для взаимодействия с программой. Rlwrap предоставляет строчный редактор на основе readline библиотеки, тот же тот удар использование. Это обычно не столь хорошо, как строчный редактор, предоставленный программами, которые действительно обеспечивают один (например, Вы не получите окраски синтаксиса или завершения), но это намного более хорошо, чем терминальный интерфейс по умолчанию, который понимает только клавишу Backspace.

rlwrap -P 'some_commands' program

Текст передается во входной буфер, но не отправляется в программу, таким образом, необходимо будет нажать Enter после запуска программы. Целый текст передается как единственная строка. Это может содержать новые строки.

2
27.01.2020, 21:10

Теги

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