From 79f1a6c67b72b695b23db69aaa606dc79c313d86 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 17 Jul 2014 15:33:02 -0400 Subject: propellor spin --- src/Propellor/Property/Cron.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/Propellor/Property/Cron.hs') diff --git a/src/Propellor/Property/Cron.hs b/src/Propellor/Property/Cron.hs index 5b070eff..d7138e3b 100644 --- a/src/Propellor/Property/Cron.hs +++ b/src/Propellor/Property/Cron.hs @@ -42,7 +42,7 @@ job desc times user cddir command = cronjobfile `File.hasContent` -- | Installs a cron job, and runs it niced and ioniced. niceJob :: Desc -> CronTimes -> UserName -> FilePath -> String -> Property niceJob desc times user cddir command = job desc times user cddir - ("nice ionice -c 3 " ++ command) + ("nice ionice -c 3 sh -c " ++ shellEscape command) -- | Installs a cron job to run propellor. runPropellor :: CronTimes -> Property -- cgit v1.3-2-g0d8e From 6e490dff6e82be1d0d77117bc2aa8cafb15a949e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 18 Jul 2014 12:35:00 -0400 Subject: propellor spin --- src/Propellor/Property/Cron.hs | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'src/Propellor/Property/Cron.hs') diff --git a/src/Propellor/Property/Cron.hs b/src/Propellor/Property/Cron.hs index d7138e3b..627599e6 100644 --- a/src/Propellor/Property/Cron.hs +++ b/src/Propellor/Property/Cron.hs @@ -4,6 +4,7 @@ import Propellor import qualified Propellor.Property.File as File import qualified Propellor.Property.Apt as Apt import Utility.SafeCommand +import Utility.FileMode import Data.Char @@ -19,22 +20,33 @@ type CronTimes = String -- -- The cron job's output will only be emailed if it exits nonzero. job :: Desc -> CronTimes -> UserName -> FilePath -> String -> Property -job desc times user cddir command = cronjobfile `File.hasContent` - [ "# Generated by propellor" - , "" - , "SHELL=/bin/sh" - , "PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin" - , "" - , times ++ "\t" ++ user ++ "\t" - ++ "chronic flock -n " ++ shellEscape cronjobfile - ++ " sh -c " ++ shellEscape cmdline +job desc times user cddir command = combineProperties ("cronned " ++ desc) + [ cronjobfile `File.hasContent` + [ "# Generated by propellor" + , "" + , "SHELL=/bin/sh" + , "PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin" + , "" + , times ++ "\t" ++ user ++ "\t" ++ shellEscape scriptfile + ] + -- Use a separate script because it makes the cron job name + -- prettier in emails, and also allows running the job manually. + , scriptfile `File.hasContent` + [ "#!/bin/sh" + , "# Generated by propellor" + , "set -e" + , "chronic flock -n " ++ shellEscape cronjobfile + ++ " sh -c " ++ shellEscape cmdline + ] + , scriptfile `File.mode` combineModes (readModes ++ executeModes) ] `requires` Apt.serviceInstalledRunning "cron" `requires` Apt.installed ["util-linux", "moreutils"] - `describe` ("cronned " ++ desc) where cmdline = "cd " ++ cddir ++ " && ( " ++ command ++ " )" - cronjobfile = "/etc/cron.d/" ++ map sanitize desc + cronjobfile = "/etc/cron.d/" ++ name + scriptfile = "/usr/local/bin/" ++ name ++ "_cronjob" + name = map sanitize desc sanitize c | isAlphaNum c = c | otherwise = '_' -- cgit v1.3-2-g0d8e From ad80a1600df71eb23c0e6948b179637dc3f74e24 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 18 Jul 2014 12:39:45 -0400 Subject: propellor spin --- src/Propellor/Property/Cron.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/Propellor/Property/Cron.hs') diff --git a/src/Propellor/Property/Cron.hs b/src/Propellor/Property/Cron.hs index 627599e6..d55c3dbb 100644 --- a/src/Propellor/Property/Cron.hs +++ b/src/Propellor/Property/Cron.hs @@ -27,7 +27,7 @@ job desc times user cddir command = combineProperties ("cronned " ++ desc) , "SHELL=/bin/sh" , "PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin" , "" - , times ++ "\t" ++ user ++ "\t" ++ shellEscape scriptfile + , times ++ "\t" ++ user ++ "\tchronic " ++ shellEscape scriptfile ] -- Use a separate script because it makes the cron job name -- prettier in emails, and also allows running the job manually. @@ -35,7 +35,7 @@ job desc times user cddir command = combineProperties ("cronned " ++ desc) [ "#!/bin/sh" , "# Generated by propellor" , "set -e" - , "chronic flock -n " ++ shellEscape cronjobfile + , "flock -n " ++ shellEscape cronjobfile ++ " sh -c " ++ shellEscape cmdline ] , scriptfile `File.mode` combineModes (readModes ++ executeModes) -- cgit v1.3-2-g0d8e