Прямо сейчас я запускаю процесс на экране GNU. Экран запускается командой screen -dmS screenname
и прикрепляется с помощью screen -r screenname
. Процесс запускается в сеансе экрана и через некоторое время останавливается.
Как бы я завершил экран, когда процесс внутри закончился?
Примечание: я бы не предпочел цикл, поэтому я ищу альтернативу. Иногда я запускаю процесс & exit
следующим образом, но он никогда не выполняется, если я использую kill -9 pid
этот процесс.
bash
gnu-screen
hexacyanide
источник
источник
screen -r screenname
вы введете текст, вы попадете внутрь экрана в командной строке. В этом приглашении введите, аexec yourcommand
затем отсоединить.Попробуй это:
На первом
screen -ls
вы должны увидеть ваш сеанс экрана. По второму оно должно пропасть. Экран автоматически закроется, когда закроется последнее окно. Поскольку внутри экрана запускается только одна программа, последнее (и единственное) окно в сеансе экрана закроется при выходе из программы. Если вы запускаете программу, присоединяясь к сеансу экрана, а затем вводите команду в приглашении оболочки внутри сеанса экрана, то экран ожидает выхода из вашей оболочки. Вы можете заставить это произойти, когда программа завершит работу, набравexec PROGRAM
вместоPROGRAM
приглашения командной строки (на самом деле это выйдет из оболочки и заменит ее наPROGRAM
).Если все, что вам нужно, это возможность отсоединения экрана и ничего больше, легкая альтернатива - dtach .
источник
Вы можете запустить сеанс экрана с именем команды, например
screen -dmS session vim
, откроет сеанс экрана, который завершается с помощью vim. В рамках существующего сеанса экрана вы можете использоватьexec
тот же эффект :.источник