У меня есть простой скрипт, который принимает команды для запуска, остановки, перезапуска и возврата статуса игрового сервера (SA: MP). Сайт предоставляет решение для использования этой команды:
./samp03svr &
, которая работает все хорошо и прекрасно, однако, когда скрипт выполняет это, он держит и ждет ввода пользователя (нажатием ENTER), который затем продолжает выполнение скрипта.
Кажется, я не могу найти способ сохранить выполнение сценариев, не дожидаясь ввода пользователя. Я искал около 5 часов сейчас и попробовал по крайней мере 20 разных вещей, включая экран. Работающий экран работает просто не обеспечивает то, что я ищу. Сценарий также собирает идентификатор процесса сразу после этого, например, так:
mv ./server_log.txt ./logs/server_$NOW.txt
mv ./mysql_log.txt ./logs/mysql_$NOW.txt
./samp03svr <<< echo &
pid=$!
echo $pid > $pidf
echo -e "The server has been started successfully"
Сообщение, ожидающее возврата, выглядит так:
Started server on port: 7777, with maxplayers: 30 lanmode is OFF.
Сервер работает под управлением 64-разрядной версии Ubuntu 12.04.
Заранее спасибо.
Поскольку samp03svr выходной текст, необходимо перенаправить вывод к пустому указателю
./samp03svr > /dev/null 2>&1 &
Можно попытаться записать newline
символ (\n
) к стандартному входу прежде, чем выполнить сервер.
Это - пример, которые пишут "нечто", и передает его по каналу к std.in следующей команды
echo Так в Вашем случае, который Вы могли сделать
echo пример заключения в кавычки Новой строки, взятый от здесь .
\n' | ./samp03svr
пример заключения в кавычки Новой строки, взятый от здесь .
foo' | while read x ; do echo $x ; done
Так в Вашем случае, который Вы могли сделать
echo пример заключения в кавычки Новой строки, взятый от здесь .
\n' | ./samp03svr
пример заключения в кавычки Новой строки, взятый от здесь .
Можно ли вставить этот сценарий где-нибудь или часть сценария, где это пытается считать клавишу ENTER.
Также попытка это, принимая его ожидающий новой строки:
./samp03svr < < <
echo
&