plink няма да се върне към командния ред

Опитвам се да изпълня bash скрипт чрез plink. Скриптът изглежда по следния начин:

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

Когато изпълня този скрипт в терминал на linux, всичко работи добре. След "Готово!" ред получавам команден ред (както се очаква).

Сега, когато стартирам този скрипт чрез plink, изходът спира след "Готово!" ред, но plink няма да се върне към командния ред и "увисва" до +c.

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

Опитах да добавя 'logout', 'exit', 'set -e' в края на скрипта, но не помага. Също така добавянето на -batch, -T или -N към командата plink не доведе до успех.

Някакви идеи как да поправя това?


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


Отговори (3)


Добре, изглежда трябваше да отделя stdout/err от терминала. В нормален терминал това няма да има значение, разбира се, но plink остава в състояние "заето" поради това.

Така че в моя bash скрипт (който изпълни командата) трябваше да променя:

./bin/process "process.cfg" &

to:

./bin/process "process.cfg" /dev/null 2>&1 &

plink сега връща правилното състояние "завършен" в края на bash скрипта.

person user3252141    schedule 07.02.2014
comment
Благодаря - борех се с подобен проблем, опитвайки се да стартирам Linux хостван WebLogic от хостван 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