簡體   English   中英

在 Linux Raspbian 上運行服務

[英]Running a Service on Linux Raspbian

我希望在啟動時在運行 Raspbian Buster 的 Raspberry Pi 3 B+ 上自動啟動一個程序。 該程序使用 Java(最初使用 Processing 創建,但可以使用 shell 腳本啟動它。

我試圖使用 systemctl 來執行此操作,並創建了"reader.service" ,將其移動到適當的文件夾,並使其在啟動時啟動。 但是重新啟動后沒有跡象表明程序正在運行。 (它應該打開一個新窗口來顯示程序正在運行,但什么也不做。)

檢查服務返回的狀態

reader.service - Reader Service
Loaded: loaded(/etc/systemd/system/reader.service; enabled; vendor present: enabled)
Active: active (running) since Sat 2020-01-04 22:53:26 PST; 483ms ago
Main PID: 1039 (Reader_0_6)
Tasks: 9 (limit: 2200)
Memory: 5.5M
CGroup: /system.slice/reader.service

盡管使用終端或雙擊 shell 腳本本身確實成功啟動了程序。

為了完整起見,我將在下面包含實際的 reader.service 文件。

[Unit]
Description=Reader Service
After=network.target

[Service]
ExecStart=/home/pi/Desktop/Readerv0.6/application.linux64/Reader_0_6
StandardOutput=inherit
StandardError=inherit
Restart=always
User=pi

[Install]
WantedBy=multi-user.target

我真的很感謝任何回應,或朝着正確方向前進的提示,並且很樂意提供更多信息!

編輯:按照建議我運行sudo journalctl -f -u reader.service以獲取運行時的日志。 返回以下內容。

systemd[1]: Started Reader Service.
Reader_0_6[19468]: Cannot run sketch without a display. Read this for possible solutions:
Reader_0_6[19468]: https://github.com/processing/processing/wiki/Running-without-a-Display
systemd[1]: reader.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: reader.service: Failed with result 'exit-code'.

但是該鏈接提供了運行無頭應用程序的解決方案,我對使用 Display 感興趣。 我直接插入了 HDMI,所以這應該不是問題。 有沒有辦法在運行命令時傳遞 $DISPLAY ,在修改 reader.service 后改為說After=graphical.target它返回相同的日志。

不幸的是,默認情況下,服務未綁定到任何圖形設備。

我最終做的是很難找到:

[Service]
# ... other options ...
# Necessary:
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/pi/.Xauthority
# Bonus no black screen:
ExecStartPre=/usr/bin/xset -dpms
ExecStartPre=/usr/bin/xset s off
# Bonus stdout on Ctrl+Alt+F8:
StandardOutput=append:/dev/tty8

不幸的是,Chromium 現在會在此設置下崩潰,因此發生了一些變化。 我不知道你的程序是否會受到影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM