systemd
사용자 정의 파일을 사용하여 임베디드 Linux 장치에서 프로그램을 시작하는 서비스가 있습니다 . 파일이 수정/변경되면 자동으로 이 서비스를 시작하고 싶습니다. 매뉴얼을 읽는 동안 유닛 파일을 사용하여 이를 수행하는 솔루션을 systemd
발견했습니다 . .path
내 설정은 다음과 같습니다.
test.service
[Unit]
Description=MyApp
After=network-online.target
[Service]
WorkingDirectory=/data/test
ExecStart=/usr/bin/myapp -c /data/test/myconfig.cfg
[Install]
WantedBy=multi-user.target
test-restart.service
내용이 포함된 파일을 만들었습니다 .
[Service]
Type=OneShot
ExecStart=/usr/bin/systemctl restart test.service
추가적으로 단위 파일이 있습니다 test-restart.path
:
[Path]
Unit=test-restart.service
PathChanged=/data/test/myconfig.cfg
[Install]
WantedBy=multi-user.target
그러나 제가 이해한 바에 따르면 를 실행해야 합니다 systemctl enable --now test-restart.path
. 파일이 수정된 후 test-restart.service
활성화되면 이 작업이 실행되어 다시 시작됩니다 test.service
. 그런데 systemctl enable --now test-restart.path
자동으로 호출하는 방법을 모르겠네요 ? 내 말은, 이 작업을 매번 수동으로 수행해야 합니까(또는 처음에만 수행해야 합니까?) 아니면 처리해야 합니까 systemctl
? 장치가 재부팅되면 어떻게 되나요? systemctl enable --now test-restart.path
수동으로 다시 호출 해야 하나요 ?
미리 감사드립니다.
추신: 여기에 누락된 정보가 있으면 알려주세요.
답변1
훌륭한
systemctl enable --now test-restart.path
부팅 시 자동으로 시작되도록 설정합니다.- 지정된 시작 수준에 소프트 링크를 추가합니다.
- 이는 지속적인 동작입니다.
systemd
시작 시 시작됩니다.- 역방향 종속성을 볼 수 있습니다.
systemctl list-dependencies test-restart.path --reverse
systemctl enable --now test-restart.path
다시 수동으로 할 필요가 없습니다- 기기는 한 번만 다시 시작하면 됩니다.
test-restart.path
시스템이 시작되면 자동으로 시작됩니다.