Вы можете запустить скрипт на экране или запустить процесс в nohup + bg.Я всегда предпочитаю Screen, но позвольте мне объяснить оба метода.
1.nohup
Вы можете использовать команду nohup для запуска процесса, отсоединив от терминала, как это nohup python /my/folder/abc.py &
По умолчанию создается файл nohup.out , где всежурналы будут сохранены.Если вам нужен пользовательский файл, то вы можете использовать перенаправление, тогда оно будет nohup python /my/folder/abc.py >> abc.log &
В одной команде это будет
ssh user@remotehost 'nohup python /my/folder/abc.py >> abc.log &'
nohup wikipedia
2.Экран
Из документов.
Экран - это полноэкранный оконный менеджер, который мультиплексирует физический терминал между несколькимипроцессы, как правило, интерактивные оболочки.Каждый виртуальный терминал обеспечивает функции терминала DEC VT100 и, кроме того, несколько функций управления из стандартов ISO 6429 (ECMA 48, ANSI X3.64) и ISO 2022 (например, строка вставки / удаления и поддержка нескольких наборов символов).Для каждого виртуального терминала имеется буфер истории прокрутки и механизм копирования и вставки, который позволяет пользователю перемещать текстовые области между окнами.
Когда вызывается экран, он создает одно окно с оболочкой в нем.(или указанная команда), а затем исчезает, чтобы вы могли использовать программу, как обычно.Затем в любое время вы можете создавать новые (полноэкранные) окна с другими программами в них (включая другие оболочки), убивать текущее окно, просматривать список активных окон, включать и выключать выходной журнал, копировать текст междуокна, просматривать историю прокрутки, переключаться между окнами и т. д. Все окна запускают свои программы полностью независимо друг от друга.Программы продолжают работать, когда их окно в настоящее время не видно и даже когда весь сеанс экрана отсоединен от терминала пользователя.
Руководство по экрану
Таким образом, выВы можете напрямую запускать скрипт на экране, используя ssh, а затем вы можете просматривать журналы в любое время, либо подключаясь к экрану, либо перенаправлять журналы в какой-либо файл напрямую или перенаправлять в файл и выводить его с помощью tee.
Запустить команду на экране и напечатать вывод в stdout (терминал).
ssh user@remotehost '(screen -dmS ScreenName bash -c "python /my/folder/abc.py; exec bash")'
Запустить команду на экране и перенаправить вывод в файл.
ssh user@remotehost '(screen -dmS ScreenName bash -c "python /my/folder/abc.py >> abc.log &2>1; exec bash")'
Запустить команду ввывод на экран и перенаправление как в файл, так и в stdout (терминал).
ssh user@remotehost '(screen -dmS ScreenName bash -c "python /my/folder/abc.py &2>1 |tee abc.log; exec bash")'
Примечание: во всех вышеперечисленных командах необходим exec bash, иначе экран завершится после выполнения заданиязавершает.
Любой из вышеперечисленных commansd должен выполнить эту работу.
Во всех вышеперечисленных случаях вы можете прикрепить экран ScreenName с помощью screen -r ScreenName и видеть журналы.
Я всегда рекомендую перенаправление stderr при перенаправлении в файл.
некоторые ссылки на использование экрана linux
- 10 Примеры экранных команд для управления терминалами Linux
- Как использовать экран Linux