Linux nohup — Jak uruchomić proces w tle jako daemon
Co prawda sesja żyć nie daje normalnie, ale pokuszę się o wpis. Tym razem chciałbym zanotować sobie, a także pokazać innym, sposób na uruchomienie programu czy skryptu w tle, tak by działał jako demon (ang. daemon). Wykorzystamy do tego celu polecenie nohup.
Czym są demony?
Demony w systemie, są to procesy pracujące w tle, które nie wymagają interakcji z użytkownikiem. Co prawda jest to dość uproszczona definicja, ale daje ogólne wyobrażenie na poruszony tutaj temat. Naszym zadaniem będzie zrobienie demona z dowolnego programu, czy skryptu (w tym opisie skupimy się na skrypcie).
W czym problem?
Ktoś może powiedzieć, że wystarczy uruchomić program w tle, przez dodatnie znaku & na koniec wywołania. I w dużej mierze ma rację. Wydajmy przykładowe polecenie uruchamiające skrypt jako proces działający w tle:[1] 8713
Użyjmy polecenia nohup!
W tym wypadku z pomocą przychodzi nam polecenie nohup, którego zadaniem jest utrzymanie procesu przy życiu, nawet po wylogowani się użytkownika, poprzez ignorowanie sygnałów hangup. Czyli jest to dokładnie to, czego szukamy. Jak powinno wyglądać wywołanie?[1] 8879
$ nohup: zignorowanie wejścia i dołączenie wyników do `nohup.out'
Tym sposobem, nasz dowolnySkrypt.sh będzie działał w tle systemu jako demon. Powyższy output mówi nam również, że logi z programu w postaci treści wyrzucanych na strumień standardowego wyjścia, będą zapisywane do pliku nohup.out. Oczywiście możemy to dowolnie modyfikować i zapisywać logi czy to do innego pliku, czy zupełnie je zignorować przekierowując je na urządzenie /dev/null. Jeśli interesuje Cię również temat przekierowywania strumieni, polecam poniższe artykuły:
Linux stdin, stdout, stderr — Strumienie i przekierowania I
Linux stdin, stdout, stderr — Strumienie i przekierowania II

Komentarze (2)