The shell builtin you're looking for is disown
, which re-parents backgrounded jobs to init
so that the script can exit leaving them safely in the background. You probably want to redirect output to /dev/null
(or a log file) in order to avoid getting output in the shell after starting the script.
ssh hostname 'command' &>/dev/null &
disown
Разве wait
не заставляет ваш скрипт эм-ждать? На странице руководства ...
подождите [n ...] Дождитесь завершения каждого указанного процесса и верните его статус завершения. Каждый n может быть идентификатором процесса или заданием. катион; если задана спецификация задания, ожидаются все процессы в конвейере этого задания. Если n не указано, все Ожидаются активные в настоящее время дочерние процессы, и статус возврата равен нулю. Если n указывает несуществующий процесса или задания, статус возврата - 127. В противном случае статус возврата - это статус выхода последнего процесса. или задание ожидалось.
Итак, ваш сценарий ожидает завершения туннеля ssh перед тем, как вернуться в командную строку. просто удалите wait
, и вы получите ответ, и ваш туннель будет работать в фоновом режиме.
Я использую screen
, чтобы в одном окне терминала выполнялись разные соединения и скрипты. Это также позволяет мне выключить машину, пойти домой, снова включить ее и перезагрузить сеанс screen
. Я хотел следить за происходящим.
Конечно, это при условии, что я SSH Я попал в другую машину с моего терминала.