После перезагрузки содержимое /etc/wb-mqtt-serial.conf возвращается к прежнему виду

Добрый день. Столкнулся со следующей проблемой:
Меняю содержимое файла /etc/wb-mqtt-serial.conf, файл сохраняется и изменяется. Однако после перезагрузки получаю содержимое этого файла как до внесения изменений. Менять пробовал и через интерфейс и посредством nano через ssh. Изменения “откатываются” любые при перезагрузке: команды, добавление новых устройств и т.д.

dpkg -s wb-mqtt-serial

Package: wb-mqtt-serial
Status: install ok installed
Priority: optional
Section: misc
Installed-Size: 1476
Maintainer: Evgeny Boger boger@contactless.ru
Architecture: armhf
Version: 1.53.0
Replaces: wb-homa-modbus (<< 1.14.1)
Depends: libc6 (>= 2.4), libgcc1 (>= 1:3.5), libjsoncpp1 (>= 1.7.4), libmosquitto1 (>= 1.0), libmosquittopp1 (>= 1.0), libstdc++6 (>= 6), libwbmqtt0 (>= 1.7), bsdutils, wb-utils (>= 2.0)
Breaks: wb-homa-modbus (<< 1.14.1), wb-mqtt-confed (<< 1.0.2), wb-mqtt-homeui (<< 1.7)
Conffiles:
/etc/init.d/wb-mqtt-serial 1f6938ea476ac51c4b845327d5e40f03
/etc/wb-configs.d/11wb-mqtt-serial 5325e375bc486e31384ed908b8ceae0e
/etc/wb-mqtt-serial.conf.sample c8c1adbf630e6fd7ec871b1b5c4a5e0f
Description: Wiren Board Smart Home MQTT serial protocol driver.

Причем, если сразу после перезагрузки посмотреть содержимое wb-mqtt-serial.conf, то оно оказывается новым, с внесенными изменениями. Но, буквально, через несколько секунд файл “откатывается” к старому содержимому

tail -n 110 /var/log/messages

