From patchwork Thu Jan 2 12:37:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christopher McCrory X-Patchwork-Id: 1217067 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=busybox.net (client-ip=140.211.166.138; helo=whitealder.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="QSbjpDF/"; dkim-atps=neutral Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 47pSHd2vb8z9sP6 for ; Thu, 2 Jan 2020 23:38:05 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 4CBF281AE6; Thu, 2 Jan 2020 12:38:03 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dMlPjiNWzcdS; Thu, 2 Jan 2020 12:38:01 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by whitealder.osuosl.org (Postfix) with ESMTP id 4C66E814B0; Thu, 2 Jan 2020 12:38:01 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id A81171BF59C for ; Thu, 2 Jan 2020 12:37:59 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id A4FB0814B0 for ; Thu, 2 Jan 2020 12:37:59 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id QxBrLrq50j1K for ; Thu, 2 Jan 2020 12:37:59 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47]) by whitealder.osuosl.org (Postfix) with ESMTPS id 0A4C881480 for ; Thu, 2 Jan 2020 12:37:59 +0000 (UTC) Received: by mail-pj1-f47.google.com with SMTP id d5so3198774pjz.5 for ; Thu, 02 Jan 2020 04:37:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=mZ8Q6Ujl9o1it1DiYUJekvboQcPcbLz7cHTTlMBuij4=; b=QSbjpDF/S2OyBMAlWoztMidCLHqsYu8qQTzxD450XIM725UWCiVPmkjiW0RyrFFB+Y +jhn+HDVLa8F09DJXkEry35mGYMyPphV0WVTnqCOiv5jHypuoDe7oaBJY44Old7573YX GLbdw3R8oKd0qQTVeZuKkvCJYgwcO0+aTGHdMgHV89LIpM7h0/pT9dxXt7x6VaEVTWge 2RjA9R2/3w7Mn+B4roNYrd3et5r4G/60eOoAx662aaUPn5VwmwIn3nySh1KrQfQXAPyy JdUcKW4QzXgtVxvxShGNDExckU907ZKszkezsctthlfoZlamEOjknpws2qlaLQr+Yfv+ 1MoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=mZ8Q6Ujl9o1it1DiYUJekvboQcPcbLz7cHTTlMBuij4=; b=lMOQZ7ALv2JvDUd9Y9ESgWQ6DRFveG7FI+bh2Z3Uo6LZCXKfJZijqfZH1vydrvgQPO 3wI9J0BsctHoHcYx4hG8nUgJpQ9uhxan4NqtwglgOLd+5QA1vkwizdaKVj0eoUudpxLW X3j2lbYn2iCDZ4SOJdQnqT9ZuPdPCkSKNy5mO4cLMxaHKJT99p3/yhDd1oN1BbArHpDp mAJy/eCaTwELCD7qyGQRGcf2nMu/Hn1T7xbWOTDZmyJLQN2aIec3pfe5nfKx5VGIp3o0 FpR+xD0df7gL8aTB5hR65IvNEw6cy1CGZwROudYeR0h1sP7KSkITiu3DEb3u0Xn1KV9l 6OjA== X-Gm-Message-State: APjAAAVjuLKut8tv60LroZVyFHAPwJmey74eJlbkZD3dRVp7ssJQ2cPb k5NnvKlaW7hMi1PUMWal37lPDhzI X-Google-Smtp-Source: APXvYqy9p//NZztqfHpsoIm49E5nCnfEszull6CPT/F9S81X1avWacuoU9oOLXKGNNzKQvzGjXDo7A== X-Received: by 2002:a17:90a:778a:: with SMTP id v10mr18743074pjk.26.1577968678222; Thu, 02 Jan 2020 04:37:58 -0800 (PST) Received: from localhost.localdomain (150.sub-174-193-143.myvzw.com. [174.193.143.150]) by smtp.gmail.com with ESMTPSA id u13sm10712869pjn.29.2020.01.02.04.37.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Jan 2020 04:37:57 -0800 (PST) From: Christopher McCrory To: buildroot@buildroot.org Date: Thu, 2 Jan 2020 12:37:46 +0000 Message-Id: <20200102123746.2404602-1-chrismcc@gmail.com> X-Mailer: git-send-email 2.18.1 Subject: [Buildroot] [PATCH 1/1] package/dcron: create directories if needed on startup X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Christopher McCrory MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" Create the /var/spool/cron/crontabs and /var/spool/cron/cronstamps directories on startup if they don't exist. By default /var/spool is a symlink to /tmp so the contents get deleted on reboot. If the cronstamps directory does not exist anything in /etc/cron.hourly/ , etc. will fail to run. Signed-off-by: Christopher McCrory --- package/dcron/S90dcron | 105 +++++++++++++++++++++++++++++------- package/dcron/dcron.service | 6 +++ 2 files changed, 93 insertions(+), 18 deletions(-) diff --git a/package/dcron/S90dcron b/package/dcron/S90dcron index de21d2ca13..f51513d41e 100644 --- a/package/dcron/S90dcron +++ b/package/dcron/S90dcron @@ -1,22 +1,91 @@ #!/bin/sh +# Make sure umask is sane +umask 022 + +PATH="/sbin:/usr/sbin:/bin:/usr/bin" +export PATH + +DAEMON_NAME="dcron" +DAEMON_DESC="dcron" +DAEMON_BINARY="/usr/sbin/crond" +DAEMON_BASENAME="crond" +DAEMON_CONFIG="/etc/cron.d/system" +DAEMON_ARGS="-- -f" +DAEMON_PID="/var/run/crond.pid" + +[ -r /etc/default/$DAEMON_BASENAME ] && . /etc/default/$DAEMON_BASENAME +[ -x $DAEMON_BINARY ] || exit 5 +[ -r $DAEMON_CONFIG ] || exit 6 + +start() { + printf "Starting $DAEMON_DESC: " + [ -d /var/spool/cron/crontabs ] || mkdir -vp /var/spool/cron/crontabs + [ -d /var/spool/cron/cronstamps ] || mkdir -vp /var/spool/cron/cronstamps + start-stop-daemon -S -q -b -m -p $DAEMON_PID -x $DAEMON_BINARY $DAEMON_ARGS + sleep 2 ; status ; RETVAL=$? + if [ $RETVAL -ne 0 ]; then + echo "FAIL" + else + echo "OK" + fi + return $RETVAL +} + +# -R doesn't work with busybox, but doesn't error out +stop() { + printf "Stopping $DAEMON_DESC: " + start-stop-daemon -K -R 59 -x $DAEMON_BINARY + RETVAL=$? + if [ $RETVAL -ne 0 ]; then + echo "FAIL" + else + echo "OK" + fi + return $RETVAL +} + +status() { + PIDS=`pidof $DAEMON_BASENAME` + RETVAL=$? + if [ $RETVAL -eq 0 ]; then + echo "RUNNING (pid $PIDS)" + else + echo "NOT OK" + fi + return $RETVAL +} + case "$1" in - start) - printf "Starting cron ... " - start-stop-daemon -S -q -m -b -p /var/run/dcron.pid --exec /usr/sbin/crond -- -f - echo "done." - ;; - stop) - printf "Stopping cron ..." - start-stop-daemon -K -q -p /var/run/dcron.pid - echo "done." - ;; - restart) - $0 stop - sleep 1 - $0 start - ;; - *) - echo "usage: $0 {start|stop|restart}" - ;; + start) + start + ;; + stop) + stop + ;; + restart) + echo "Restarting $DAEMON_DESC: " + stop + sleep 1 + start + echo "" + ;; + try-restart) + status + if [ $RETVAL -eq 0 ]; then + stop + sleep 1 + start + fi + ;; + status) + printf "Status of $DAEMON_DESC: " + status + ;; + *) + echo "Usage: $0 {start|stop|restart|status|try-restart}" >&2 + exit 3 + ;; esac + +exit 0 diff --git a/package/dcron/dcron.service b/package/dcron/dcron.service index 924ed72205..19c66b1535 100644 --- a/package/dcron/dcron.service +++ b/package/dcron/dcron.service @@ -3,6 +3,12 @@ Description=Task scheduler daemon After=syslog.target [Service] +# make sure directories exist. use -v so it gets logged +ExecStartPre=/bin/sh -c '\ +test -d /var/spool/cron/crontabs || mkdir -pv /var/spool/cron/crontabs ; \ +test -d /var/spool/cron/cronstamps || mkdir -pv /var/spool/cron/cronstamps; \ +' + ExecStart=/usr/sbin/crond -S Type=forking