Popularity
3.7
Growing
Activity
4.4
-
70
2
4

Programming language: Go
Tags: Command Line     Standard CLI    
Latest version: v0.1.4

job alternatives and similar packages

Based on the "Standard CLI" category

Do you think we are missing an alternative of job or a related project?

Add another 'Standard CLI' Package

README

job

GoDoc Go Report Card Build Status Version Coverage Status

make your short-term command as a long-term job

Install

Brew install

$: brew tap liujianping/tap && brew install job

OR

$: git clone https://github.com/liujianping/job.git
$: cd job 
$: go build -mod vendor

Usage


$: job -h
Job, make your short-term command as a long-term job

Usage:
  job [flags] [command args ...]

Examples:

(simple)      $: job echo hello
(schedule)    $: job -s "* * * * *" -- echo hello
(retry)       $: job -r 3 -- echox hello
(repeat)      $: job -n 10 -i 100ms -- echo hello
(concurrent)  $: job -c 10 -n 10 -- echo hello
(report)      $: job -R -- echo hello
(timeout cmd) $: job -t 500ms -R -- sleep 1
(timeout job) $: job -n 10 -i 500ms -T 3s -R -- echo hello
(job output)  $: job -n 10 -i 500ms -T 3s -o -- echo hello
(job config)  $: job -f /path/to/job.yaml

Flags:
  -e, --cmd-env stringToString          job command enviromental variables (default [])
  -r, --cmd-retry int                   job command retry times when failed
  -d, --cmd-stdout-discard              job command stdout discard ?
  -t, --cmd-timeout duration            job command timeout duration
  -c, --concurrent int                  job concurrent numbers
  -f, --config string                   job config file path
  -G, --guarantee                       job guarantee mode enable ?
  -h, --help                            help for job
  -M, --metadata stringToString         job metadata definition (default [])
  -N, --name string                     job name definition
  -o, --output                          job yaml config output enable ?
  -i, --repeat-interval duration        job repeat interval duration
  -n, --repeat-times int                job repeat times, 0 means forever (default 1)
  -R, --report                          job report enable ?
  -P, --report-push-gateway string      job report to prometheus push gateway address
  -I, --report-push-interval duration   job report to prometheus push gateway interval
  -s, --schedule string                 job schedule in crontab format
  -T, --timeout duration                job timeout duration
  -V, --verbose                         job verbose log enable ?
  -v, --version                         job version

Output Job

$: job -n 10 -i 500ms -T 3s -o -- curl https://www.baidu.com
Job:
  name: ""
  command:
    shell:
      name: curl
      args:
      - https://www.baidu.com
      envs: []
    stdout: true
    retry: 0
    timeout: 0s
  guarantee: false
  crontab: ""
  repeat:
    times: 10
    interval: 500ms
  concurrent: 1
  timeout: 3s
  report: true
  order:
    precondition: []
    weight: 0
    wait: false

** Multple Job Config **

Job:
  name: "echo"
  command:
    shell: 
      name: "echo"
      args: 
        - hello
        - job
      envs:
        - name: "key"
          value: "val"
    retry: 3
    timeout: 3s
    guarantee: false
  crontab: ""
  concurrent: 0
  repeat:
    times: 2
    interval: 100ms
  timeout: 10s
  report: true
  order:
    precondition: [""]
    weight: 4
    wait: false
---
Job:
  name: "http"
  command:
    retry: 3
    timeout: 3s
    stdout: true
    http:    
      request: 
        url: "https://github.com/liujianping/job"
        method: GET
        # headers: 
        #   Content-Type: application/json
        # body:
        #   json:
        #     hello: "demo"
        #     person:
        #       name: jay
        #       hobby: football
  crontab: ""
  concurrent: 2
  repeat:
    times: 3
    interval: "10ms"
  timeout: 1h
  report: true
  order:
    weight: 3
    precondition: ["echo"]
    wait: false

Local Report

$: job -n 10 -i 500ms -c 5 -R -- echo hello

Uptime: 5.1037 secs

Summary:
  Total:    5.1029 secs
  Slowest:  0.0091 secs
  Fastest:  0.0036 secs
  Average:  0.0068 secs
  Op/sec:   9.7983

  Total data:   210 bytes
  Size/Resp:    210 bytes

Response time histogram:
  0.004 [1] |■■■■
  0.004 [0] |
  0.005 [2] |■■■■■■■■■
  0.005 [2] |■■■■■■■■■
  0.006 [4] |■■■■■■■■■■■■■■■■■■
  0.006 [9] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.007 [8] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.007 [7] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.008 [6] |■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.009 [6] |■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.009 [5] |■■■■■■■■■■■■■■■■■■■■■■


Latency distribution:
  10% in 0.0056 secs
  25% in 0.0061 secs
  50% in 0.0068 secs
  75% in 0.0080 secs
  90% in 0.0086 secs
  95% in 0.0088 secs
  0% in 0.0000 secs

Code distribution:
  [0]   50 responses

TODO

  • [ ] support metrics report to prometheus push gateway
  • [ ] template variables for commands
  • [ ] more embedded commands support, like:
    • [x] http
    • [ ] grpc
    • [ ] thrift
    • [ ] database
    • [ ] smtp
  • [ ] commands response assertions

Inspired By