Для получения ключей свяжитесь со мной по email
To receive the keys, please contact me by email
aburakhin@bk.ru
Все, что связано с работой или увлечением, чтобы не забыть.
Для получения ключей свяжитесь со мной по email
To receive the keys, please contact me by email
aburakhin@bk.ru
$ lsblk --output KNAME,SERIAL /dev/sdb
KNAME SERIAL
sdb 4CEDFB6D543AF360199308B2
пример, найденный в нете. Работает.
Скрипт (работает)
#!/bin/bash
for C in `ls /sys/block/`; do
RE=`cat /sys/block/$C/removable`
if [ $RE == "1" ] ;then
#VENDOR=`/bin/udevadm info --name=/dev/$C | grep ID_VENDOR=|awk -F"=" ' { print $2}'`
#MODEL=`/bin/udevadm info --name=/dev/$C | grep ID_MODEL=|awk -F"=" ' { print $2}'`
#SERIAL=`/bin/udevadm info --name=/dev/$C | grep SERIAL_SHORT|awk -F"=" ' { print $2}'`
#echo $VENDOR-$MODEL"-"$SERIAL #print as per your taste
USB_SERIAL=`/bin/udevadm info --name=/dev/$C | grep ID_SERIAL=|awk -F"=" ' { print $2}'|awk -F"-" ' { print $1}'`
echo $USB_SERIAL #or just the default one
fi
done
Такой утилиты нет, не проверено.
# smartctl /dev/sda -i | grep Serial Serial Number: S1D3LYBG290266
На примере сервисов RapidScada (приложения dotnet)
Контроль Коммуникатора
#!/bin/bash
STATUS="$(systemctl is-failed scadacomm6.service)"
if [ "${STATUS}" = "failed" ]; then
systemctl restart scadacomm6.service
else
exit 1
fi
Контроль WEB
#!/bin/bash
STATUS="$(systemctl is-failed scadaweb6.service)"
if [ "${STATUS}" = "failed" ]; then
systemctl restart scadaweb6.service
else
exit 1
fi
Для запуска графического приложения через systemd используем .service
Пример запуска экранной клавиатуры сервисом при старте устройства от пользователя (ubuntu в примере) после старта графической оболочки.
onboard.service
--------------------------------------------------------------------------------------------------------------------------
[Unit]
Description=Start onboard
PartOf=graphical.target
After=graphical.target
[Service]
Type=Application
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/home/ubuntu/.Xauthority"
ExecStartPre=+sh -c 'touch /var/run/onboard.pid'
ExecStart=/usr/bin/onboard
ExecStartPost=+sh -c 'pgrep onboard > /var/run/onboard.pid'
SyslogIdentifier=onboard
Restart=always
PIDFile=/var/run/onboard.pid
OOMScoreAdjust=-100
User=ubuntu
Group=ubuntu
[Install]
WantedBy=graphical.target
Номер дисплея можно посмотреть командами
ls /tmp/.X11-unix
ls /tmp/.X11-unix | tr 'X' ':'
ps e | grep -Po " DISPLAY=[\.0-9A-Za-z:]* " | sort -u (непосредственно пользователем)
ps e -u ubuntu | grep -Po " DISPLAY=[\.0-9A-Za-z:]* " | sort -u (указав пользователя ubuntu)
lsb_release -a
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm
Далее нужно обновить конфигурацию дерева устройств и задать номер pin, который будет слушать наш драйвер. Использовал pin PC9 - gpios 0x2 (C третья буква)
пример конвертации файлов dtb или dtbo в dts и обратно.
# apt-get install device-tree-compiler
# cd /boot/orangepi
# dtc -b 0 -O dts -I dtb -o any.dts any.dtb # dtb -> dts
# редактируем наш dts
# dtc -b 0 -O dtb -I dts -o any.dtb any.dts # dts -> dtb(o)
dtc -b 0 -O dtb -I dts -o sun50i-h616-w1-gpio.dtbo sun50i-h616-w1-gpio.dts
в /boot/orangepiEnv.txt добавлена только строка, возможно и не нужна.
overlays=w1-gpio
в /etc/modules ничего не добавляется.
https://github.com/Drewsif/PiShrink
Использование скрипта. с ключом -s
apt install socat
socat tcp-l:4000,reuseaddr,fork /dev/mydev/Com1,raw,echo=0,b115200 2>1 1>/dev/null&