Aug 28 02:19:21 wirenboard-A5HT7XZX daemon.info dnsmasq[3081]: using nameserver 192.168.10.1#53
Aug 28 02:19:22 wirenboard-A5HT7XZX daemon.info dhclient[3395]: bound to 192.168.10.40 – renewal in 242 seconds.
Aug 28 02:19:22 wirenboard-A5HT7XZX daemon.err ntpdate[3476]: the NTP socket is in use, exiting
Aug 28 02:19:22 wirenboard-A5HT7XZX daemon.info ntpd[3059]: Soliciting pool server 91.206.16.3
Aug 28 02:19:22 wirenboard-A5HT7XZX daemon.info ntpd[3059]: Soliciting pool server 95.128.246.34
Aug 28 02:19:22 wirenboard-A5HT7XZX daemon.info ntpd[3059]: Listen normally on 7 eth0 192.168.10.40:123
Aug 28 02:19:23 wirenboard-A5HT7XZX daemon.info netplugd[3396]: eth0: state INNING pid 3397 exited status 0
Aug 28 02:19:23 wirenboard-A5HT7XZX auth.info sshd[2976]: Received SIGHUP; restarting.
Aug 28 02:19:24 wirenboard-A5HT7XZX auth.info sshd[2976]: Server listening on 0.0.0.0 port 22.
Aug 28 02:19:24 wirenboard-A5HT7XZX daemon.info ntpd[3059]: Soliciting pool server 89.221.207.113
Aug 28 02:19:24 wirenboard-A5HT7XZX daemon.info ntpd[3059]: Soliciting pool server 2a03:aa00::136:55
Aug 28 02:19:24 wirenboard-A5HT7XZX auth.info sshd[2976]: Server listening on :: port 22.
Aug 28 02:19:12 wirenboard-A5HT7XZX user.notice serial: address: 0
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 1
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 2
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 3
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 4
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 5
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 8
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 0
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 1
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 2
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 3
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 4
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 5
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 7
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 32
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 33
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 34
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 35
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 36
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 37
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 39
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 121
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 0
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 1
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 2
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 3
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 4
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 5
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 8
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 0
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 1
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 2
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 3
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 4
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 5
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 7
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 32
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 33
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 34
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 35
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 36
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 37
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 39
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: address: 121
Aug 28 02:19:25 wirenboard-A5HT7XZX daemon.info ntpd[3059]: receive: Unexpected origin timestamp 0xe11038fc.9b47bdc4 does not match aorg 0xe11038fd.b272a289 from server@185.209.85.222 xmt 0xe11038fb.9ca7ba97
Aug 28 02:19:24 wirenboard-A5HT7XZX daemon.info ntpd[3059]: receive: Unexpected origin timestamp 0xe11038fd.b272a289 does not match aorg 0000000000.00000000 from server@185.209.85.222 xmt 0xe11038fc.b3cb02df
Aug 28 02:19:24 wirenboard-A5HT7XZX daemon.info ntpd[3059]: receive: Unexpected origin timestamp 0xe11038fd.b26a18ff does not match aorg 0000000000.00000000 from server@195.3.254.2 xmt 0xe11038fc.b3938e92
Aug 28 02:19:24 wirenboard-A5HT7XZX daemon.info ntpd[3059]: receive: Unexpected origin timestamp 0xe11038fd.b253d7f9 does not match aorg 0000000000.00000000 from server@91.206.16.3 xmt 0xe11038fc.b679bff6
Aug 28 02:19:25 wirenboard-A5HT7XZX user.notice serial: Warning: no devices defined for port </dev/ttyRS485-2 9600 8 N2 timeout 500> . Skipping.
Aug 28 02:19:25 wirenboard-A5HT7XZX auth.info sshd[3144]: Accepted password for root from 192.168.10.66 port 55749 ssh2
Aug 28 02:19:25 wirenboard-A5HT7XZX authpriv.info sshd[3144]: pam_unix(sshd:session): session opened for user root by (uid=0)
Aug 28 02:19:25 wirenboard-A5HT7XZX authpriv.info systemd: pam_unix(systemd-user:session): session opened for user root by (uid=0)
Aug 28 02:19:26 wirenboard-A5HT7XZX daemon.notice watchdog[3772]: starting daemon (5.15):
Aug 28 02:19:26 wirenboard-A5HT7XZX daemon.info watchdog[3772]: int=1s realtime=yes sync=no load=0,0,0 soft=no
Aug 28 02:19:26 wirenboard-A5HT7XZX daemon.info watchdog[3772]: memory: minimum pages = 256 free, 0 allocatable (4096 byte pages)
Aug 28 02:19:26 wirenboard-A5HT7XZX daemon.info watchdog[3772]: ping: no machine to check
Aug 28 02:19:26 wirenboard-A5HT7XZX daemon.info watchdog[3772]: file: no file to check
Aug 28 02:19:26 wirenboard-A5HT7XZX daemon.info watchdog[3772]: pidfile: /var/run/syslogd.pid
Aug 28 02:19:26 wirenboard-A5HT7XZX daemon.info watchdog[3772]: pidfile: /var/run/sshd.pid
Aug 28 02:19:26 wirenboard-A5HT7XZX daemon.info watchdog[3772]: pidfile: /var/run/mosquitto.pid
Aug 28 02:19:26 wirenboard-A5HT7XZX daemon.info watchdog[3772]: pidfile: /var/run/nginx.pid
Aug 28 02:19:26 wirenboard-A5HT7XZX daemon.info watchdog[3772]: interface: no interface to check
Aug 28 02:19:26 wirenboard-A5HT7XZX daemon.info watchdog[3772]: temperature: no sensors to check
Aug 28 02:19:26 wirenboard-A5HT7XZX daemon.info watchdog[3772]: no test binary files
Aug 28 02:19:26 wirenboard-A5HT7XZX daemon.info watchdog[3772]: no repair binary files
Aug 28 02:19:26 wirenboard-A5HT7XZX daemon.info watchdog[3772]: error retry time-out = 30 seconds
Aug 28 02:19:26 wirenboard-A5HT7XZX daemon.info watchdog[3772]: repair attempts = 1
Aug 28 02:19:26 wirenboard-A5HT7XZX daemon.info watchdog[3772]: alive=/dev/watchdog1 heartbeat=[none] to=[none] no_act=no force=no
Aug 28 02:19:26 wirenboard-A5HT7XZX daemon.info watchdog[3772]: watchdog now set to 60 seconds
Aug 28 02:19:26 wirenboard-A5HT7XZX daemon.info watchdog[3772]: hardware watchdog identity: GPIO Watchdog
Aug 28 02:19:27 wirenboard-A5HT7XZX auth.info sshd[3811]: lastlog_openseek: Couldn’t stat /var/log/lastlog: No such file or directory
Aug 28 02:19:27 wirenboard-A5HT7XZX auth.info sshd[3811]: lastlog_openseek: Couldn’t stat /var/log/lastlog: No such file or directory
Aug 28 02:19:35 wirenboard-A5HT7XZX user.notice serial: terminate called after throwing an instance of ‘std::logic_error’
Aug 28 02:19:35 wirenboard-A5HT7XZX user.notice serial: what(): basic_string::_M_construct null not valid
Aug 28 02:19:39 wirenboard-A5HT7XZX user.notice serial: address: 0
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 1
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 2
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 3
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 4
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 5
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 8
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 0
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 1
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 2
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 3
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 4
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 5
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 7
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 32
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 33
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 34
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 35
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 36
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 37
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 39
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: address: 121
Aug 28 02:19:40 wirenboard-A5HT7XZX user.notice serial: Warning: no devices defined for port </dev/ttyRS485-2 9600 8 N2 timeout 500> . Skipping.
Aug 28 02:19:41 wirenboard-A5HT7XZX user.notice serial: Init: set_ceiling_led_switch_w_fixation: setup register <modbus:82:: 14> <-- 1

В чем может быть причина такого поведения?

A_Z, добрый день!
Очень странное поведение!
Хотел бы посмотреть вывод команд df и mount на контроллере, а также ps ax до и после перезатирания wb-mqtt-serial.

