Ошибка при запуске службы i8kmon при настройке пользовательских настроек
Первый пост, вы все. Пожалуйста, будьте нежны;)
Я решил, что независимо от заданных по умолчанию температурных порогов, при которых i8kmon устанавливает скорость вращения вентилятора, будет недостаточно. Казалось бы, я включаю вентилятор под нагрузкой, а затем никогда не отключаюсь (возможно, потому, что нижняя пороговая температура слишком низкая?).
Поэтому я решил создать пользовательский файл конфигурации (как описано в руководствах по i8kmon) в /etc/default/i8kmon. Содержимое файла было именно таким:
set config(0) {{0 0} "-"1 60 "-"1 65}
set config(1) {{1 0} 50 70 55 75}
set config(2) {{1 1} 60 80 65 85}
set config(3) {{2 2} 70 128 75 128}
Это, однако, кажется, не нравится i8kmon, так как он больше не работает после размещения файла конфигурации. Вот вывод systemctl status i8kmon.service:
systemctl status i8kmon.service
● i8kmon.service - LSB: Dell fan/cpu-temperature monitor
Loaded: loaded (/etc/init.d/i8kmon; bad; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2016-01-04 20:33:57 PST; 9s ago
Docs: man:systemd-sysv-generator(8)
Process: 3766 ExecStop=/etc/init.d/i8kmon stop (code=exited, status=2)
Process: 3770 ExecStart=/etc/init.d/i8kmon start (code=exited, status=2)
Tasks: 2 (limit: 512)
CGroup: /system.slice/i8kmon.service
└─3545 tclsh /usr/bin/i8kmon --daemon --nouserconfig --auto
Jan 04 20:33:57 notebook systemd[1]: i8kmon.service: Control process exited, code=exited status=2
Jan 04 20:33:57 notebook systemd[1]: Stopped LSB: Dell fan/cpu-temperature monitor.
Jan 04 20:33:57 notebook systemd[1]: i8kmon.service: Unit entered failed state.
Jan 04 20:33:57 notebook systemd[1]: i8kmon.service: Failed with result 'exit-code'.
Jan 04 20:33:57 notebook systemd[1]: Starting LSB: Dell fan/cpu-temperature monitor...
Jan 04 20:33:57 notebook i8kmon[3770]: /etc/init.d/i8kmon: 1: /etc/default/i8kmon: Syntax error: "(" unexpected
Jan 04 20:33:57 notebook systemd[1]: i8kmon.service: Control process exited, code=exited status=2
Jan 04 20:33:57 notebook systemd[1]: Failed to start LSB: Dell fan/cpu-temperature monitor.
Jan 04 20:33:57 notebook systemd[1]: i8kmon.service: Unit entered failed state.
Jan 04 20:33:57 notebook systemd[1]: i8kmon.service: Failed with result 'exit-code'.
Но вот строка, которая меня особенно интересует:
Jan 04 20:33:57 notebook i8kmon[3770]: /etc/init.d/i8kmon: 1: /etc/default/i8kmon: Syntax error: "(" unexpected
Так. Я довольно уверен, что не допустил никаких синтаксических ошибок в файле конфигурации. (Обратите внимание, что это было скопировано вставлено дословно в файл конфигурации).
Также было бы интересно отметить это; что я успешно получил эту работу в Fedora 23 (хотя эта работа носила более ручной характер). Основные отличия (которые я могу вспомнить) состоят в том, что 1) файл помещается в /etc/i8kmon.conf, а не в /etc/default/i8kmon (обратите внимание на отсутствие.conf здесь, в Ubuntu по некоторым причинам), и 2), man-страница fedora для i8kmon не требует странных кавычек вокруг тире.
Есть мысли по этому поводу?
1 ответ
Вы должны поместить файл конфигурации в /etc/i8kmon.conf вместо /etc/default/i8kmon, Утилита i8kmon - это скрипт TK, в котором жестко задан путь к файлу конфигурации. Смотрите вывод grep sysconfig /usr/bin/i8kmon,
Согласно приведенным ниже страницам, /etc/default Файлы конфигурации работают с несовместимой логикой загрузки файла конфигурации в среду исполняющей оболочки и, следовательно, предполагая, что синтаксис файла конфигурации является синтаксисом оболочки. Страница man i8kmon содержит ошибку, потому что она не упоминает другой (оригинальный) канал конфигурации. Какова цель / etc / default? https://superuser.com/questions/46139/what-does-source-do