diff --git a/sh/tests/auto-jobs_test.sh b/sh/tests/auto-jobs_test.sh new file mode 100755 index 000000000..f502833d1 --- /dev/null +++ b/sh/tests/auto-jobs_test.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +# Unofficial Bash Strict Mode +set -euo pipefail +IFS=' +' + +print_content() { + mkdir -p uncompressed + tar -xpf auto-jobs.tar -C uncompressed + cat -e uncompressed/$1 +} + +for i in 1 2 3 4 +do + submitted=$(cd student && print_content task$i) + expected=$(cd solutions && print_content task$i) + + diff <(echo "$submitted") <(echo "$expected") +done \ No newline at end of file diff --git a/sh/tests/solutions/auto-jobs.tar b/sh/tests/solutions/auto-jobs.tar new file mode 100644 index 000000000..ed3f50ab7 Binary files /dev/null and b/sh/tests/solutions/auto-jobs.tar differ diff --git a/subjects/devops/auto-jobs/README.md b/subjects/devops/auto-jobs/README.md new file mode 100644 index 000000000..2579231c5 --- /dev/null +++ b/subjects/devops/auto-jobs/README.md @@ -0,0 +1,70 @@ +## auto-jobs + +### Instructions + +In this exercise you will create different files `task1`, `task2`, `task3`, `task4` containing the formulas required for setup a group of Scheduled tasks in the group. + +##### task1: +Time: `Every Friday, at 20:41` +Command: `echo "01"` + +##### task2: +Time: `Every minute` +Command: `sh /home/user01/check` + +##### task3: +Time: `Everyday midnight at 12 AM` +Command: `sh /home/user01/backup` + +##### task4: +Time: `After Every Reboot` +Command: `01exec` + +All files content must be in this format: + +```console +$ cat task-example | cat -e +* * * * * {command}$ +$ +``` + +Once it is done, use the command below to create the file `auto-jobs.tar` to be submitted. + +```console +$ tar -cf auto-jobs.tar task1 task2 task3 task4 +$ ls +task1 task2 task3 task4 auto-jobs.tar +``` + +**Only `auto-jobs.tar` should be submitted.** +### Hints + +Linux Cron utility is an effective way to schedule a routine background job at a specific time and/or day on an on-going basis. + +You can use the `crontab` command to manage your jobs. This command can be called in four different ways: + +`crontab -l`: List the jobs for the current user +`crontab -r`: Remove all jobs for the current users. +`crontab -e`: Edit jobs for the current user. +##### Linux Crontab Format: + +`MIN HOUR DOM MON DOW CMD` +##### Table: Crontab Fields (Linux Crontab Syntax): + +![Table: Crontab Fields](https://assets.01-edu.org/devops-branch/cronTasks-Table.png) + +##### Examples: + +1. Schedule a job every hour at the fifth minute, every day: `5 * * * * {command}` + + +2. Schedule a job 5 minutes after midnight every day: `5 0 * * * {command}` + + + +> You have to use Man or Google to know more about commands flags, in order to solve this exercise! +> Google and Man will be your friends! + +### References + +- [an editor for cron schedule expressions](https://crontab.guru/).