А вы перезагружаете контроллер вот прямо сразу после изменения содержимого? Если да, то попробуйте подождать пару минут пожалуйста.

Добрый день!
Вот вывод этих команд сразу после загрузки контроллера:

df && mount && ps ax

df:

Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 999320 493768 436740 54% /
devtmpfs 246120 0 246120 0% /dev
tmpfs 254824 0 254824 0% /dev/shm
tmpfs 254824 3744 251080 2% /run
tmpfs 5120 0 5120 0% /run/lock
tmpfs 254824 0 254824 0% /sys/fs/cgroup
/dev/mmcblk0p6 1270404 148264 1039556 13% /mnt/data
tmpfs 50964 0 50964 0% /run/user/0

mount:

/dev/mmcblk0p3 on / type ext4 (rw,noatime,errors=remount-ro,data=ordered)
devtmpfs on /dev type devtmpfs (rw,relatime,size=246120k,nr_inodes=61530,mode=755)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (rw,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mmcblk0p6 on /mnt/data type ext4 (rw,relatime,stripe=1024,data=ordered)
/dev/mmcblk0p6 on /var/log type ext4 (rw,relatime,stripe=1024,data=ordered)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=50964k,mode=700)

ps ax:

PID TTY STAT TIME COMMAND
1 ? Ss 0:04 /sbin/init
2 ? S 0:00 [kthreadd]
3 ? S 0:00 [ksoftirqd/0]
4 ? S 0:00 [kworker/0:0]
5 ? S< 0:00 [kworker/0:0H]
6 ? S 0:00 [kworker/u2:0]
7 ? S 0:00 [rcu_sched]
8 ? S 0:00 [rcu_bh]
9 ? S 0:00 [migration/0]
10 ? S< 0:00 [lru-add-drain]
11 ? S 0:00 [watchdog/0]
12 ? S 0:00 [cpuhp/0]
13 ? S 0:00 [kdevtmpfs]
14 ? S 0:00 [kworker/0:1]
15 ? S< 0:00 [netns]
16 ? S 0:00 [khungtaskd]
17 ? S 0:00 [oom_reaper]
18 ? S< 0:00 [writeback]
19 ? S 0:00 [kcompactd0]
20 ? S< 0:00 [crypto]
21 ? S< 0:00 [bioset]
22 ? S< 0:00 [kblockd]
23 ? S< 0:00 [watchdogd]
24 ? S< 0:00 [rpciod]
25 ? S< 0:00 [xprtiod]
26 ? S 0:00 [kswapd0]
27 ? S< 0:00 [vmstat]
28 ? S< 0:00 [nfsiod]
53 ? S< 0:00 [bioset]
54 ? S< 0:00 [bioset]
55 ? S< 0:00 [bioset]
56 ? S< 0:00 [bioset]
57 ? S< 0:00 [bioset]
58 ? S< 0:00 [bioset]
59 ? S< 0:00 [bioset]
60 ? S< 0:00 [bioset]
61 ? S< 0:00 [bioset]
62 ? S< 0:00 [bioset]
63 ? S< 0:00 [bioset]
64 ? S< 0:00 [bioset]
65 ? S< 0:00 [bioset]
66 ? S< 0:00 [bioset]
67 ? S< 0:00 [bioset]
68 ? S< 0:00 [bioset]
69 ? S< 0:00 [bioset]
70 ? S< 0:00 [bioset]
71 ? S< 0:00 [bioset]
72 ? S< 0:00 [bioset]
73 ? S< 0:00 [bioset]
74 ? S< 0:00 [bioset]
75 ? S< 0:00 [bioset]
76 ? S< 0:00 [bioset]
77 ? S 0:00 [kworker/u2:1]
112 ? S 0:00 [irq/52-mmc0]
113 ? S 0:00 [kworker/0:2]
114 ? S< 0:00 [ipv6_addrconf]
115 ? S< 0:00 [bioset]
116 ? S 0:01 [mmcqd/0]
117 ? S< 0:00 [bioset]
118 ? S 0:00 [mmcqd/0boot0]
119 ? S< 0:00 [bioset]
120 ? S 0:00 [irq/33-imx_ther]
121 ? S 0:00 [mmcqd/0boot1]
122 ? S< 0:00 [bioset]
123 ? S 0:00 [mmcqd/0rpmb]
124 ? S 0:00 [jbd2/mmcblk0p3-]
125 ? S< 0:00 [ext4-rsv-conver]
136 ? S 0:00 [kworker/0:3]
143 ? S 0:00 [kworker/u2:2]
146 ? Ss 0:00 /lib/systemd/systemd-journald
167 ? Ss 0:00 /lib/systemd/systemd-udevd
193 ? S 0:00 [w1_bus_master1]
194 ? S 0:00 [w1_bus_master2]
218 ? S 0:00 [jbd2/mmcblk0p6-]
219 ? S< 0:00 [ext4-rsv-conver]
278 ? S< 0:00 [cfg80211]
286 ? S< 0:00 [kworker/u3:0]
287 ? S< 0:00 [hci0]
288 ? S< 0:00 [hci0]
290 ? S< 0:00 [kworker/u3:1]
291 ? S< 0:00 [kworker/u3:2]
294 ? S< 0:00 [kworker/0:1H]
329 ? Ss 0:00 /bin/sh -c /usr/bin/wb-watch-configs cat /var/run/wb-configs.watch
331 ? S 0:00 /bin/bash /usr/bin/wb-watch-configs /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/localtime
337 ? Ss 0:00 /usr/sbin/cron -f
343 ? Ss 0:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
347 ? S 0:00 inotifywait -m --event close_write,moved_to --format %w%f %e /etc
348 ? S 0:00 /bin/bash /usr/bin/wb-watch-configs /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/localtime
358 ? Ss 0:00 /sbin/cgmanager -m name=systemd
360 ? Ss 0:00 /usr/lib/bluetooth/bluetoothd
361 ? Ss 0:00 avahi-daemon: running [wirenboard-A5HT7XZX.local]
364 ? Ss 0:01 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
366 ? Ss 0:00 /lib/systemd/systemd-logind
371 ? S 0:00 avahi-daemon: chroot helper
394 ? S 0:00 /usr/bin/wb-homa-w1
402 ? Ss 0:00 /sbin/syslogd
537 ? Sl 0:00 /usr/bin/wb-mqtt-confed -syslog /usr/share/wb-mqtt-confed
545 ? Ss 0:00 /sbin/klogd
597 ? S 0:02 /usr/bin/wb-mqtt-db -c /etc/wb-mqtt-db.conf
606 ? S 0:00 /bin/bash /usr/bin/wb-watch-update
613 ? S 0:00 inotifywait -m -r --exclude /var/www/uploads/state/ --event close_write /var/www/uploads/
614 ? S 0:00 /bin/bash /usr/bin/wb-watch-update
1114 ? S 0:00 [irq/108-1-0026]
1384 ? S 0:00 [RTW_CMD_THREAD]
1403 ? Ss 0:00 /sbin/wpa_supplicant -s -B -P /run/wpa_supplicant.wlan0.pid -i wlan0 -D nl80211,wext -C /run/wpa_supplicant
1441 ? S 0:00 [spi0]
2142 ? Sl 0:00 /usr/bin/wb-mqtt-mbgate -c /etc/wb-mqtt-mbgate.conf
2226 ? S 0:00 /usr/bin/wb-homa-adc -c /tmp/wb-homa-adc.do-not-edit.conf
2376 ? Ss 0:00 /sbin/dhclient -4 -v -pf /run/dhclient.wlan0.pid -lf /var/lib/dhcp/dhclient.wlan0.leases -I -df /var/lib/dhcp/dhclient6.wlan0.leases wlan0
2721 ? Sl 0:00 /usr/bin/python /usr/bin/wb-homa-rcd 0 75 -1
2871 ? Sl 0:01 /usr/bin/wb-rules -syslog -queue-len 2048 -editdir /etc/wb-rules /usr/share/wb-rules-system/rules/ /etc/wb-rules /usr/share/wb-rules/
2875 ? S 0:00 /bin/bash -c exec /usr/bin/wb-mqtt-serial -c /etc/wb-mqtt-serial.conf 2>&1 | logger -t serial
2876 ? Sl 0:01 /usr/bin/wb-mqtt-serial -c /etc/wb-mqtt-serial.conf
2877 ? S 0:00 logger -t serial
3034 ? Ss 0:00 /usr/sbin/sshd -D
3084 ? Ss 0:00 sshd: root@pts/0
3093 tty1 Ss+ 0:00 /sbin/agetty --noclear tty1 linux
3097 ttymxc0 Ss+ 0:00 /sbin/agetty --keep-baud 115200,38400,9600 ttymxc0 vt220
3101 ? S 0:00 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,20326,8,2,e06
3305 ? Ssl 0:00 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 101:103
3318 ? Ss 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
3324 ? S 0:00 nginx: worker process
3325 ? S 0:00 nginx: worker process
3332 ? S 0:00 nginx: worker process
3333 ? S 0:00 nginx: worker process
3339 ? S 0:00 [kworker/u2:3]
3365 ? Ss 0:00 /sbin/netplugd -p /var/run/netplugd.pid
3593 ? Ss 0:00 /sbin/dhclient -4 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases -I -df /var/lib/dhcp/dhclient6.eth0.leases eth0
3645 ? Sl 0:00 /usr/bin/wb-homa-gpio -c /tmp/wb-homa-gpio.do-not-edit.conf
3703 ? SLs 0:00 /usr/sbin/watchdog
3717 ? Ss 0:00 /lib/systemd/systemd --user
3732 ? S 0:00 (sd-pam)
3768 pts/0 Ss 0:00 -bash
3838 ? S 0:00 /usr/sbin/CRON -f
3842 ? Ss 0:00 /bin/sh -c /usr/share/wb-daemon-watchdogs/check_confed.sh 2>&1 | logger -t wb-daemon-watchdogs
3843 ? S 0:00 /bin/bash /usr/share/wb-daemon-watchdogs/check_confed.sh
3844 ? S 0:00 logger -t wb-daemon-watchdogs
3853 ? S 0:00 timeout 10 mosquitto_sub -t /rpc/v1/confed/Editor/List/fRGALNlN/reply -C 1
3854 ? S 0:00 sleep 3
3855 ? S 0:00 mosquitto_sub -t /rpc/v1/confed/Editor/List/fRGALNlN/reply -C 1
3858 pts/0 R+ 0:00 ps ax

