Я запускаю ssh-туннель вот так:
ssh -f -N $PORT:127.0.0.1:$port example.com
то -f
помещает ssh в фоновый режим, чего я и хочу. Это работает, поскольку настроен туннель SSH. Но если я использую jobs
Я не вижу в списке соединение ssh. Как придешь?
Потому что вы не использовали bash для отправки в фоновый режим. jobs
отчеты только о процессах, которые сам bash отправил в фоновый режим; это был сам ssh, который "демонизировал" его, как сказал Эрикслав. Чтобы получить работу, чтобы сообщить об этом, вы должны:
ssh -N $PORT:127.0.0.1:$port example.com &
Скорее всего, процесс ssh был демонтирован, отключившись от оболочки. Вы можете думать об этом так (но, возможно, не в этом порядке):
Запущенный вами процесс ssh фактически закрыл все файловые дескрипторы (stdin, stdout, stderr), отключился от tty и разветвил еще один дочерний ssh. затем вызвал выход на себя. В результате дочерний процесс осиротел, и исходный процесс ssh фактически «завершился».
В результате исходный процесс ssh завершен, и осиротевший процесс больше не является «дочерним» вашей оболочки.
Вместо этого используйте ps -ef или ps -fu $ USER, чтобы увидеть интересующий вас процесс ssh.
Вы можете увидеть, какая программа слушает port
используя команду:
lsof -i :port
Это даст вам ssh pid.