別画面で構成

別画面で構成

screenスタンドアロンコマンドを使用してサービスを開始したいです。その背景はシリアルインタフェースを読み取って画面に再接続する必要があり、エラーが発生した場合は対話したりシリアルインタフェースを介してコマンドを送信したりできます。

現在私

システムサービスファイル

[Unit]
Description=read serial interface

[Service]
User=someUser
Group=someUser
Type=forking
Restart=on-failure
RestartSec=3
WorkingDirectory=/home/someUser/dev
ExecStart=/usr/bin/screen -DmS serial-magic /home/someUser/dev/run-serial-magic.sh

[Install]
WantedBy=multi-user.target

/home/someUser/dev/run-serial-magic.sh 以下のスクリプト

#!/bin/bash

pio device monitor -b 115200 -p /dev/ttyUSB0 | tee test.log

私はすでに試しました。

  • モバイルスクリプトscreen内部。
  • 代わりにType=simple画面オプションを使用してください-d-D

コマンドラインから手動で呼び出すと、スクリプトは正しく機能します。画面に戻って再び分離できます。しかし、私が奉仕を始めたとき、sudo journalctl -f -u someServoce.serviceそれは私に

Okt 23 18:13:28 someHost systemd[1]: Starting read serial interface...

しかしscreen -list

No Sockets found in /run/screen/S-someUser.

ベストアンサー1

この場合、画面が実際に実行されていることを確認した場合、サービスファイルの「someUser」が実際にscreen -listエラーのsomeUserと異なると仮定します。この場合、画面でマルチユーザーサポートを有効にする必要があります。

サービスのように使う予定なので

    echo "multiuser on" >> /home/<service user>/.screenrc
    echo "acladd <user who needs access to screen>" >> /home/<service user>/.screenrc

これにより、サービスユーザー画面のデフォルトとして追加されます。このユーザーのサービスのみを使用する場合はさらにお勧めします画面用に別々のプロファイルを作成するそしてそれを使って電話してください

    /usr/bin/screen -c /path/to/config.conf -DmS serial-magic /home/someUser/dev/run-serial-magic.sh
    

サービスファイルの「ExecStart =」

その後、次を使用して画面にアクセスできます。screen -x <service user>/serial-magic

テストサーバーRHEL 7でこれを確認しました。

おすすめ記事