Intereting Posts
Как разрешить доступ к каталогу и не разрешать доступ к подкаталогу в Apache? Где docky хранит свою конфигурацию? Каков синтаксис для выбора диапазона строк в Vim? Не удается подключиться к беспроводному соединению NetworkManager Где поставить пространство подкачки, с начала или конца и другие вопросы свопинга Как использовать функцию ctags в vim с установленным cscope? Rsync передает больше данных, чем разница между источником и получателем, почему? Запросы на поиск труб в vim или менее начиная с последней строки, обрабатываемой при обработке файла журнала несколько раз При удалении пакета через «apt-get remove», почему вы должны (иногда) обновлять другие пакеты в процессе? Команда, которая может находить файлы, на которые не ссылаются другие файлы, а затем удалять их Объяснение sed в сценарии оболочки Плитка с большим количеством изображений с терминала Как установить инструменты программирования в корневой каталог, чтобы они могли использоваться пользователями, не являющимися администраторами? Как перенести файл в каталог другого пользователя?

Служба systemd не запускает команду tmux при перезагрузке

Я использую образ Yocto на основе ядра linux-mainline . У меня systemd на встроенной ОС, которую я создал.

цель

У меня есть UMTS-ключ, подключенный к плате, который будет использовать usb_modeswitch для распознавания ключа и wvdial для подключения к 3G-инфраструктуре.

метод

Я написал простой скрипт bash в /usr/umts.sh следующим образом

 #!/bin/bash sleep 1; usb_modeswitch --default-vendor 12d1 --default-product 1446 -J sleep 1; /usr/bin/tmux new-session -d -s Cloud /usr/bin/tmux set-option set-remain-on-exit on /usr/bin/tmux new-window -d -n 'wvdial' -t Cloud:1 'sleep 1; /usr/bin/wvdialconf; /usr/bin/wvdial'; 

usb_modeswitch настроит USB-ключ, а следующая часть создаст сеанс tmux и запустит wvdial внутри.

мой скрипт systemd выглядит следующим образом в /etc/systemd/system/enable-umts.service

Файл GNU nano 2.2.5: /etc/systemd/system/enable-umts.service

 [Unit] Description=Enable UMTS Dongle for Cloud Connectivity [Service] Type=oneshot ExecStart=/usr/umts.sh [Install] WantedBy=default.target 

(Я дал права на выполнение скрипта, используя chmod +x /usr/umts.sh )

Я перезагрузил демон systemctl daemon-reload и включил службу systemctl enable enable-umts.service

и перезагрузил плату (ПРИМЕЧАНИЕ: у меня только root на плате и нет другого user )

usb_modeswitch dmesg запускает usb_modeswitch из приведенного выше скрипта, и я вижу связанные сообщения

 [ OK ] Started Enable UMTS Dongle for Cloud Connectivity. [ 13.051247] scsi host2: usb-storage 1-1:1.5 [ 13.067326] usb-storage 1-1:1.6: USB Mass Storage device detected [ 13.074645] scsi host3: usb-storage 1-1:1.6 [ 13.158627] usbcore: registered new interface driver usbserial [ 13.165501] usbcore: registered new interface driver usbserial_generic [ 13.174754] usbserial: USB Serial support registered for generic [ 13.202356] usbcore: registered new interface driver option [ 13.208714] usbserial: USB Serial support registered for GSM modem (1-port) [ 13.216468] option 1-1:1.0: GSM modem (1-port) converter detected [ 13.229840] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0 [ 13.238774] option 1-1:1.3: GSM modem (1-port) converter detected [ 13.248906] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1 [ 13.256172] option 1-1:1.4: GSM modem (1-port) converter detected [ 13.264467] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2 [ 14.069960] scsi 2:0:0:0: CD-ROM HUAWEI Mass Storage 2.31 PQ: 0 ANSI: 2 [ 14.088684] scsi 3:0:0:0: Direct-Access HUAWEI TF CARD Storage PQ: 0 ANSI: 2 [ 14.127686] sd 3:0:0:0: [sda] Attached SCSI removable disk GSM modem (1-port) converter detected ] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0 [ 13.238774] option 1-1:1.3: GSM modem (1-port) converter detected [ 13.248906] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1 [ 13.256172] option 1-1:1.4: GSM modem (1-port) coPassword 

Но при входе в систему я пытаюсь перечислить сессии tmux ls и в ней говорится, что сессии не созданы.

`Сценарий на самом деле не дает сбоя, и статус службы выглядит следующим образом:

 ● enable-umts.service - Enable UMTS Dongle for Cloud Connectivity Loaded: loaded (/etc/systemd/system/enable-umts.service; enabled; vendor preset: enabled) Active: inactive (dead) since Thu 2018-05-17 12:52:10 UTC; 4min 51s ago Process: 214 ExecStart=/usr/umts.sh (code=exited, status=0/SUCCESS) Main PID: 214 (code=exited, status=0/SUCCESS) May 17 12:52:09 phyboard-mira-imx6-3 umts.sh[214]: Set up interface 0 May 17 12:52:09 phyboard-mira-imx6-3 umts.sh[214]: Use endpoint 0x01 for message sending ... May 17 12:52:09 phyboard-mira-imx6-3 umts.sh[214]: Trying to send message 1 to endpoint 0x01 ... May 17 12:52:09 phyboard-mira-imx6-3 umts.sh[214]: OK, message successfully sent May 17 12:52:09 phyboard-mira-imx6-3 umts.sh[214]: Reset response endpoint 0x81 May 17 12:52:09 phyboard-mira-imx6-3 umts.sh[214]: Reset message endpoint 0x01 May 17 12:52:09 phyboard-mira-imx6-3 umts.sh[214]: Could not reset endpoint (probably harmless): -99 May 17 12:52:09 phyboard-mira-imx6-3 umts.sh[214]: Device is gone, skip any further commands May 17 12:52:09 phyboard-mira-imx6-3 umts.sh[214]: -> Run lsusb to note any changes. Bye! May 17 12:52:10 phyboard-mira-imx6-3 systemd[1]: Started Enable UMTS Dongle for Cloud Connectivity. 

Если выполнить скрипт /usr/umts.sh как отдельный скрипт, то фактически он делает все, что должен (открыть новый сеанс tmux и wvdial )

Что здесь не так? Я пытался добавить больше времени для sleep но это тоже не работает. К сожалению, для образа yocto, над которым я работаю, нет rc.local или cron .

Я добавил RemainAfterExit=yes|true в мой скрипт systemd следующим образом:

 [Unit] Description=Enable UMTS Dongle for Cloud Connectivity [Service] Type=oneshot ExecStart=/usr/umts.sh RemainAfterExit=true [Install] WantedBy=default.target 

Добавлены полные пути к umts.sh следующим образом:

 #!/bin/bash sleep 1; /usr/bin/tmux new-session -d -s Cloud /usr/bin/tmux set-option set-remain-on-exit on /usr/bin/tmux new-window -d -n 'usb_modeswitch' -t Cloud:2 '/usr/sbin/usb_modeswitch --default-vendor 12d1 --default-product 1446 -J'; /usr/bin/tmux new-window -d -n 'wvdial' -t Cloud:1 'sleep 10; /usr/bin/wvdialconf; /usr/bin/wvdial'; 

Перезагрузил демон

systemctl daemon-reload

и перезагрузил плату. и нашел сессии tmux созданные и работающие отлично