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