Package: systemd-cron Version: 1.5.14-2 Severity: normal This log strongly indicates systemd-cron is trying to "do things" with backup files:
2019-05-31T01:29:30+1000 not-omega systemd[1]: cron.target: Wants dependency dropin /run/systemd/generator/cron.target.wants/cron-ntpsec~-root-0.timer is not a valid unit name, ignoring. This happened after I edited /etc/cron.d/ntpsec-ntpviz, thereby creating a backup file /etc/cron.d/ntpsec-ntpviz~. https://manpages.debian.org/stretch/cron/cron.8.en.html#DEBIAN_SPECIFIC https://manpages.debian.org/run-parts Vixie cron ignores backups in /etc/cron.d/, so systemd-cron should, too. The actual code in Vixie cron is below; it's the same as run-parts(8). systemd-cron needs similar logic. pathnames.h:#define SYSCRONDIR "/etc/cron.d" database.c: if (!(dir = opendir(SYSCRONDIR))) { database.c: while (dir != NULL && NULL != (dp = readdir(dir))) { database.c: /* skipfile names with letters outside the set database.c: * [A-Za-z0-9_-], like run-parts. database.c: */ database.c: if (!valid_name(dp->d_name)) database.c: continue; database.c:/* True or false? Is this a valid filename? */ database.c: database.c:/* Taken from Clint Adams 'run-parts' version to support lsb style database.c: names, originally GPL, but relicensed to cron license per e-mail of database.c: 27 September 2003. I've changed it to do regcomp() only once. */ database.c: database.c:static int database.c:valid_name(char *filename) database.c:{ database.c: static regex_t hierre, tradre, excsre, classicalre; database.c: static int donere = 0; database.c: database.c: if (!donere) { database.c: donere = 1; database.c: if (regcomp(&hierre, "^_?([a-z0-9_.]+-)+[a-z0-9]+$", database.c: REG_EXTENDED | REG_NOSUB) database.c: || regcomp(&excsre, "^[a-z0-9-].*dpkg-(old|dist)$", database.c: REG_EXTENDED | REG_NOSUB) database.c: || regcomp(&tradre, "^[a-z0-9][a-z0-9-]*$", REG_NOSUB) database.c: || regcomp(&classicalre, "^[a-zA-Z0-9_-]+$", database.c: REG_EXTENDED | REG_NOSUB)) { database.c: log_it("CRON", getpid(), "REGEX FAILED", "valid_name"); database.c: (void) exit(ERROR_EXIT); database.c: } database.c: } database.c: if (lsbsysinit_mode) { database.c: if (!regexec(&hierre, filename, 0, NULL, 0)) { database.c: return regexec(&excsre, filename, 0, NULL, 0); database.c: } else { database.c: return !regexec(&tradre, filename, 0, NULL, 0); database.c: } database.c: } database.c: /* Old standard style */ database.c: return !regexec(&classicalre, filename, 0, NULL, 0); database.c:}