А это спустя некоторое время, после “перетирания” файла:

df && mount && ps ax

df:

Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 999320 493768 436740 54% /
devtmpfs 246120 0 246120 0% /dev
tmpfs 254824 0 254824 0% /dev/shm
tmpfs 254824 3752 251072 2% /run
tmpfs 5120 0 5120 0% /run/lock
tmpfs 254824 0 254824 0% /sys/fs/cgroup
/dev/mmcblk0p6 1270404 148276 1039544 13% /mnt/data
tmpfs 50964 0 50964 0% /run/user/0

mount:

/dev/mmcblk0p3 on / type ext4 (rw,noatime,errors=remount-ro,data=ordered)
devtmpfs on /dev type devtmpfs (rw,relatime,size=246120k,nr_inodes=61530,mode=755)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (rw,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mmcblk0p6 on /mnt/data type ext4 (rw,relatime,stripe=1024,data=ordered)
/dev/mmcblk0p6 on /var/log type ext4 (rw,relatime,stripe=1024,data=ordered)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=50964k,mode=700)

ps ax:

PID TTY STAT TIME COMMAND
1 ? Ss 0:04 /sbin/init
2 ? S 0:00 [kthreadd]
3 ? S 0:02 [ksoftirqd/0]
4 ? S 0:00 [kworker/0:0]
5 ? S< 0:00 [kworker/0:0H]
6 ? S 0:00 [kworker/u2:0]
7 ? S 0:00 [rcu_sched]
8 ? S 0:00 [rcu_bh]
9 ? S 0:00 [migration/0]
10 ? S< 0:00 [lru-add-drain]
11 ? S 0:00 [watchdog/0]
12 ? S 0:00 [cpuhp/0]
13 ? S 0:00 [kdevtmpfs]
15 ? S< 0:00 [netns]
16 ? S 0:00 [khungtaskd]
17 ? S 0:00 [oom_reaper]
18 ? S< 0:00 [writeback]
19 ? S 0:00 [kcompactd0]
20 ? S< 0:00 [crypto]
21 ? S< 0:00 [bioset]
22 ? S< 0:00 [kblockd]
23 ? S< 0:00 [watchdogd]
24 ? S< 0:00 [rpciod]
25 ? S< 0:00 [xprtiod]
26 ? S 0:00 [kswapd0]
27 ? S< 0:00 [vmstat]
28 ? S< 0:00 [nfsiod]
53 ? S< 0:00 [bioset]
54 ? S< 0:00 [bioset]
55 ? S< 0:00 [bioset]
56 ? S< 0:00 [bioset]
57 ? S< 0:00 [bioset]
58 ? S< 0:00 [bioset]
59 ? S< 0:00 [bioset]
60 ? S< 0:00 [bioset]
61 ? S< 0:00 [bioset]
62 ? S< 0:00 [bioset]
63 ? S< 0:00 [bioset]
64 ? S< 0:00 [bioset]
65 ? S< 0:00 [bioset]
66 ? S< 0:00 [bioset]
67 ? S< 0:00 [bioset]
68 ? S< 0:00 [bioset]
69 ? S< 0:00 [bioset]
70 ? S< 0:00 [bioset]
71 ? S< 0:00 [bioset]
72 ? S< 0:00 [bioset]
73 ? S< 0:00 [bioset]
74 ? S< 0:00 [bioset]
75 ? S< 0:00 [bioset]
76 ? S< 0:00 [bioset]
77 ? S 0:02 [kworker/u2:1]
112 ? S 0:00 [irq/52-mmc0]
113 ? S 0:01 [kworker/0:2]
114 ? S< 0:00 [ipv6_addrconf]
115 ? S< 0:00 [bioset]
116 ? S 0:02 [mmcqd/0]
117 ? S< 0:00 [bioset]
118 ? S 0:00 [mmcqd/0boot0]
119 ? S< 0:00 [bioset]
120 ? S 0:00 [irq/33-imx_ther]
121 ? S 0:00 [mmcqd/0boot1]
122 ? S< 0:00 [bioset]
123 ? S 0:00 [mmcqd/0rpmb]
124 ? S 0:00 [jbd2/mmcblk0p3-]
125 ? S< 0:00 [ext4-rsv-conver]
136 ? S 0:00 [kworker/0:3]
143 ? S 0:00 [kworker/u2:2]
146 ? Ss 0:00 /lib/systemd/systemd-journald
167 ? Ss 0:00 /lib/systemd/systemd-udevd
193 ? S 0:00 [w1_bus_master1]
194 ? S 0:00 [w1_bus_master2]
218 ? S 0:00 [jbd2/mmcblk0p6-]
219 ? S< 0:00 [ext4-rsv-conver]
278 ? S< 0:00 [cfg80211]
286 ? S< 0:00 [kworker/u3:0]
287 ? S< 0:00 [hci0]
288 ? S< 0:00 [hci0]
290 ? S< 0:00 [kworker/u3:1]
291 ? S< 0:00 [kworker/u3:2]
294 ? S< 0:00 [kworker/0:1H]
329 ? Ss 0:00 /bin/sh -c /usr/bin/wb-watch-configs cat /var/run/wb-configs.watch
331 ? S 0:00 /bin/bash /usr/bin/wb-watch-configs /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/localtime
337 ? Ss 0:00 /usr/sbin/cron -f
343 ? Ss 0:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
347 ? S 0:00 inotifywait -m --event close_write,moved_to --format %w%f %e /etc
348 ? S 0:00 /bin/bash /usr/bin/wb-watch-configs /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/localtime
358 ? Ss 0:00 /sbin/cgmanager -m name=systemd
360 ? Ss 0:00 /usr/lib/bluetooth/bluetoothd
361 ? Ss 0:00 avahi-daemon: running [wirenboard-A5HT7XZX.local]
364 ? Ss 0:12 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
366 ? Ss 0:00 /lib/systemd/systemd-logind
371 ? S 0:00 avahi-daemon: chroot helper
394 ? S 0:00 /usr/bin/wb-homa-w1
402 ? Ss 0:00 /sbin/syslogd
537 ? Sl 0:01 /usr/bin/wb-mqtt-confed -syslog /usr/share/wb-mqtt-confed
545 ? Ss 0:00 /sbin/klogd
597 ? S 0:06 /usr/bin/wb-mqtt-db -c /etc/wb-mqtt-db.conf
606 ? S 0:00 /bin/bash /usr/bin/wb-watch-update
613 ? S 0:00 inotifywait -m -r --exclude /var/www/uploads/state/ --event close_write /var/www/uploads/
614 ? S 0:00 /bin/bash /usr/bin/wb-watch-update
1114 ? S 0:00 [irq/108-1-0026]
1384 ? S 0:00 [RTW_CMD_THREAD]
1403 ? Ss 0:00 /sbin/wpa_supplicant -s -B -P /run/wpa_supplicant.wlan0.pid -i wlan0 -D nl80211,wext -C /run/wpa_supplicant
1441 ? S 0:00 [spi0]
2142 ? Sl 0:00 /usr/bin/wb-mqtt-mbgate -c /etc/wb-mqtt-mbgate.conf
2226 ? S 0:06 /usr/bin/wb-homa-adc -c /tmp/wb-homa-adc.do-not-edit.conf
2376 ? Ss 0:00 /sbin/dhclient -4 -v -pf /run/dhclient.wlan0.pid -lf /var/lib/dhcp/dhclient.wlan0.leases -I -df /var/lib/dhcp/dhclient6.wlan0.leases wlan0
2721 ? Sl 0:01 /usr/bin/python /usr/bin/wb-homa-rcd 0 75 -1
2871 ? Sl 0:16 /usr/bin/wb-rules -syslog -queue-len 2048 -editdir /etc/wb-rules /usr/share/wb-rules-system/rules/ /etc/wb-rules /usr/share/wb-rules/
3034 ? Ss 0:00 /usr/sbin/sshd -D
3084 ? Ss 0:00 sshd: root@pts/0
3093 tty1 Ss+ 0:00 /sbin/agetty --noclear tty1 linux
3097 ttymxc0 Ss+ 0:00 /sbin/agetty --keep-baud 115200,38400,9600 ttymxc0 vt220
3101 ? S 0:00 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,20326,8,2,e06
3305 ? Ssl 0:00 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 101:103
3318 ? Ss 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
3324 ? S 0:00 nginx: worker process
3325 ? S 0:00 nginx: worker process
3332 ? S 0:00 nginx: worker process
3333 ? S 0:00 nginx: worker process
3339 ? S 0:02 [kworker/u2:3]
3365 ? Ss 0:00 /sbin/netplugd -p /var/run/netplugd.pid
3593 ? Ss 0:00 /sbin/dhclient -4 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases -I -df /var/lib/dhcp/dhclient6.eth0.leases eth0
3645 ? Sl 0:02 /usr/bin/wb-homa-gpio -c /tmp/wb-homa-gpio.do-not-edit.conf
3703 ? SLs 0:00 /usr/sbin/watchdog
3717 ? Ss 0:00 /lib/systemd/systemd --user
3732 ? S 0:00 (sd-pam)
3768 pts/0 Ss 0:00 -bash
3911 ? S 0:00 /bin/bash -c exec /usr/bin/wb-mqtt-serial -c /etc/wb-mqtt-serial.conf 2>&1 | logger -t serial
3912 ? Sl 0:10 /usr/bin/wb-mqtt-serial -c /etc/wb-mqtt-serial.conf
3913 ? S 0:00 logger -t serial
4252 pts/0 R+ 0:00 ps ax

