Bug 28775 - нельзя использовать oneshot в .service-файле
Summary: нельзя использовать oneshot в .service-файле
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: anacron (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-04-01 12:16 MSK by serpiph
Modified: 2013-04-01 16:39 MSK (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description serpiph 2013-04-01 12:16:22 MSK
Использовать Type=oneshot в .service-файле нельзя, так как при запуске сервиса systemd будет ждать 15 минут, пока anacron не отработает свои скрипты (так как таймаут отключён). Хоть при запуске при старте, хоть при запуске из консоли. Надо делать Type=simple, чтобы запуск сервиса не держал консоль непонятно сколько времени.
Comment 1 Repository Robot 2013-04-01 14:23:02 MSK
anacron-1:2.3-alt5 -> sisyphus:

* Mon Apr 01 2013 Dmitry V. Levin <ldv@altlinux> 1:2.3-alt5
- anacron.service: changed service type to simple (closes: #28775).
Comment 2 serpiph 2013-04-01 15:37:05 MSK
Я думал, что нашёл всё.

Похоже, надо добавить ещё эти параметры:

[Service]
StandardInput=null
StandardOutput=journal
StandardError=journal

В противном случае сервис ждёт старта 90 с и по таймауту отваливается. По крайней мере, с ними сервис сразу стал активным и ушёл в фон.
Comment 3 Dmitry V. Levin 2013-04-01 16:20:17 MSK
Не понимаю, зачем StandardOutput и StandardError, разве они по умолчанию не syslog?
Comment 4 Repository Robot 2013-04-01 16:35:32 MSK
anacron-1:2.3-alt6 -> sisyphus:

* Mon Apr 01 2013 Dmitry V. Levin <ldv@altlinux> 1:2.3-alt6
- anacron.service: redirect standard descriptors (closes: #28775).
Comment 5 serpiph 2013-04-01 16:39:06 MSK
Я попытался найти причину неотключения от консоли. По-умолчанию (если верить man systemd.exec) стандартный вход - это null, стандартный вывод - это journal, стандартный вывод ошибок - это inherit (то есть journal). То есть придраться, вроде, не к чему.

Вот из /etc/systemd/system.conf:

[Manager]
...
#DefaultStandardOutput=journal
#DefaultStandardError=inherit

Но только после явного указания, что и куда идёт, всё заработало. В /etc/systemd/journald.conf я раскомментировал такую строку:
[Journal]
...
ForwardToSyslog=yes

То есть syslog и так получает от journald всю информацию.

Я тогда специально прописал все вводы/выводы и у меня заработало именно так, как мне надо. Где косяк - в systemd ли, в доках ли на systemd - понять сходу не могу, надо ковырять исходные тексты.