Использовать Type=oneshot в .service-файле нельзя, так как при запуске сервиса systemd будет ждать 15 минут, пока anacron не отработает свои скрипты (так как таймаут отключён). Хоть при запуске при старте, хоть при запуске из консоли. Надо делать Type=simple, чтобы запуск сервиса не держал консоль непонятно сколько времени.
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).
Я думал, что нашёл всё. Похоже, надо добавить ещё эти параметры: [Service] StandardInput=null StandardOutput=journal StandardError=journal В противном случае сервис ждёт старта 90 с и по таймауту отваливается. По крайней мере, с ними сервис сразу стал активным и ушёл в фон.
Не понимаю, зачем StandardOutput и StandardError, разве они по умолчанию не syslog?
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).
Я попытался найти причину неотключения от консоли. По-умолчанию (если верить 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 - понять сходу не могу, надо ковырять исходные тексты.