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

Использование nohup, когда требуется первоначальный ввод

В системе linux есть ли способ использовать nohup, когда процесс, для которого не требуется huped, требует ввода, например, команду rsync, которая требует ввода пароля, но затем будет успешно работать сама по себе?

Если команда не требует написания сценария, вы можете сделать это следующим образом:

  1. запустить его на переднем плане
  2. приостановить (CTRL + Z)
  3. откажитесь от него, чтобы он не закрывался при закрытии оболочки (disown -h% jobid)
  4. возобновить работу в фоновом режиме (bg% jobid)

Вы хотите смотреть на экран. Screen создаст для вас сеанс оболочки, который вы можете отсоединить, а затем снова подключить позже. Пытаться:

 # screen rsync -a directory server@directory

Вы можете ввести свой пароль, убедиться, что он работает должным образом, а затем нажать «ctrl-a», а затем «d». Теперь вы должны быть отключены от сеанса экрана. Если хочешь посмотреть, как дела, беги

 # screen -r

и вас следует снова подключить. 'ctrl-a' 'd' снова отсоединит вас.

Когда команда завершится, экран должен выйти.

Если возможно, для конкретного экземпляра выполнения команды rsync может быть лучше настроить аутентификацию по ключу SSH без пароля, а не пытаться автоматически вводить пароль в rsync.

Некоторым модулям удаленного демона может потребоваться аутентификация. В этом случае при подключении вы получите запрос на ввод пароля. Вы можете избежать запроса пароля, установив для переменной среды RSYNC_PASSWORD пароль, который вы хотите использовать, или используя параметр --password-file. Это может быть полезно при написании сценария rsync.

нашел это на странице руководства

Помимо того, что было сказано выше, наиболее общим решением может быть обернуть команду в сценарий, который принимает входные данные из файла и передает их (возможно, используя каналы, или ожидайте, или что-то в этом роде). Сам сценарий-оболочка - это обычная команда, которая, конечно, не требует ввода.