+ All Categories
Home > Documents > I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Date post: 06-Jan-2018
Category:
Upload: samuel-fletcher
View: 215 times
Download: 0 times
Share this document with a friend
54
I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop
Transcript
Page 1: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

I Hate Cron JobsJ.A. Hourclé - 2015 DC-Baltimore Perl

Workshop

Page 2: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

I <3 cron

Page 3: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 4: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 5: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

I </3 cronjobs

Page 6: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 7: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 8: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 9: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 10: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Problems:•I have no idea which of these

messages are important.•Routine output looks the exact

same as a critical error•You start to ignore those cronjobs

(like clamAV) that generate messages every day.

Page 11: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Solution:

•If the cron job doesn’t generate output, it won’t trigger an e-mail.

Page 12: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Problem #2:•This assumes that it sends to

STDERR when something goes wrong.

•And that there’s enough context in STDERR to debug the problem

•You’ve just trashed whatever other output may have been useful

Page 13: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Solution #2

•Capture output, only display on error

Page 14: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Solution #2.1

•Capture output, only display on error

Page 15: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Problems #3-5:•Programs that only write to

STDOUT•When the absense of output is the

error.•Trying to find the actual error in

really spammy commands• like rsync

Page 16: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Solution #3:

Page 17: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Solution #3:

Page 18: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Problem #6

•The ‘stuck’ cronjob:• Every hour, for the last week, cron jobs

have been starting but not completing.

Page 19: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Problem #n

•(insert problem here)

Page 20: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 21: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Use Case #1•Only report if output on STDERR•Otherwise, supress STDOUT•(default)• disable with --ignore-stderr and

--ignore-stdout=0 or --verbose• or use --merge

Page 22: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Use Case #2

•Only report if non-zero status•(default)• --ignore-return to disable reporting of

non-zero status

Page 23: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 24: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 25: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Use Case #3:

•Report if a process runs too long•--timer=(seconds)

•--timeout=(seconds)

Page 26: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 27: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 28: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 29: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 30: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Use Case #4•Prevent new jobs if an older job is

still running•--once• --ignore-once if you don’t want this to

automatically be reported as an error• --name to set the lockfile name

Page 31: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 32: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 33: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Use Case #5

•Kill old instances if still running before starting the new job

• --once=2

Page 34: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Use Case #6:

•Debugging a cron job• Dump %ENV before running

•--verbose=2 : always generate a message

•--verbose=3 : dumps %ENV

Page 35: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 36: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Use Case #7

•Highlight what the error is•--lines=(regex) for ‘known good’

lines.

Page 37: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 38: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 39: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 40: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 41: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Use Case #8

•Don’t report if the expected output•--lines=(regex)• optional and repetitive items

•--template=(regex)• must be present

Page 42: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 43: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 44: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Config file support

•--file=(path_to_YAML)

•any command line args override options set in the file

Page 45: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 46: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.
Page 47: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Doesn’t doeverything

Page 48: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Doesn’t:

•Report before the program ends

Page 49: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Doesn’t:•Generate its own e-mail• So we could change the subject line on

success or failure• see App::CronJob

• or change the recipient list based on sucess/fail,or specific error states.

Page 50: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Doesn’t:

•Track success/failrate• only report (x) failures in a row• or (y) failures per (time)

Page 51: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Doesn’t:

•Limit resources• see Process::Govern

Page 52: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Helper script

Page 53: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Problem:Not released

Page 54: I Hate Cron Jobs J.A. Hourclé - 2015 DC-Baltimore Perl Workshop.

Solar Dynamics Observatory (SDO)Atmospheric Imaging Assembly (AIA)

171Ångstrom ; 2010/07/08 17:45:48UT ; 2x2 binned


Recommended