표적

표적

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

문제를 찾고

  1. bash 스크립트는 수동으로 실행됩니까? 예, 예상 폴더에 스크린샷이 생성됩니다.test@test-i3:~$ /usr/share/screenmonitor/screenMonitor.bash

  2. 서비스가 실행되었나요? 성공적으로 실행됩니까? 예, 로그에는 서비스가 예상 간격으로 성공적으로 실행되고 있음이 표시됩니다.

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다음을 사용할 수 있습니다.

  1. journalctl -o verbose
  2. journalctl -o json-pretty

로그 출력을 특정 서비스로 추가로 필터링하려면 다음을 사용하세요.

  1. journalctl -u screenMonitor.service -o verbose
  2. journalctl -u screenMonitor.service -o json-pretty

관련 정보