plink не вернется в командную строку

Я пытаюсь выполнить скрипт bash через plink. Скрипт выглядит примерно так:

echo "@ Starting process..."
./bin/process "process.cfg" &
disown %1
echo "@ Done!"

Когда я запускаю этот скрипт в терминале на Linux, все работает нормально. После "Готово!" строка я получаю командную строку (как и ожидалось).

Теперь, когда я запускаю этот скрипт через plink, вывод останавливается после того, как «Готово!» строка, но plink не вернется в командную строку и «зависнет» до +c.

Скрипт помещается в файл и дается для plink с параметром -m

Я пытался добавить «выход», «выход», «установить -e» в конце скрипта, но это не помогает. Также добавление -batch, -T или -N к команде plink не принесло успеха.

Есть какие нибудь идеи как это починить?


person user3252141    schedule 30.01.2014    source источник


Ответы (3)


Хорошо, кажется, мне пришлось отключить stdout/err от терминала. В обычном терминале это, конечно, не имело бы значения, но из-за этого plink оставался в состоянии «занято».

Итак, внутри моего сценария bash (который выполнял команду) мне пришлось изменить:

./bin/процесс "process.cfg" &

to:

./bin/процесс "process.cfg" /dev/null 2>&1 &

plink теперь возвращает правильное «завершенное» состояние в конце скрипта bash.

person user3252141    schedule 07.02.2014
comment
Спасибо - я боролся с аналогичной проблемой, пытаясь запустить WebLogic, размещенный в Linux, из сценария, размещенного в Windows. Перенаправление вывода startWebLogic.sh в /dev/null, похоже, исправило это. (проголосовать) - person andyb; 29.01.2015
comment
Отсутствует «›» перед /dev/null? - person Oliver Bock; 11.09.2015
comment
Эй, ребята, как сделать отключение/выход из plink после завершения моего удаленного скрипта? plink.exe -ssh домен -pw пароль /home/myscript.sh › output-deploy.txt - person Jose Vieira Neto; 23.11.2016

plink.exe -P PORT_NUM -v USERNAME@HOST_IP -pw PASSWD "COMMAND >/dev/null &"

  • & переместит ваш процесс в фоновый режим
  • > /dev/null позволяет вашей команде выполняться без вывода сообщений, заставляя stdout/stderr выводить данные на фиктивное нулевое устройство.

примечание: команда оболочки заключена в «двойные кавычки»

person Zahra    schedule 22.11.2014

Plink имеет параметр -batch, который отключает все интерактивные подсказки. Это может быть то, что вам нужно здесь, чтобы избежать зависания до Ctrl-C.

person Cyrille    schedule 30.01.2014
comment
Забыл упомянуть, что я уже пробовал -batch, -T, -N... не помогло. - person user3252141; 30.01.2014