Евгений,
когда впервые заметил эту проблему прошло больше недели между сохранением файла конфигурации и перезагрузкой.

Сейчас попробовал выждать 5 минут после сохранения: тот же результат, после перезагрузки файл через некоторое время возвращается к старой версии.

Странно, вижу, что первый раз wb-mqtt-serial при запуске вылетает у вас с ошибкой, а потом запускается новый экземпляр. Можете прислать для экспериментов ваш /etc/wb-mqtt-serial.conf (не исходный, обновленный)?

Сейчас, пока выясняю причину, использую минимально рабочий конфиг, в нем просто прописаны два MR6C

Обновленный конфиг

{
“debug”: false,
“ports”: [
{
“path”: “/dev/ttyRS485-1”,
“devices”: [
{
“slave_id”: “82”,
“device_type”: “WB-MR6C”
},
{
“slave_id”: “69”,
“device_type”: “WB-MR6C”
}
],
“baud_rate”: 9600,
“parity”: “N”,
“data_bits”: 8,
“stop_bits”: 2,
“poll_interval”: 10,
“enabled”: true
},
{
“path”: “/dev/ttyRS485-2”,
“devices”: [],
“baud_rate”: 9600,
“parity”: “N”,
“data_bits”: 8,
“stop_bits”: 2,
“poll_interval”: 10,
“enabled”: true
},
{
“path”: “/dev/ttyMOD1”,
“devices”: [],
“baud_rate”: 9600,
“parity”: “N”,
“data_bits”: 8,
“stop_bits”: 2,
“poll_interval”: 10,
“enabled”: false
},
{
“path”: “/dev/ttyMOD2”,
“devices”: [],
“baud_rate”: 9600,
“parity”: “N”,
“data_bits”: 8,
“stop_bits”: 2,
“poll_interval”: 10,
“enabled”: false
},
{
“path”: “/dev/ttyMOD3”,
“devices”: [],
“baud_rate”: 9600,
“parity”: “N”,
“data_bits”: 8,
“stop_bits”: 2,
“poll_interval”: 10,
“enabled”: false
}
]
}

