Что происходит в первом случае:
После того, как последняя команда в сценарии запущена в фоновом режиме, оболочка, выполняющая сценарий, немедленно завершает работу. Этот процесс оболочки был родительским процессом для трех программ, запущенных из сценария. Теперь, когда их родительский процесс завершился, процесс PID -1(init
или systemd
часто в настоящее время )становится их родительским процессом.
Связь между терминалом и программами, запущенными из скрипта, исчезла, потому что терминальная программа больше не является их (великим )родительским процессом.
Что происходит во втором случае:
После последнего фонового процесса сценарий остается активным для запуска цикла. Когда терминал выходит, он отправляет SIGHUP своим дочерним процессам; оболочка, являющаяся его дочерним элементом, передает этот сигнал своим дочерним процессам (вашим программам ).
Действием по умолчанию, когда процесс получает сигнал HUP, является выход. По-видимому, VSCode
игнорирует SIGHUP или fork()
находится вдали от своего родительского процесса, поэтому на него это не влияет.
Итак, получается, что это не -не совсем -полноценный GPU. То есть это набор микросхем, который не поставляется с разъемом дисплея, полагаясь на встроенный -графический набор микросхем (, т. е. графику Intel ), для вывода на дисплей. Это известно как «NVidia OPTIMUS» (, кричащее NVidia ), и поддерживается в Linux через драйвер «primus».
Чтобы это работало, вам необходимо установить пакет primus
. При желании вы также можете установить bumblebee
, хотя я не уверен, в чем преимущество этого (, он использует primus за кулисами ).
После установки пакета «primus» вы можете запускать приложения на графическом процессоре NVidia с помощью primusrun:
primusrun glxinfo
будет работать glxinfo
на графическом процессоре NVidia, тогда как
glxinfo
(т. е. glxinfo
без предварительной настройки primusrun
)будет работать glxinfo
на графическом процессоре Intel.
Для таких вещей, как Steam, вы можете либо запустить весь Steam внутри primusrun
, либо перейти к -свойствам игры и добавить там primusrun
в командную строку.