AC 소스 코드에서 가져온 개체 파일인 응용 프로그램이 있습니다. 터미널에서 이 애플리케이션을 실행하면 제대로 작동합니다.
시스템이 시작될 때 이 애플리케이션을 실행하고 싶습니다. 현재 터미널에서 모든 로그 데이터를 인쇄하고 있으므로 터미널을 열고 이 애플리케이션을 터미널에서 실행하고 싶습니다(실시간 로그를 보고 터미널에서 내 애플리케이션에 입력을 제공할 수 있도록).
몇 가지 튜토리얼을 검색한 후 시작 시 쉘 스크립트를 실행하는 서비스를 만들 수 있었습니다. 터미널을 열고 애플리케이션을 실행하도록 이 스크립트를 수정했습니다. 터미널에서 쉘 스크립트를 실행하면 제대로 작동합니다.
그러나 서비스에서 스크립트를 실행하면 다음과 같은 경고가 표시됩니다.
(x-terminal-emulator:16048): Gtk-warning**: 디스플레이를 열 수 없습니다:
내가 어디서 잘못됐나요?
여기서는 데비안에서 실행되는 beaglebone black을 사용하고 있습니다.
내 서비스 코드(application.service)입니다.
[Unit]
Description=application setup
[Service]
WorkingDirectory=/root/application/
ExecStart=/root/application/start_application
SyslogIdentifier=application
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
이것은 start_application.sh입니다.
#! /bin/sh
#
# start_app_server
#
echo "Starting application server"
x-terminal-emulator -e "app_server/a.out"
echo Done
답변1
*nix 방식은 터미널 없이 스크립트를 시작하고 출력을 로그 파일로 보내는 것입니다. 예를 들어:
app_server/a.out > /var/log/app_server.log &
그런 다음 사용자의 crontab 에 추가할 수 있습니다 @reboot
.
일단 유효하면,진짜*nix 접근 방식은 어떤 형태로든 포함된 서비스를 만드는 것입니다.산업용 컴퓨터필요한 경우.