Конфиг рабочий: если не перезагружать контроллер, то все работает.

Дело в том, что совершенно не важно какие изменения я вношу - он все равно откатывается назад. Неважно каким способом: через интерфейс или напрямую в файл конфига.

И еще интересная особенность в том, что откатывается он не на совершенно пустой заводской конфиг, а на конфиг с самым первым изменением. Откуда он его берет после этой ошибки - для меня загадка.

Скажите, а вы можете создать файл с произвольным содержимым в директории /mnt/data и посмотреть, что с ним станет после перезагрузки.

Создал новый файл с произвольным содержимым. После перезагрузки и файл и его содержимое не изменилось, все ок.

У меня пока нет понимания, что может происходить. Вы можете отключить запуск сервиса:
systemctl disable wb-mqtt-serial
перезагрузить контроллер, посмотреть, перезапишется ли конфигурационный файл, затем запустить сервис руками через несколько минут после полного старта:
service wb-mqtt-serial start
и снова посмотреть, перезаписался ли conf-файл.

выполняю следующие команды:
systemctl stop wb-mqtt-serial
systemctl disable wb-mqtt-serial
reboot
Однако после перезагрузки сервис снова запускается автоматически и файл конфига перетирается.

Сводка

root@wirenboard-A5HT7XZX:~# systemctl status wb-mqtt-serial
● wb-mqtt-serial.service - LSB: MQTT Driver for serial devices
Loaded: loaded (/etc/init.d/wb-mqtt-serial; generated; vendor preset: enabled)
Active: active (running) since Wed 2019-09-04 00:20:05 MSK; 46s ago
Docs: man:systemd-sysv-generator(8)
Process: 3788 ExecStart=/etc/init.d/wb-mqtt-serial start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/wb-mqtt-serial.service
├─3795 /bin/bash -c exec /usr/bin/wb-mqtt-serial -c /etc/wb-mqtt-serial.conf 2>&1 | logger -t serial
├─3796 /usr/bin/wb-mqtt-serial -c /etc/wb-mqtt-serial.conf
└─3797 logger -t serial

