Archiwum | emil@fuse.pl && crypto

Opóźniona gratyfikacja

Ze wszystkich rzeczy, które najbardziej oczarowały mnie w tym całym komputerowym bajzlu, musiałbym wymienić automatyzację na pierwszym miejscu.

Mimo płynących lat nadal odnajduję okruchy magii w tym, że komputer, raz nauczony, potrafi powtarzać rzeczy bez czujnego oka operatora. Kiedy otrzymałem swoje pierwsze konto z dostępem do powłoki, napisałem na szybko dwa skrypty, które wysyłały e-maile na specjalny adres, przesyłający informację dalej na telefon komórkowy via SMS. Pierwszy informował mnie o loginach na mój shell. Siadałem do terminala, logowałem się i… pik! Drugi śledził mój /var/spool/mail/opi i przysyłał mi każdego ranka informację o ilości e-maili. Serce aż bije mocniej, gdy wspomnę tę ekscytację czymś, co dziś brzmi jak błahostka. Zabawne, że dziś moje skrypty działają odwrotnie i ukrywają pocztę, która do mnie przyszła. Odwrotność miłości to nie nienawiść — to obojętność.

Zanim otrzymałem to konto cierpliwie wertowałem „książkę do nauki Linuksa”, jedną z tych książek, które leniwie tłumaczą to, co i tak jest dostępne na stronach podręcznika man, ale to było jak uczenie się języka przez zapamiętywanie słówek, bez wymowy, bez kontekstu, ale z pełnym nabożeństwem iluzji zdobywania wiedzy.

Tam też natknąłem się na atd, daemon wykonujący polecenie — bądź serie poleceń — opóźnione o zadany czas. Prawie zemdlałem. Idea, że jest komputer, który nie tylko jest non-stop włączony, ale także non-stop „w Internecie”, a do tego mogę mu powiedzieć, co zrobić za kilka godzin wydawała mi się jak odkrycie podróży międzyplanetarnych przy użyciu puszki mielonki, kawałka sznurka i bardzo silnego postanowienia woli: niesamowite, a w ogóle nieprawdopodobnie, że ludzie nie siedzą godzinami wymyślając, co komputer może zrobić za godzinę! To musi zmienić cały świat.

Nie zmieniło świata, a wraz z upływającym czasem ludzie w ogóle przestali wiedzieć o atd. Kiedy zainstalowałem Debiana na nowym laptopie atd nie było w standardowym zestawie pakietów. Jak wtedy, gdy Twoja matka komunikuje Ci na obiedzie, że znalazła twoje stare magazyny i wyrzuciła je do śmieci. Maska dorosłości przykrywająca doskonale uczucie żalu.

Mimo to, myślę sobie, at jest jedną z tych rzeczy, która spadła za ladę i może znajdzie się jak będziecie malować, w przyszłości. Nie wiem, jak ludzie żyją bez tego, ale może to tylko ja. Może po prostu nikt nie powiedział ludziom, że mają non-stop takie nisko-profilowe cudeńko w systemie? Może jeśli im powiem, na ten przykład w notce, trochę wstawiony, to odnajdziemy wspólny język.

at to komenda, która jest klientem daemona atd, pozwalająca na uruchomienie polecenia, lub serii poleceń. W odróżnieniu od Crontaba zadania te są jednokrotnego użytku. Można oczywiście wywoływać skrypty.

Przykładowo, mój skrypt odpowiedzialny za deploy nowej wersji oprogramowania ma linijkę:

echo "./skrypt.sh" | at 1:00

Znaczy to ni mniej, ni więcej że o pierwszej w nocy, kiedy użytkownicy już zasną, pojęte zostaną działania integracyjne, które teraz powodowałyby ból zębów użytkowników. Gdybym używał do tego Crona lub innego cyklicznego odpalacza musiałbym przekazać w jakiś sposób stan, stworzyć pusty plik albo odłożyć wartość do redisa, to tylko komplikuje rzeczy.

Kiedy wychodzę z domu, a pasek „podstępu” pobierania tego czy owego waha się non-stop pomiędzy 30 a 40 minutami piszę:

sudo at now+1 hour, podaję hasło i w linii poleceń at piszę poweroff. Za godzinę komputer złoży się bez mojej interwencji i nie będzie marnował prądu.

Mieliście kiedyś do wykonania zadanie na serwerze, który jest pod sporym obciążeniem, które to obciążenie powoduje, że zadanie wykonywałoby się zdecydowanie zbyt długo lub — co gorsza — spowodowało śmierć ważnych części systemu przez wysycenie I/O? W skład at wchodzi polecenie batch, które nie czeka na dopełnienie się konkretnej daty, odpala zadane kiedy load spadnie do 1.5; jeśli wydaje się Wam to bezużyteczne nigdy nie widzieliście aplikacji, która rozpędzona łyka zasoby jak odkurzacz-fetyszysta.

Kolejkę oczekujących zadań obsługujemy przy pomocy atq, które wyświetla listę wraz z unikalnym identyfikatorem, którego możemy użyć wraz z atrm celem usunięcia.

Tak wiele, tak niewiele.

I wiem, że jest pewnie lepszy, współcześniejszy, daemon. Wysyła powiadomienia na Slacka, całuje użytkownika w czółko i w ogóle. Ale! Te narzędzia nie przeżyły tyle lat jako część *NIX-a dlatego, że panowie z workami, na których widnieje symbol dolara, sypali mamoną aż do momentu w którym krytykanci się poddali i odlecieli prywatnymi odrzutowcami. To po prostu jednofunkcyjne narzędzie, które robi, co powinno.

KISS your atd.