Назад | Перейти на главную страницу

linux + запустить скрипт в другой оболочке, потому что скрипт застрял - не вернуться в приглашение Linux

На моей Linux-машине есть двоичный скрипт (называемый transferNames.bin)

Проблема в том, что когда я запускаю transferNames.bin с зависшим сценарием & и не возвращаюсь к приглашению Linux «#», даже если я жду 1 день или более (поэтому я не могу продолжить работу на своем Linux, потому что он завис) Пример:

  [root@linux1 tmp]# ./transferNames.bin &  
                     Transferring..

также различный способ:

  [root@linux1 tmp]# ( /tmp/transferNames.bin ) &  
                     Transferring..

примечание - скрипт transferNames.bin работает нормально, и я не могу его редактировать

Мой вопрос, пожалуйста, посоветуйте, могу ли я запустить ./transferNames.bin &
на другой оболочке - как это сделать?

Чтобы избежать застревания? Или любое другое решение для запуска ./transferNames.bin и в другой оболочке? или любое другое мнение?

Я думаю, что ваш скрипт ожидает чего-то от стандартного ввода, как сказал stew, и поэтому он приостанавливается, когда вы запускаете его с помощью &, потому что в фоновом режиме стандартный ввод закрывается оболочкой.

Если вам нужно запустить этот сценарий на сервере и сделать что-нибудь еще с этой оболочкой или просто выключить компьютер и пойти домой, вы можете попробовать программу SCREEN. Он присутствует в большинстве дистрибутивов Linux, и вы можете использовать его следующим образом:

screen

(откроется новая оболочка)

/tmp/transferNames.bin

Скрипт запустится как обычно. Теперь вы можете нажать эту комбинацию клавиш: ctrl-a + d. И вы будете "отключены" от ЭКРАНА. Теперь вы можете выйти из системы и вернуться домой, скрипт по-прежнему будет работать. Когда вы вернетесь и захотите проверить вывод скрипта, вы войдете на сервер и запустите эту команду:

screen -r

это будет повторно подключено к этому сеансу SCREEN, как будто ничего не произошло.

Надеюсь это поможет