Shell-Script
如何在每次重新啟動時啟動 cpp bin?
我是 LINUX 作業系統的初學者,我的問題是下一個:
我有一個使用 OpenCV 和另一個庫的 C++ 原始碼編譯的 bin,它在螢幕上顯示從 USB 相機提供的圖像。我的程式碼工作正常,下一步是每次我的板子上電時執行這個 bin 文件。我做了一些研究,發現可以幫助我的可靠方法是創建我自己的服務,該服務可以使用 systemctl 啟用。我試過但沒有成功,但我不確定我的服務文件是否配置正確。另外,我嘗試使用啟動應用程序,再次失敗。PS:我的主機板:Nvidia Jetson Tx2,我的作業系統: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'
我的 shell daemonVDM.sh 工作正常
我執行了以下命令:
sudo chmod 777 myscript.service systemctl start myscript systemctl enable myscript
我找到了解決方案。這是服務文件的配置:
[Unit] Description=Script that will execute my bin [Service] ExecStart=/home/nvidia/Desktop/daemonScripts/daemonVDM.sh Environment="DISPLAY=:1" Environment="XAUTHORITY=/run/user/1000/gdm/Xauthority" RestartSec=30 Restart=always [Install] WantedBy=multi-user.target
這部分是錯誤的
#!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 腳本根本不處理任何命令行參數。