Jak pominąć limit czasu 90. w Systemd


15

Czy można interaktywnie pominąć limit czasu 90. w Systemd? Na przykład, kiedy czeka na udostępnienie dysku lub wylogowanie użytkownika? Wiem, że w końcu to się nie powiedzie, więc czy mogę to teraz zrobić? Nienawidzę patrzeć bezradnie na ekran.

Odpowiedzi:


11

Masz dwie opcje:

  1. Możesz ustawić TimeoutStopSpec=konkretną JEDNOSTKĘ na określoną wartość (w sekundach *), aby czekać. Możesz również ustawić na to, infinityw którym przypadku SIGKILL nigdy nie zostanie wysłany (niezalecane, ponieważ możesz skończyć z niekontrolowanymi usługami trudnymi do debugowania).

  2. Ustaw DefaultTimeoutStopSec=wewnątrz /etc/systemd/system.conf(lub user.conf, lub w jednym z *.dkatalogów) na wartość domyślną, której TimeoutStopSpec=będą używać wszystkie JEDNOSTKI, które nie zostały określone. Głuchy dla tego ustawienia są lata 90., które zwykle widzisz.

Odnośniki do stron podręcznika:

  • man systemd.service dla TimeoutStopSpec=
  • man systemd-system.conf dla DefaultTimeoutStopSec=

* systemd akceptuje również specyfikacje czasu, np. „2min 3s”. Jest to szeroko opisane u mężczyzny.


10
To nie jest interaktywne. Kiedy systemd odlicza już lata 90., jest już za późno na dokonanie tych zmian i jestem zmuszony siedzieć bezradnie.
user7610

@JiriDanek - to dlatego, że systemd nie jest interaktywny, nie jest przeznaczony. Twój proces tty (w którym widzisz lata 90.) jest uruchamiany jako potomek init (sytemd), tzn. Proces pokazujący (getty) lata 90. jest dzieckiem procesu liczącego je (systemd). Ponadto systemd ignoruje większość sygnałów. Systemd nie ma być kontrolowany przez przypadkowego użytkownika przed tty (byłoby to ogromne ryzyko bezpieczeństwa).
grochmal

4
Jestem przede wszystkim użytkownikiem pulpitu, więc zazwyczaj postrzegam to inaczej. Pamiętasz drukarkę córki Torvaldsa ? Wiele niedociągnięć projektowych może być uzasadnionych względami bezpieczeństwa.
user7610

@JiriDanek - systemd nie stanowi problemu , byłby to prawdziwy wektor ataku. Jeśli możesz skierować prawidłowy sygnał we właściwym momencie, możesz (jako zwykły użytkownik) wyłączyć usługę systemową (np. SELinux). Wystarczy przejść do /etc/systemd/system.con i dodać DefaultTimeout = 3. Lub, lepiej, napraw wadliwą usługę. Fakt, że niektóre usługi zawsze zawodzą, nie jest złym projektem systemd, jest złym projektem osoby, która napisała plik jednostkowy.
grochmal

W moim konkretnym przypadku autor pliku jednostkowego jest niewinny. Właśnie zrobiłem literówkę podczas kopiowania i wklejania UUID dysku. Po prostu uznałem za irytujące, że muszę czekać całą minutę i pół, zanim systemd zrezygnował z montażu i pozwolił mi wejść do systemu i naprawić problem. Długi limit czasu ma tutaj sens. Z wyjątkiem sytuacji, gdy administrator wiedział, że nie.
user7610


6

Możesz odkomentować w /etc/systemd/system.confliniach:

DefaultTimeoutStartSec=90s
DefaultTimeoutStopSec=90s

I zmień wartość na odpowiednią dla siebie.


7
Podobnie jak w przypadku innej odpowiedzi, nie jest to interaktywne. Kiedy systemd odlicza już lata 90., jest już za późno na dokonanie tych zmian i jestem zmuszony siedzieć bezradnie.
user7610
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.