시작 시 애플리케이션 시작

시작 시 애플리케이션 시작

저는 현재 프로젝트에서 RHEL 7.0을 사용하고 있습니다. 임베디드 애플리케이션이 있고 시작 시 이를 실행하고 싶습니다. 동일한 exe 파일이 있습니다. systemctl 명령을 사용해 보았지만 도움이 되지 않았습니다. 또한 inittab 파일을 편집해 보았지만 그것도 도움이 되지 않았습니다. 또한 rc.local 파일을 추가하고 rc.d를 편집하여 rc.local 실행을 추가하려고 시도했지만 파일을 수정할 수 없다고 말합니다. (이것을 시도했을 때 저는 sudo 모드에 있었습니다).

사용자에게 로그인을 요청하지 않고 시작 시 애플리케이션을 실행하고 싶습니다. 또한 시작 시 감지될 수 있도록 exe를 파일 시스템의 어디에 저장해야 합니까? 누구든지 이것을 달성하는 방법을 안내해 줄 수 있습니까?

답변1

다음 단위 파일을 템플릿으로 사용할 수 있습니다.

[Unit]
Description=A Test Service That Prints the date
After=network.target
[Service]
EnvironmentFile=-/etc/sysconfig/myservice
ExecStart=/usr/bin/bash -c "/usr/bin/date >> /now.txt" $MYSERVICE_ARGS
[Install]
WantedBy=multi-user.target

/etc/systemd/system/파일 확장자 로 저장하세요 .service(예 /etc/systemd/system/myservice.service: )

/etc/sysconfig/myservice명령줄 옵션을 보관하기 위한 변수 생성을 포함하여 애플리케이션에 필요한 모든 환경 변수를 에 배치할 수 있습니다 .

MYSERVICE_ARGS=--posix

ExecStart(변수를 명령줄 옵션으로 사용하는 경우 다음과 같이 명령에 변수를 추가하세요 ExecStart=/usr/local/bin/myservice $MYSERVICE_ARGS. :)

테스트해보세요:

# systemctl start myservice

/now.txt이제 실행할 때마다 날짜/시간이 추가된 파일이 있어야 합니다 .

부팅 시 시작되도록 설정합니다.

# systemctl enable myservice

이제 네트워크가 활성화되면 자동으로 시작됩니다.

ExecStart애플리케이션을 실행하려면 이 줄을 변경하세요 . 쉘에서는 실행 systemd되지 않으므로 리디렉션이 필요한 경우 예제를 따라야 ExecStart합니다 . bash -c또한 변수가 없으므로 $PATH전체 경로가 사용됩니다. 응용 프로그램은 사용자로 실행됩니다 root.

더 많은 옵션을 사용할 수 있습니다 - 읽기매뉴얼 페이지. 또한 시스템의 유닛 파일을 찾아보세요 /usr/lib/systemd/system.

관련 정보