ターゲット

ターゲット

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

関連情報