Czy w skrypcie można stwierdzić, czy jest uruchamiany z poziomu ekranu GNU?

10

Mamy długi proces na zdalnym serwerze, który jest uruchamiany ręcznie od czasu do czasu. Niestety połączenia internetowe giną, jądra paniki i cała masa innych wyzwań może zostać napotkana przez sesję ssh służącą do połączenia i uruchomienia zadania.

Wygląda na to, że ekran jest doskonałym sposobem na to, aby proces nie został przerwany. Jednak poleganie na osobie, która zawsze pamięta o uruchomieniu ekranu, a następnie uruchomieniu skryptu w celu rozpoczęcia procesu, jest problemem, który czeka. Czy istnieje sposób, aby skrypt mógł sprawdzić, czy skrypt jest wywoływany z poziomu ekranu? Jeśli tak, proces będzie kontynuowany, w przeciwnym razie skrypt zakończy działanie z komunikatem instruującym użytkownika, aby najpierw uruchomił ekran.

Cclark
źródło

Odpowiedzi:

11

Istnieje do tego zmienna środowiskowa. Jeśli jest uruchamiany na ekranie, $TERMbędzie screen. To takie proste; po prostu zrób to. Na przykład,

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

wyświetli pasek echa na ekranie; foo inaczej.

Falcon Momot
źródło
2
Może być tak również, screen-256colorjeśli użytkownik skonfigurował obsługę 256 kolorów.
mgorven
lub screen-bce w systemach z zainstalowanym byobu. echo $ TERM screen-bce
nelaaro,
7

Podczas pracy z ekranem, dlaczego nie uruchomić skryptu z „nohup”? Zapewni to również, że będzie nadal działać, jeśli zostaniesz rozłączony.

Domyślnie zapisuje się w pliku, więc możesz użyć innych narzędzi do monitorowania wyników skryptu, jeśli chcesz.

Magellan
źródło
1
Podczas gdy uruchamianie z nohup osiągnęłoby ten sam rezultat, aby zapewnić kontynuowanie procesu, czy nadal nie mam tego samego problemu z kimś, kto potencjalnie zapomina uruchomić skrypt z nohup? A może w skrypcie jest sposób na upewnienie się, że użyto „nohup”, czy też muszę utworzyć skrypt opakowujący, który wywołuje mój oryginalny skrypt z nohup?
cclark
Tak. Chociaż kocham moich padawanów (młodszych sysadminów), tak jak kocham moje dzieci, często zapominają o takich rzeczach. Tak więc wszystko jest opakowane, aby nie musieli pamiętać, jakie rzeczy wpisać, aby poprzedzić ważne polecenia.
Magellan