Bug#1042363: Regression in expansion of commands starting with tilde
Ben Hutchings
ben at decadent.org.uk
Thu Jul 27 00:56:58 BST 2023
Package: systemd-cron
Version: 1.16.1-1
Severity: normal
Tags: upstream patch
The latest version of this package broke a previously working
cron job:
Jul 27 00:46:21 deadeye systemd[1]: Starting cron-ben-ben-0.service - [Cron] "2 0 * * * ~/bin/randomsig"...
Jul 27 00:46:21 deadeye sh[14398]: /run/systemd/generator/cron-ben-ben-0.sh: 1: /home/benbin/randomsig: not found
Notice that there is no '/' after my home directory. Patch for
this is attached.
I already opened a PR for this upstream:
https://github.com/systemd-cron/systemd-cron/pull/92
Ben.
-- Package-specific info:
-- output of systemctl list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
Thu 2023-07-27 02:13:04 CEST 19min Thu 2023-07-27 01:25:20 CEST 28min ago fwupd-refresh.timer fwupd-refresh.service
Thu 2023-07-27 03:04:00 CEST 1h 10min Wed 2023-07-26 03:35:54 CEST - plocate-updatedb.timer plocate-updatedb.service
Thu 2023-07-27 05:10:00 CEST 3h 16min - - cron-popularity-contest-root-0.timer cron-popularity-contest-root-0.service
Thu 2023-07-27 06:49:53 CEST 4h 56min Wed 2023-07-26 13:53:20 CEST - apt-daily-upgrade.timer apt-daily-upgrade.service
Thu 2023-07-27 09:37:37 CEST 7h Wed 2023-07-26 03:48:39 CEST - man-db.timer man-db.service
Thu 2023-07-27 13:24:19 CEST 11h Wed 2023-07-26 19:58:22 CEST 1h 55min ago apt-daily.timer apt-daily.service
Thu 2023-07-27 20:16:44 CEST 18h Wed 2023-07-26 15:39:08 CEST 5h 36min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Fri 2023-07-28 00:00:00 CEST 22h Thu 2023-07-27 00:46:21 CEST 1h 7min ago dpkg-db-backup.timer dpkg-db-backup.service
Fri 2023-07-28 00:00:00 CEST 22h Thu 2023-07-27 00:46:21 CEST 1h 7min ago exim4-base.timer exim4-base.service
Fri 2023-07-28 00:00:00 CEST 22h Thu 2023-07-27 00:46:21 CEST 1h 7min ago logrotate.timer logrotate.service
Fri 2023-07-28 00:02:00 CEST 22h Thu 2023-07-27 00:46:21 CEST 1h 7min ago cron-ben-ben-0.timer cron-ben-ben-0.service
Fri 2023-07-28 00:10:00 CEST 22h Thu 2023-07-27 00:46:21 CEST 1h 7min ago cron-daily-0anacron.timer cron-daily-0anacron.service
Fri 2023-07-28 00:10:00 CEST 22h Thu 2023-07-27 00:46:21 CEST 1h 7min ago cron-daily-aptitude.timer cron-daily-aptitude.service
Fri 2023-07-28 00:10:00 CEST 22h Thu 2023-07-27 00:46:21 CEST 1h 7min ago cron-daily-calendar.timer cron-daily-calendar.service
Fri 2023-07-28 00:10:00 CEST 22h Thu 2023-07-27 00:46:21 CEST 1h 7min ago cron-daily-debsums.timer cron-daily-debsums.service
Fri 2023-07-28 00:10:00 CEST 22h Thu 2023-07-27 00:46:21 CEST 1h 7min ago cron-daily-dlocate.timer cron-daily-dlocate.service
Fri 2023-07-28 00:10:00 CEST 22h Thu 2023-07-27 00:46:21 CEST 1h 7min ago cron-daily-installation-birthday.timer cron-daily-installation-birthday.service
Fri 2023-07-28 00:10:00 CEST 22h Thu 2023-07-27 00:46:21 CEST 1h 7min ago cron-daily-lighttpd.timer cron-daily-lighttpd.service
Fri 2023-07-28 00:10:00 CEST 22h Thu 2023-07-27 00:46:21 CEST 1h 7min ago cron-daily-popularity-contest.timer cron-daily-popularity-contest.service
Fri 2023-07-28 00:10:00 CEST 22h Thu 2023-07-27 00:46:21 CEST 1h 7min ago cron-daily-prelink.timer cron-daily-prelink.service
Fri 2023-07-28 00:10:00 CEST 22h Thu 2023-07-27 00:46:21 CEST 1h 7min ago cron-daily-sysstat.timer cron-daily-sysstat.service
Sun 2023-07-30 03:10:36 CEST 3 days Sun 2023-07-23 03:10:50 CEST - e2scrub_all.timer e2scrub_all.service
Mon 2023-07-31 00:02:38 CEST 3 days Mon 2023-07-24 00:44:02 CEST - fstrim.timer fstrim.service
Mon 2023-07-31 00:15:00 CEST 3 days Mon 2023-07-24 00:15:17 CEST - cron-weekly-0anacron.timer cron-weekly-0anacron.service
Mon 2023-07-31 00:15:00 CEST 3 days Mon 2023-07-24 00:15:17 CEST - cron-weekly-apt-xapian-index.timer cron-weekly-apt-xapian-index.service
Mon 2023-07-31 00:15:00 CEST 3 days Mon 2023-07-24 00:15:17 CEST - cron-weekly-debsums.timer cron-weekly-debsums.service
Mon 2023-07-31 00:15:00 CEST 3 days Mon 2023-07-24 00:15:17 CEST - cron-weekly-tor.timer cron-weekly-tor.service
Mon 2023-07-31 00:15:00 CEST 3 days Wed 2023-07-26 14:02:28 CEST - systemd-cron-cleaner.timer systemd-cron-cleaner.service
Tue 2023-08-01 00:20:00 CEST 4 days Sat 2023-07-08 15:22:45 CEST - cron-monthly-0anacron.timer cron-monthly-0anacron.service
Tue 2023-08-01 00:20:00 CEST 4 days Sat 2023-07-08 15:22:45 CEST - cron-monthly-debsums.timer cron-monthly-debsums.service
30 timers listed.
Pass --all to see loaded but inactive timers, too.
-- output of systemd-delta
-- System Information:
Debian Release: trixie/sid
APT prefers unstable-debug
APT policy: (500, 'unstable-debug'), (500, 'stable-updates'), (500, 'stable-security'), (500, 'oldstable-updates'), (500, 'oldstable-security'), (500, 'oldoldstable-updates'), (500, 'oldoldstable'), (500, 'unstable'), (500, 'stable'), (500, 'oldstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 6.4.0-1-amd64 (SMP w/12 CPU threads; PREEMPT)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages systemd-cron depends on:
ii cron-daemon-common 3.0pl1-162
ii libc6 2.37-6
ii python3 3.11.4-5
ii systemd [systemd-sysusers] 254~rc3-3
ii systemd-sysv 254~rc3-3
systemd-cron recommends no packages.
Versions of packages systemd-cron suggests:
ii exim4 4.96-16
ii exim4-daemon-light [mail-transport-agent] 4.96-16
-- debconf-show failed
-------------- next part --------------
>From f139068a8fb06affdad2ba9cceea4a5ca8e40c16 Mon Sep 17 00:00:00 2001
From: Ben Hutchings <benh at debian.org>
Date: Thu, 27 Jul 2023 01:39:25 +0200
Subject: [PATCH] Fix expansion of commands starting with '~/'
We need to replace the '~' with home but keep '/' and everything
afterwards, i.e. slice [1:] from the command. This was recently
changed to take slice [2:], losing the '/'.
Fixes: 9ef7b89523e8 ("keep job.command as a List[str] all along")
---
src/bin/systemd-crontab-generator.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/bin/systemd-crontab-generator.py b/src/bin/systemd-crontab-generator.py
index 785e977..4a3708a 100755
--- a/src/bin/systemd-crontab-generator.py
+++ b/src/bin/systemd-crontab-generator.py
@@ -276,7 +276,7 @@ CROND2TIMER = {
pass
if self.home:
if self.command[0].startswith('~/'):
- self.command[0] = self.home + self.command[0][2:]
+ self.command[0] = self.home + self.command[0][1:]
if 'PATH' in self.environment:
parts = self.environment['PATH'].split(':')
More information about the Pkg-systemd-maintainers
mailing list