Sep 04 00:20:05 wirenboard-A5HT7XZX systemd[1]: Starting LSB: MQTT Driver for serial devices…
Sep 04 00:20:05 wirenboard-A5HT7XZX systemd[1]: Started LSB: MQTT Driver for serial devices.

root@wirenboard-A5HT7XZX:~# systemctl is-enabled wb-mqtt-serial
wb-mqtt-serial.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install is-enabled wb-mqtt-serial
disabled

Удалил полностью сервис wb-mqtt-serial командой apt-get purge wb-mqtt-serial - перезапись файла после перезагрузки прекратилась.

Установил wb-mqtt-serial командой apt-get install wb-mqtt-serial - перезапись файла опять происходит после ребута. Причем файл “восстанавливается” все в том же виде, как и до переустановки сервиса =))

Сервис так же после старта ОС запускается, падает с ошибкой std::logic_error и после этого запускается вновь, перетирая кофиг.

systemctl status

root@wirenboard-A5HT7XZX:~# systemctl status wb-mqtt-serial
● wb-mqtt-serial.service - LSB: MQTT Driver for serial devices
Loaded: loaded (/etc/init.d/wb-mqtt-serial; generated; vendor preset: enabled)
Active: active (running) since Wed 2019-09-04 00:35:15 MSK; 14s ago
Docs: man:systemd-sysv-generator(8)
Process: 2840 ExecStart=/etc/init.d/wb-mqtt-serial start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/wb-mqtt-serial.service
├─2862 /bin/bash -c exec /usr/bin/wb-mqtt-serial -c /etc/wb-mqtt-serial.conf 2>&1 | logger -t serial
├─2863 /usr/bin/wb-mqtt-serial -c /etc/wb-mqtt-serial.conf
└─2864 logger -t serial

