Skip to content
このページは AI の支援により作成・翻訳されました。誤りがあれば、改善にご協力ください。 GitHub で編集

スケジュールスキャン

sd scheduleコマンドは定義された間隔で実行される定期スキャンジョブを管理します。スケジュールスキャンはリアルタイム監視を補完し、指定されたディレクトリの定期的なフルスキャンを実行して、監視が非アクティブ中に見逃された脅威や導入された脅威を捕捉します。

使い方

bash
sd schedule <SUBCOMMAND> [OPTIONS]

サブコマンド

サブコマンド説明
add新しいスケジュールスキャンジョブを作成
removeスケジュールスキャンジョブを削除
listすべてのスケジュールスキャンジョブを一覧表示
status最終実行と次回実行を含むスケジュールジョブの状態を表示
runスケジュールジョブを直ちに手動でトリガー

スケジュールスキャンの追加

bash
sd schedule add <PATH> [OPTIONS]
フラグショートデフォルト説明
--frequency-fdailyスキャン頻度:hourly4h12hdailyweekly
--name-n自動生成このジョブの人間が読める名前
--recursive-rtrueディレクトリを再帰的にスキャン
--auto-quarantine-qfalse検出された脅威を隔離
--exclude-e除外するglobパターン(繰り返し可能)
--notifytrue検出時にアラートを送信
--time-tランダム優先開始時刻(HH:MM、24時間形式)
--day-dmonday週次スキャンの曜日

頻度オプション

頻度間隔ユースケース
hourly60分ごとリスクの高いディレクトリ(アップロード、一時ファイル)
4h4時間ごと共有ディレクトリ、Webルート
12h12時間ごとユーザーホームディレクトリ
daily24時間ごと汎用フルスキャン
weekly7日ごとリスクの低いアーカイブ、バックアップ検証

bash
# Daily scan of home directories
sd schedule add /home --frequency daily --name "home-daily"

# Hourly scan of upload directory with auto-quarantine
sd schedule add /var/www/uploads --frequency hourly --auto-quarantine \
  --name "uploads-hourly"

# Weekly full scan excluding large media files
sd schedule add / --frequency weekly --name "full-weekly" \
  --exclude "*.iso" --exclude "*.vmdk" --exclude "/proc/*" --exclude "/sys/*"

# 4-hour scan of temp directories
sd schedule add /tmp --frequency 4h --auto-quarantine --name "tmp-4h"

# Daily scan at a specific time
sd schedule add /home --frequency daily --time 02:00 --name "home-nightly"

# Weekly scan on Sunday
sd schedule add /var/www --frequency weekly --day sunday --time 03:00 \
  --name "webroot-weekly"

スケジュールスキャンの一覧表示

bash
sd schedule list
Scheduled Scan Jobs (4)

Name              Path              Frequency  Auto-Q  Next Run
home-daily        /home             daily      no      2026-03-22 02:00
uploads-hourly    /var/www/uploads  hourly     yes     2026-03-21 11:00
tmp-4h            /tmp              4h         yes     2026-03-21 14:00
full-weekly       /                 weekly     no      2026-03-23 03:00 (Sun)

ジョブステータスの確認

bash
sd schedule status
Scheduled Scan Status

Name              Last Run              Duration  Files    Threats  Status
home-daily        2026-03-21 02:00:12   8m 32s    45,231   0        clean
uploads-hourly    2026-03-21 10:00:05   45s       1,247    1        threats found
tmp-4h            2026-03-21 10:00:08   2m 12s    3,891    0        clean
full-weekly       2026-03-16 03:00:00   1h 22m    892,451  3        threats found

特定のジョブの詳細ステータスを取得:

bash
sd schedule status home-daily
Job: home-daily
  Path:           /home
  Frequency:      daily (every 24h)
  Preferred Time: 02:00
  Auto-Quarantine: no
  Recursive:      yes
  Excludes:       (none)

  Last Run:       2026-03-21 02:00:12 UTC
  Duration:       8 minutes 32 seconds
  Files Scanned:  45,231
  Threats Found:  0
  Result:         Clean

  Next Run:       2026-03-22 02:00 UTC
  Total Runs:     47
  Total Threats:  3 (across all runs)

スケジュールスキャンの削除

bash
# Remove by name
sd schedule remove home-daily

# Remove all scheduled scans
sd schedule remove --all

スキャンの手動トリガー

次の間隔を待たずに即座にスケジュールジョブを実行:

bash
sd schedule run home-daily

これにより、すべての設定されたオプション(隔離、除外、通知)でスキャンが実行され、ジョブの最終実行タイムスタンプが更新されます。

スケジューリングの仕組み

PRX-SDはシステムのcronではなく内部スケジューラーを使用します。スケジューラーはデーモンプロセスの一部として実行されます:

sd daemon start
  └── Scheduler thread
        ├── Check job intervals every 60 seconds
        ├── Launch scan jobs when interval elapsed
        ├── Serialize results to ~/.prx-sd/schedule/
        └── Send notifications on completion

WARNING

スケジュールスキャンはデーモンがアクティブな場合のみ実行されます。デーモンが停止されると、次回のデーモン起動時に見逃したスキャンが実行されます。継続的なスケジューリングを確保するためにsd daemon startを使用してください。

設定ファイル

スケジュールジョブは~/.prx-sd/schedule.jsonに永続化され、config.tomlでも定義できます:

toml
[[schedule]]
name = "home-daily"
path = "/home"
frequency = "daily"
time = "02:00"
recursive = true
auto_quarantine = false
notify = true

[[schedule]]
name = "uploads-hourly"
path = "/var/www/uploads"
frequency = "hourly"
recursive = true
auto_quarantine = true
notify = true
exclude = ["*.tmp", "*.log"]

[[schedule]]
name = "full-weekly"
path = "/"
frequency = "weekly"
day = "sunday"
time = "03:00"
recursive = true
auto_quarantine = false
notify = true
exclude = ["*.iso", "*.vmdk", "/proc/*", "/sys/*", "/dev/*"]

スキャンレポート

各スケジュールスキャンは~/.prx-sd/reports/にレポートを生成します:

bash
# View the latest report for a job
sd schedule report home-daily

# Export report as JSON
sd schedule report home-daily --json > report.json

# List all reports
sd schedule report --list

TIP

スケジュールスキャンとメールアラートを組み合わせると、自動レポートを受信できます。各スケジュールスキャン後にサマリーを受け取るには、メールイベントでscan_completedを設定してください。

次のステップ

  • Webhookアラート -- スケジュールスキャンで脅威が見つかったときに通知を受け取る
  • メールアラート -- スケジュールスキャンからのメールレポート
  • デーモン -- スケジュールスキャン実行に必要
  • 脅威対応 -- 脅威が見つかったときに何が起こるかを設定

Released under the Apache-2.0 License.