Чи можливо в сценарії сказати, чи він запускається з екрана GNU?


10

У нас тривалий процес на віддаленому сервері, який час від часу починається вручну. На жаль, з’єднання з Інтернетом відмирають, ядра панікують і цілу низку інших проблем може зіткнутися із сеансом ssh, який використовується для підключення та початку роботи.

Екран здається ідеальним способом забезпечити процес не переривання. Однак, покладаючись на те, що людина завжди пам’ятає, щоб почати екран, а потім запустити сценарій, щоб почати процес, це проблема, яка чекає, що трапиться. Чи є спосіб зі скрипту, який я можу перевірити, чи скрипт викликається зсередини екрана? Якщо це процес, він продовжиться, інакше сценарій буде закритий з повідомленням, що вказує користувачеві спершу запустити екран.


Відповіді:


11

Для цього існує змінна середовище. Якщо він запускається в межах екрана, $TERMбуде screen. Це так просто; просто зробіть, якщо на цьому. Наприклад,

if [ $TERM != 'screen' ]; then echo foo; else echo bar; fi

буде на екрані; foo інакше.


2
Це може бути також, screen-256colorякщо користувач налаштував 256 кольорову підтримку.
mgorven

або екран-bce в системах із встановленою системою byobu. echo $ TERM screen-
bce

7

Поки ви працюєте з екраном, чому б не запустити сценарій з "nohup"? Це також забезпечить його продовження, якщо ви відключитесь.

Він виводить у файл за замовчуванням, тому ви можете використовувати інші інструменти для контролю виводу скриптів, якщо бажаєте.


1
Хоча біг з nohup досягав би того самого результату, щоб процес продовжував працювати, чи все одно у мене не буде тієї самої проблеми, коли хтось потенційно забуде запустити сценарій з nohup? Або є спосіб у скрипті, щоб переконатися, що "nohup" використовувався, або мені потрібно створити обгортковий скрипт, який викликає мій оригінальний скрипт з nohup?
cclark

Так. Хоча я люблю своїх падаванців (молодших сисадмінів), як я люблю своїх дітей, вони часто забувають про такі речі. Таким чином, все загортається так, що їм не доведеться пам’ятати, які речі слід вводити для префіксації важливих команд.
Магеллан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.