3주가 지났지만 아직도 이 시스템 예약 서비스가 실행되지 않는 이유를 알 수 없습니다. 제가 수행한 모든 연구를 나열하지는 않지만, 제가 진행 중인 작업을 간단히 보여 드리겠습니다.
누구든지 문제를 찾을 수 있는 방향을 알려주시면 매우 감사하겠습니다.
표적
Flameshot을 사용하여 매분마다 스크린샷을 캡처하세요.
사소한 것
배쉬 스크립트
출력은 다음에서 비롯됩니다.test@test-i3:~$ cat /usr/share/screenmonitor/screenMonitor.bash
#!/bin/bash
/usr/bin/flameshot full --path /home/test/.screenshots
exit
시스템 서비스 유닛
출력은 test@test-i3:~$ cat /etc/systemd/system/screenMonitor.service
...
[Unit]
Description=Capture screenshots at a given interval
Wants=screenMonitor.timer
[Service]
Type=simple
User=test
Group=test
ExecStart=/usr/share/screenmonitor/screenMonitor.bash
[Install]
WantedBy=multi-user.target
시스템화된 타이머 장치
출력은 다음에서 비롯됩니다.test@test-i3:~$ cat /etc/systemd/system/screenMonitor.timer
[Unit]
Description=Capture screenshots at a given interval
Requires=screenMonitor.service
[Timer]
Unit=screenMonitor.service
OnCalendar=*-*-* *:*:00
[Install]
WantedBy=timers.target
문제 해결
질문
예상된 스크린샷이 표시되지 않음/home/test/.screenshots
문제를 찾고
bash 스크립트는 수동으로 실행됩니까? 예, 예상 폴더에 스크린샷이 생성됩니다.
test@test-i3:~$ /usr/share/screenmonitor/screenMonitor.bash
서비스가 실행되었나요? 성공적으로 실행됩니까? 예, 로그에는 서비스가 예상 간격으로 성공적으로 실행되고 있음이 표시됩니다.
Apr 11 08:06:31 test-i3 systemd[1]: Started Capture screenshots at a given interval.
Apr 11 08:06:31 test-i3 systemd[1]: screenMonitor.service: Succeeded.
Apr 11 08:07:31 test-i3 systemd[1]: Started Capture screenshots at a given interval.
Apr 11 08:07:31 test-i3 systemd[1]: screenMonitor.service: Succeeded.
Apr 11 08:08:31 test-i3 systemd[1]: Started Capture screenshots at a given interval.
Apr 11 08:08:31 test-i3 systemd[1]: screenMonitor.service: Succeeded.
질문
따라서 스크립트가 작동하고 서비스가 성공적으로 실행되었음을 표시하지만 스크린샷은 표시되지 않습니다. systemd 서비스가 예상한 스크린샷을 반환하지 않는 이유를 다음으로 어디에서 확인할 수 있나요?
편집 - 더 완전한 로그를 추가했습니다.
이 시스템 장치가 실제로 사용자 세션이 아닌 시스템 작업으로 실행되고 있다는 것을 어디서 찾을 수 있습니까?
@MarcusMüller는 “체계작업은 사용자 세션에서 실행하는 데 필요한 설정을 알 수 없습니다. "나는 그가 옳았기를 바란다.
근데 아직도 로그에는 안보이네요그리고systemd 장치는 사용자로 실행되도록 설정되었습니다.
보다 자세한 로그 세트 내보내기(예: @foshyboy)언급하다)는 systemd 장치가 예상 간격으로 성공적으로 실행됨을 보여줍니다.
test@test:~$ sudo journalctl -u screenMonitor.service -o verbose | tail -n57
Mon 2022-05-02 15:14:11.634017 -03 [s=54677f9d50e54de79146a6d96eddd5d3;i=dbd;b=7847eb41c0ef46eeb98aab83c90091c7;m=5457c5970;t=5de0b5bea2f81;x=1377c5d4806eaaf]
PRIORITY=6
SYSLOG_FACILITY=3
SYSLOG_IDENTIFIER=systemd
UNIT=screenMonitor.service
_TRANSPORT=journal
_PID=1
_UID=0
_GID=0
_COMM=systemd
_EXE=/usr/lib/systemd/systemd
_CMDLINE=/sbin/init
_CAP_EFFECTIVE=3fffffffff
_SELINUX_CONTEXT=unconfined
_SYSTEMD_CGROUP=/init.scope
_SYSTEMD_UNIT=init.scope
_SYSTEMD_SLICE=-.slice
_BOOT_ID=7847eb41c0ef46eeb98aab83c90091c7
_MACHINE_ID=279c8612447944b6925e3f6aa4adf4b8
_HOSTNAME=test
CODE_FILE=../src/core/job.c
CODE_LINE=950
CODE_FUNC=job_log_done_status_message
MESSAGE=Started Capture screenshots at a given interval.
JOB_TYPE=start
JOB_RESULT=done
MESSAGE_ID=39f53479d3a045ac8e11786248231fbf
JOB_ID=50117
INVOCATION_ID=40e5dd06027f4196a7b07a91a96ce730
_SOURCE_REALTIME_TIMESTAMP=1651515251634017
Mon 2022-05-02 15:14:11.656875 -03 [s=54677f9d50e54de79146a6d96eddd5d3;i=dbe;b=7847eb41c0ef46eeb98aab83c90091c7;m=5457cb2b5;t=5de0b5bea88c6;x=6c97e2c69c2188c5]
PRIORITY=6
SYSLOG_FACILITY=3
CODE_FILE=../src/core/unit.c
CODE_LINE=5487
CODE_FUNC=unit_log_success
SYSLOG_IDENTIFIER=systemd
MESSAGE_ID=7ad2d189f7e94e70a38c781354912448
UNIT=screenMonitor.service
MESSAGE=screenMonitor.service: Succeeded.
_TRANSPORT=journal
_PID=1
_UID=0
_GID=0
_COMM=systemd
_EXE=/usr/lib/systemd/systemd
_CMDLINE=/sbin/init
_CAP_EFFECTIVE=3fffffffff
_SELINUX_CONTEXT=unconfined
_SYSTEMD_CGROUP=/init.scope
_SYSTEMD_UNIT=init.scope
_SYSTEMD_SLICE=-.slice
_BOOT_ID=7847eb41c0ef46eeb98aab83c90091c7
_MACHINE_ID=279c8612447944b6925e3f6aa4adf4b8
_HOSTNAME=test
INVOCATION_ID=40e5dd06027f4196a7b07a91a96ce730
_SOURCE_REALTIME_TIMESTAMP=1651515251656875
답변1
더 자세한 출력을 보려면 journalctl
다음을 사용할 수 있습니다.
journalctl -o verbose
journalctl -o json-pretty
로그 출력을 특정 서비스로 추가로 필터링하려면 다음을 사용하세요.
journalctl -u screenMonitor.service -o verbose
journalctl -u screenMonitor.service -o json-pretty