23.04.2022, 11:14
(Dieser Beitrag wurde zuletzt bearbeitet: 29.04.2022, 18:16 von Jules Dreki.)
Ich habe mich nun doch entschlossen, einen systemd Timer zum Starten eines Virusscan zu benutzen. Der Grund ist, man kann diese Timer so konfigurieren, daß sie verpasste Ereignisse nachholen. Das konnte ich unter Manjaro Linux mit dem Cronnie nicht klären, bzw. hier werden standardmässig systemd Timer benutzt. Der Cronnie ist zwar installiert aber nach der Installation nicht aktiv.
Um einen Timer zu erstellen müssen im Pfad "/lib/systemd/system" 2 Dateien erstellt werden. Eine virus-scan.timer die den Timer definiert, und eine virus-scan.service die durch den Timer ausgeführt wird. Die Namen der Dateien sind natürlich frei wählbar. Haben beide Dateien den selben Namen und nur unterschiedliche Erweiterungen, brauch der Timer den auszuführenden Service nicht explizit definieren. Wichtig ist der Eintrag "Persistent=true", dieser sorgt für das Nachholen. Das Schlüsselwort "Persistent" funktioniert aber nur zusammen mit dem Schlüsselwort "OnCalendar".
Ansonsten wird der Timer wie gewohnt aktiviert.
$ sudo systemctl enable virus-scan.timer
$ sudo systemctl start virus-scan.timer
/lib/systemd/system/virus-scan.timer:
============================
<code>
[Unit]
Description=Run a virus scan weekly.
[Timer]
OnCalendar=weekly
Persistent=true
Unit=virus-scan.service
[Install]
WantedBy=timers.target
</code>
/lib/systemd/system/virus-scan.service:
==============================
<code>
[Unit]
Description=Run a virus scan 10min(600s) after the system start.
[Service]
Type=simple
ExecStartPre=/bin/bash -c 'sleep 600 && /etc/clamav/virus-started.bash'
ExecStart=/usr/bin/clamdscan --multiscan --fdpass / &>/dev/null
TimeoutSec=1200
</code>
/etc/clamav/virus-started.bash:
========================
<code>
#!/bin/bash
PATH=/usr/bin
# Send an alert to all graphical users.
for ADDRESS in /run/user/* ; do
USERID=${ADDRESS#/run/user/}
/usr/bin/sudo -u "#$USERID" DBUS_SESSION_BUS_ADDRESS="unix:path=$ADDRESS/bus" PATH=${PATH} \
/usr/bin/notify-send -u critical -i dialog-warning "Clamav" "Scanning started."
done
</code>
PS: Ich habe am 29.04.2022 die Scripte aktualisiert.
Um einen Timer zu erstellen müssen im Pfad "/lib/systemd/system" 2 Dateien erstellt werden. Eine virus-scan.timer die den Timer definiert, und eine virus-scan.service die durch den Timer ausgeführt wird. Die Namen der Dateien sind natürlich frei wählbar. Haben beide Dateien den selben Namen und nur unterschiedliche Erweiterungen, brauch der Timer den auszuführenden Service nicht explizit definieren. Wichtig ist der Eintrag "Persistent=true", dieser sorgt für das Nachholen. Das Schlüsselwort "Persistent" funktioniert aber nur zusammen mit dem Schlüsselwort "OnCalendar".
Ansonsten wird der Timer wie gewohnt aktiviert.
$ sudo systemctl enable virus-scan.timer
$ sudo systemctl start virus-scan.timer
/lib/systemd/system/virus-scan.timer:
============================
<code>
[Unit]
Description=Run a virus scan weekly.
[Timer]
OnCalendar=weekly
Persistent=true
Unit=virus-scan.service
[Install]
WantedBy=timers.target
</code>
/lib/systemd/system/virus-scan.service:
==============================
<code>
[Unit]
Description=Run a virus scan 10min(600s) after the system start.
[Service]
Type=simple
ExecStartPre=/bin/bash -c 'sleep 600 && /etc/clamav/virus-started.bash'
ExecStart=/usr/bin/clamdscan --multiscan --fdpass / &>/dev/null
TimeoutSec=1200
</code>
/etc/clamav/virus-started.bash:
========================
<code>
#!/bin/bash
PATH=/usr/bin
# Send an alert to all graphical users.
for ADDRESS in /run/user/* ; do
USERID=${ADDRESS#/run/user/}
/usr/bin/sudo -u "#$USERID" DBUS_SESSION_BUS_ADDRESS="unix:path=$ADDRESS/bus" PATH=${PATH} \
/usr/bin/notify-send -u critical -i dialog-warning "Clamav" "Scanning started."
done
</code>
PS: Ich habe am 29.04.2022 die Scripte aktualisiert.
Mein Heimatgrid: https://swissgrid.opensim.ch