February 29th, 2016

404

Алиэкспрессовый рефанд

Прислали мерцающие лампочки на 6W вместо обещанных 18. Продавец не согласился на 66% refund (или отсылку обратно за его счёт), оно ушло в арбитраж aliexpress'а. Итого - 100% refund.

Респект площадке.
404

systemd && sysv-init

systemd обеспечивает совместимость с sysv-init скриптами очень интересным образом.

Если у программы есть только /etc/init.d/app, то он выполняется только до строчки . /lib/lsb/init-functions, потому что там грузятся хуки, в т.ч. /lib/lsb/init-functions.d/40-systemd, из которого init-functions уже не возвращается (завершается досрочно).

Это поведение частично можно контролировать с помощью export _SYSTEMCTL_SKIP_REDIRECT=1.

(Это я пытаюсь понять, почему не запускается системный deluged).

Что именно делает хук и как он работает (когда работает) - в процессе выяснения.

Для хейтеров: после экспорта _SYSTEMCTL_SKIP_REDIRECT=1 init.d/deluged начал отрабатывать целиком, но deluged так и не запустился. Исследую.
404

люблю systemd

Старт демона производится таким образом:

start-stop-daemon --start --background --quiet --pidfile $PIDFILE --exec $DAEMON --chuid $USER --umask $MASK --test > /dev/null || return 2

Совершенно типовая строчка времён sysv-init.

А вот что происходит, если убрать --background и devnull:
Would start /usr/bin/deluged  (as user debian-deluged[112], and group [115]).
Traceback (most recent call last):
  File "/usr/bin/deluged", line 9, in 
    load_entry_point('deluge==1.3.12', 'console_scripts', 'deluged')()
  File "/usr/lib/python2.7/dist-packages/deluge/main.py", line 184, in start_daemon
    deluge.log.setupLogger(level=options.loglevel, filename=options.logfile)
  File "/usr/lib/python2.7/dist-packages/deluge/log.py", line 65, in setupLogger
    filemode=filemode
  File "/usr/lib/python2.7/logging/__init__.py", line 1547, in basicConfig
    hdlr = FileHandler(filename, mode)
  File "/usr/lib/python2.7/logging/__init__.py", line 913, in __init__
    StreamHandler.__init__(self, self._open())
  File "/usr/lib/python2.7/logging/__init__.py", line 943, in _open
    stream = open(self.baseFilename, self.mode)
IOError: [Errno 13] Permission denied: '/var/log/deluged/daemon.log'


Скажите, как во времена sysv-init такое отлаживалось и отлавливалось?

Не, я понимаю, создатели sysv-init неправы. Но насколько? Им надо было сказать >/var/log/deluged/start_log, а ля эрланг? Другими словами, вопрос вообще никак не проработан (был). А проблема была. И даже остаётся, спасибо легаси за наше трудное настоящее и весёлое будущее.

init-менеджер, который предоставляет безусловный логгинг для приложения - благо. init-менеджер, который понимает, "работает оно или нет" - благо.