root@wirenboard-A5HT7XZX:~# systemctl status wb-mqtt-serial
● wb-mqtt-serial.service - LSB: MQTT Driver for serial devices
Loaded: loaded (/etc/init.d/wb-mqtt-serial; generated; vendor preset: enabled)
Active: active (exited) since Wed 2019-09-04 00:35:15 MSK; 23s ago
Docs: man:systemd-sysv-generator(8)
Process: 2840 ExecStart=/etc/init.d/wb-mqtt-serial start (code=exited, status=0/SUCCESS)

Sep 04 00:35:15 wirenboard-A5HT7XZX systemd[1]: Starting LSB: MQTT Driver for serial devices…
Sep 04 00:35:15 wirenboard-A5HT7XZX systemd[1]: Started LSB: MQTT Driver for serial devices.

root@wirenboard-A5HT7XZX:~# systemctl status wb-mqtt-serial
● wb-mqtt-serial.service - LSB: MQTT Driver for serial devices
Loaded: loaded (/etc/init.d/wb-mqtt-serial; generated; vendor preset: enabled)
Active: active (running) since Wed 2019-09-04 00:35:41 MSK; 3s ago
Docs: man:systemd-sysv-generator(8)
Process: 3844 ExecStop=/etc/init.d/wb-mqtt-serial stop (code=exited, status=0/SUCCESS)
Process: 3853 ExecStart=/etc/init.d/wb-mqtt-serial start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/wb-mqtt-serial.service
├─3861 /bin/bash -c exec /usr/bin/wb-mqtt-serial -c /etc/wb-mqtt-serial.conf 2>&1 | logger -t serial
├─3862 /usr/bin/wb-mqtt-serial -c /etc/wb-mqtt-serial.conf
└─3863 logger -t serial

Откуда он может брать эту версию конфигурационного файла?!

Как крайний вариант можно попробовать перепрошить контроллер к заводским настройкам, но хочется разобраться. Обсужу с коллегами, напишу, что еще можно сделать.

A_Z, смотрите, скорее всего /etc/wb-mqtt-serial.conf у вас при редактировании превращается в файл, а он должен быть сим-линк:

# ls -la /etc/wb-mqtt-serial.conf 
lrwxrwxrwx 1 root root 33 Sep  4 12:15 wb-mqtt-serial.conf -> /mnt/data/etc/wb-mqtt-serial.conf

Этот сим-линк и пересоздается при перезагрузке.
Как вы его редактируете?

Обычно редактировал либо через UI, либо непосредственно симлинк /etc/wb-mqtt-serial.conf с помощью nano.

Сейчас поробовал редактировать напрямую /mnt/data/etc/wb-mqtt-serial.conf через nano, но после перезагрузки файл снова “откатился”.

А у вас /etc/wb-mqtt-serial.conf точно указывает на /mnt/data/etc/wb-mqtt-serial.conf?
Загадочно это все. Покажите еще, пожалуйста, вывод команды
/usr/bin/wb-configs-early start
Перезапишется ли после ее выполнения конфиг?

Да, точно:

ls -lA /etc/wb-mqtt-serial.conf

lrwxrwxrwx 1 root root 33 Jul 12 23:22 /etc/wb-mqtt-serial.conf -> /mnt/data/etc/wb-mqtt-serial.conf

  1. Переписал конфиг: # nano /mnt/data/etc/wb-mqtt-serial.conf
  2. Рестартнул сервис: # systemctl restart wb-mqtt-serial
  3. Все работает как ожидается, новый конфиг применился.
  4. Запустил команду: # /usr/bin/wb-configs-early start
Вывод команды

Checking symlinks to /mnt/data /var/log: binding to /mnt/data/var/log umount: /var/log: target is busy (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1).)

  1. Конфиг остался неизменным, все ок, не “откатился”.
  2. После ребута конфиг как обычно через некоторое время “откатился”

A_Z, добрый день!
А можете, пожалуйста, показать еще вывод команды
mosquitto_sub -v -t "/rpc/#" – есть у меня подозрение, что изменение к старой конфигурации прилетает по mqtt.

Спасибо большое, изменение действительно прилетало по mqtt!!!
Там кроме этого конфига еще несколько изменений прилетало оказывается. Почему-то про то, что конфиг через mqtt может прилетать я не подумал =(