From d9d269446b65efada774fe4ab068d1d2d55234ef Mon Sep 17 00:00:00 2001 From: Dominic Breuker Date: Wed, 28 Mar 2018 09:01:25 +0200 Subject: [PATCH] add flag to configure scanning interval --- cmd/root.go | 6 ++++-- internal/config/config.go | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index 451daa8..ee513eb 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -29,7 +29,7 @@ var bannerLines = []string{ var helpText = ` pspy monitors the system for file system events and new processes. -It prints out these envents to the console. +It prints these envents to the console. File system events are monitored with inotify. Processes are monitored by scanning /proc, using file system events as triggers. pspy does not require root permissions do operate. @@ -56,12 +56,14 @@ var defaultRDirs = []string{ "/opt", } var defaultDirs = []string{} +var triggerInterval int func init() { rootCmd.PersistentFlags().BoolVarP(&logPS, "procevents", "p", true, "print new processes to stdout") rootCmd.PersistentFlags().BoolVarP(&logFS, "fsevents", "f", false, "print file system events to stdout") rootCmd.PersistentFlags().StringArrayVarP(&rDirs, "recursive_dirs", "r", defaultRDirs, "watch these dirs recursively") rootCmd.PersistentFlags().StringArrayVarP(&dirs, "dirs", "d", defaultDirs, "watch these dirs") + rootCmd.PersistentFlags().IntVarP(&triggerInterval, "interval", "i", 100, "scan every 'interval' milliseconds for new processes") log.SetOutput(os.Stdout) } @@ -75,7 +77,7 @@ func root(cmd *cobra.Command, args []string) { LogPS: logPS, LogFS: logFS, DrainFor: 1 * time.Second, - TriggerEvery: 100 * time.Millisecond, + TriggerEvery: time.Duration(triggerInterval) * time.Millisecond, } fsw := fswatcher.NewFSWatcher() defer fsw.Close() diff --git a/internal/config/config.go b/internal/config/config.go index 571f261..134887a 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -15,5 +15,5 @@ type Config struct { } func (c Config) String() string { - return fmt.Sprintf("Printing events: processes=%t | file-system-events=%t ||| Watching directories: %+v (recursive) | %+v (non-recursive)", c.LogPS, c.LogFS, c.RDirs, c.Dirs) + return fmt.Sprintf("Printing events: processes=%t | file-system-events=%t ||| Scannning for processes every %v and on inotify events ||| Watching directories: %+v (recursive) | %+v (non-recursive)", c.LogPS, c.LogFS, c.TriggerEvery, c.RDirs, c.Dirs) }