вы можете использовать nvidia-driver на latop с optimus. Bumblebee-nvidia для моего случая на MSI GP62 6QF не лучшее решение, потому что моя графика intel по производительности равна моей карте nvidia с bumblebee-nvidia. И когда я использовал только nvidia-драйвер, моя карта была намного лучше в LinuxMint
Инструмент screen
, доступный для всех дистрибутивов Linux, поддерживает это.
Чтобы установить его, запустите apt-get install screen
для дистрибутивов Linux на основе deb или
dnf install -y screen
или yum install -y screen
для основанных на RPM.
Использование:
$ screen
Запускается новая оболочка. В этой оболочке вы можете запустить свой скрипт Python. Затем вы можете нажать Ctrl+Shift+A, затем D. Он отключит ваш терминал от оболочки, в которой запущен ваш скрипт. Кроме того, скрипт все еще работает в нем.
Чтобы увидеть, как работает ваш скрипт, вы можете вызвать screen -r
.
Это снова подключит ваш терминал к оболочке со скриптом Python, который вы оставили работающим в фоновом режиме.
UPD: как упомянул Фокс, screen плохо работает с systemd, но мы можем использовать systemd для запуска скрипта, как сказано в официальном примере.
Например, если ваш скрипт запускается с помощью /usr/bin/myPythonScript
, вы можете создать файл модуля Systemd, подобный этому.
$ cat /etc/systemd/system/myPythonScript.service
[Unit]
Description=MyPythonScript
[Service]
ExecStart=/usr/bin/myPythonScript
[Install]
WantedBy=multi-user.target
Затем вы можете запустить этот скрипт
# systemctl daemon-reload
# systemctl start myPythonScript
Если вы хотите, чтобы этот скрипт запускался автоматически при запуске системы —
# systemctl enable myPythonScript
В любое время вы можете просмотреть, как работает ваш скрипт
# systemctl status myPythonScript
Объявление о том, что вы можете просматривать логи вашего скрипта
# journalctl -u myPythonScript -e
Большинство процессов можно обмануть, перенаправив их stdout, stderr, stdin (не всегда необходимо перенаправлять все дескрипторы) и используя управляющий оператор &
.
Обратите внимание, что ping example.com 1>/dev/null &
выполняет свою работу.
Конечно, некоторые программы более сложны и требуют таких решений, как упомянул @terdon, но полезно знать и использовать то, что подходит лучше всего.
РЕДАКТИРОВАТЬ: как написано в этот ответ убивает процессы systemd
при выходе из системы. Некоторые версии systemd
убивают процессы при выходе из системы по умолчанию, другие — нет. Это поведение можно изменить, изменив /etc/systemd/logind.conf, установив следующую опцию. Как написано, это также может решить некоторые проблемы, которые могут возникнуть у вас с решениями @terdon.
из man logind.conf
:
KillUserProcesses=
Принимает логический аргумент. Настраивает, должны ли процессы пользователя завершаться при выходе пользователя из системы. Если true, блок области, соответствующий сеансу, и все процессы внутри этой области будут завершены. Если false, область действия "заброшена", см. systemd.scope(5), и процессы не уничтожаются.По умолчанию «да», но см. параметры
KillOnlyUsers=
иKillExcludeUsers=
ниже.В дополнение к сеансовым процессам пользовательский процесс может выполняться под управлением модуля управления пользователями user@.service. В зависимости от настроек задержки это может позволить пользователям запускать процессы независимо от их сеансов входа в систему. См. описание
enable-linger
вloginctl
(1).Обратите внимание, что установка
KillUserProcesses=yes
приведет к поломке таких инструментов, какscreen
(1) иtmux
(1), если только они не будут перемещены за пределы сеанса. . См. пример вsystemd-run
(1).
Прочтите связанный ответ, чтобы узнать больше.
У вас есть два основных варианта:
Запустите команду с nohup
. Это отключит его от вашего сеанса и позволит продолжить работу после отключения:
nohup pythonScript.py
Обратите внимание, что стандартный вывод команды будет добавлен к файлу с именем nohup.out
, если вы не перенаправите его (nohup pythonScript.py > outfile
).
Используйте мультиплексор экрана, например tmux
. Это позволит вам отключиться от удаленной машины, но затем, при следующем подключении, если вы снова запустите tmux attach
, вы окажетесь в точно таком же сеансе. Команда по-прежнему будет выполняться (она будет продолжать выполняться после выхода из системы), и вы сможете увидеть ее stdout и stderr так же, как если бы вы никогда не выходили из системы:
tmux
pythonScript.py
После запуска просто закройте окно PuTTY. Затем снова подключитесь на следующий день, снова запустите tmux attach
, и вы вернетесь к тому, с чего начали.