Использование DNS-запроса даже за NAT-маршрутизатором, транслирующим DNS-адреса, может работать:
$ dig +short -t txt o-o.myaddr.l.google.com @ns1.google.com | cut -d'"' -f2
x.y.z.t
или вместо этого вы можете использовать метод HTTP-запроса:
$ curl -s ipinfo.io/ip
x.y.z.t
Команда nohup
не делает то, что вы думаете --она игнорирует сигнал зависания, так что соединения (терминала )на STDIO могут быть разорваны без отправки драйвером терминала SIGHUP
подключенным процессам, но nohup
не закрывает свои собственные STDIO-соединения и, по сути, передает их запускаемому процессу, поэтому sshd
будет ждать, пока процесс завершится и в результате эти дескрипторы будут закрыты.
Таким образом, вам нужно убедиться, что запускаемый вами процесс также не связан с дескрипторами STDOUT и STDERR, предоставленными емуsshd
(STDIN уже открыт на /dev/null
), и вы можете сделать это, перенаправив их (либо в файл, либо в/dev/null
). Команда nohup
не является строго необходимой, так как ничего не будет отправлять SIGHUP
при обрыве соединения SSH.
Попробуйте это:
ssh user@domain "python3 script >/dev/null 2>&1 &"
Попробуйте терминальный мультиплексор, tmux отлично подходит. Обычно я не люблю давать советы, когда вам, возможно, придется что-то установить, но tmux — действительно удобное приложение, которое нужно иметь в своем наборе инструментов. (может быть уже установлен)
Вы можете запустить свое приложение, завернутое в tmux, отсоединить его, закрыть ноутбук, войти в другое место и снова подключиться к сеансу, все еще работающему в tmux. Если у вас более старая ОС, экран делает то же самое, но я предпочитаю tmux.
вы можете запустить новое приложение из командной строки или из приложения, отформатированного следующим образом
tmux новый -сеанс "command1"
tmux new-session "ping 8.8.8.8"
Но вы, вероятно, должны назвать свои сеансы. Теперь укороченная новая сессия с именем muxping, которая запускается в фоновом режиме. -d отсоединен.
tmux new -d -s muxping "ping 8.8.8.8"
теперь показывать в фоновом режиме
tmux ls
прикрепить к нему
tmux a
Кроме того, в tmux можно разделить экран и делать много очень полезных вещей. Есть много сайтов с шпаргалками по tmux, которые упрощают большую справочную страницу. это довольно легко начать.
Я сам нашел решение.
Я пытался:
ssh user@domain "python3 script.py &" & sleep 10 && exit
Это не совсем то, к чему я стремился, но, похоже, это работает!
Я тоже попробую tmux и обновлю этот ответ.