varaverk: replace User Scripts dependency with native job tracking
run_job.sh: new wrapper called by scheduler cron for every job. Writes /var/log/varaverk/<id>.json (status/start/end/exit/pid) and /var/log/varaverk/<id>.log (latest run output, overwritten). Maps exit 0→ok, 1→warn, 2+→error so watchdog "took action" runs show warn not error. scheduler: cron now calls bash run_job.sh instead of inline bash -c. Added vv_job_stat_path(). LOG_DIR moved to config.php (shared). monitor: vv_scripts_status() now reads /var/log/varaverk/*.json and */*.json — no User Scripts tmpScripts dependency at all. Stale running detection via /proc/<pid> check. Returns error_count in addition to running/ok/warn counts. pages/monitor.php: added error pill (red ✗), error icon/color in list, duration shown next to age for each script entry.
This commit is contained in:
@@ -39,15 +39,18 @@ function vv_job_flags(string $id): string {
|
||||
return !empty($schedule[$id]['log_enabled']) ? '--log' : '';
|
||||
}
|
||||
|
||||
define('LOG_DIR', '/var/log/varaverk');
|
||||
|
||||
function vv_job_log_path(string $id): string {
|
||||
return LOG_DIR . '/' . preg_replace('/\.sh$/', '.log', $id);
|
||||
}
|
||||
|
||||
function vv_job_stat_path(string $id): string {
|
||||
return LOG_DIR . '/' . preg_replace('/\.sh$/', '.json', $id);
|
||||
}
|
||||
|
||||
function vv_cron_rebuild(array $schedule): bool {
|
||||
if (!is_dir(LOG_DIR)) mkdir(LOG_DIR, 0755, true);
|
||||
|
||||
$runner = dirname(__DIR__) . '/run_job.sh';
|
||||
$lines = ["# Varaverk — managed by plugin, do not edit manually"];
|
||||
$lines[] = "# Regenerated: " . date('Y-m-d H:i:s');
|
||||
$lines[] = "";
|
||||
@@ -56,11 +59,9 @@ function vv_cron_rebuild(array $schedule): bool {
|
||||
foreach ($schedule as $entry) {
|
||||
if (empty($entry['enabled']) || empty($entry['cron']) || empty($entry['id'])) continue;
|
||||
$script = "$scriptsDir/{$entry['id']}";
|
||||
$logFile = vv_job_log_path($entry['id']);
|
||||
$logDir = dirname($logFile);
|
||||
if (!is_dir($logDir)) mkdir($logDir, 0755, true);
|
||||
$flags = !empty($entry['log_enabled']) ? ' --log' : '';
|
||||
$lines[] = "{$entry['cron']} bash -c 'echo; echo \"── \$(date \"+%Y-%m-%d %H:%M:%S\") ──────────────────────\"; bash \"$script\"$flags' >> \"$logFile\" 2>&1";
|
||||
$id = $entry['id'];
|
||||
$lines[] = "{$entry['cron']} bash \"$runner\" \"$id\" \"$script\"$flags";
|
||||
}
|
||||
$lines[] = "";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user