私はLINUXオペレーティングシステムの初心者であり、次の質問は次のとおりです。
OpenCVとUSBカメラが提供する画像を画面に表示する別のライブラリを使用するC ++ソースコードからコンパイルされたリポジトリがあります。私のコードは正しく動作します。次のステップは、マイボードの電源を入れるたびにこのbinファイルを実行することです。私はいくつかの調査の結果、systemctlを使用してアクティブにできる独自のサービスを作成することが私を助けるための信頼できる方法であることを発見しました。試しましたが成功しませんでしたが、サービスファイルが正しく設定されているかどうかはわかりません。また、スタートアップアプリを試してみましたが、もう一度失敗しました。 PS:私のマザーボード:Nvidia Jetson Tx2、私のOS:Ubuntu 18.04 LTS。
どんな提案でもお待ちしており、ご回答いただきありがとうございます。ありがとうございます!
編集:マイサービスファイルの設定:
[Unit]
Description=Script that will execute my bin
[Service]
ExecStart=/home/nvidia/Desktop/daemonScripts/daemonVDM.sh start
[Install]
WantedBy=multi-user.target
これdaemonVDM.sh
#!usr/bin/bash
path_vdm_bin="/home/nvidia/Desktop/running"
cd $path_vdm_bin
./vdm --camera-sources 1
出力systemctl status myscript
myscript.service: Main process exited, code=exited, status=203/EXEC
myscript.service: Failed with result 'exit-code'
私のシェルdaemonVDM.shが正常に動作します。
次のコマンドを実行しました。
sudo chmod 777 myscript.service
systemctl start myscript
systemctl enable myscript
ベストアンサー1
この部分が間違っています。
#!usr/bin/bash
試してみてください
#! /bin/bash
実際にこれをさらに単純化してみましょう。
#! /bin/bash
cd /home/nvidia/Desktop/running && ./vdm --camera-sources 1
これでvdm
、アプリケーションはスクリプトがターゲットディレクトリに入ることができる場合にのみ実行され、それ以外の場合は終了します。
[Service]
ExecStart=/home/nvidia/Desktop/daemonScripts/daemonVDM.sh start
start
病気ではありませんが、必ずしも必要ではありません。削除するだけです。あなたのbashスクリプトはコマンドライン引数をまったく処理しません。