Ravindra BagaleCourses & study guides English

Shell Scripting Complete 13: cron आणि systemd Timers ने Scripts Schedule करा

Script स्वतःहून चालते तेव्हा सगळ्यात उपयोगी: रात्री 2 ला backup, दर सोमवारी report, दर 5 मिनिटांनी health check. Linux कडे दोन मुख्य schedulers आहेत. cron जुना, सोपा आणि सगळीकडे. systemd timers नवीन, journald ला log करतात, चुकलेले runs भरून काढू शकतात आणि resource limits देतात. या chapter मधे crontab syntax, cron environment, cron jobs चं logging आणि locking, मग .service आणि .timer units, OnCalendar, Persistent, RandomizedDelaySec, systemctl list-timers आणि journalctl, आणि दोघांमधून कसं निवडायचं ते शिकाल. प्रत्येक topic रोजच्या उदाहरणाने सुरू होतो आणि मग अनेक industries ची उदाहरणं.

या chapter मध्ये तुम्ही काय शिकाल

  • Crontab lines वाचा आणि लिहा
  • Cron environment fix: PATH, shell, mail
  • Cron jobs log आणि lock
  • systemd service आणि timer लिहा
  • OnCalendar, Persistent आणि delays वापरा
  • cron की timers निवडा

1. रोजचं उदाहरण: दूधवाला आणि alarm घड्याळ

हे का लागतं?

पुण्यात दूधवाला रोज सकाळी 6 ला न बोलावता येतो. तुमचा alarm फक्त weekdays ला 6:30 ला वाजतो. तुम्ही प्रवासात असाल तर smart alarm काय चुकलं ते सांगू शकतो. cron म्हणजे दूधवाला: ठराविक वेळ, प्रश्न नाहीत. systemd timer म्हणजे smart alarm: record ठेवतो, machine जागं झाल्यावर चुकलेलं काम चालवू शकतो आणि सगळं diary मधे लिहितो.

हे काय आहे?

दूधवाल्याची ठराविक वेळ = crontab line. फक्त weekdays = day-of-week field 1-5. Smart alarm = .timer unit. ते सुरू करणारं काम = .service unit. चुकलेलं काम नंतर = Persistent=true. Diary = journalctl.

कसं करायचं (step by step)

Script ते scheduleFull paths सह script हाताने चालतेset -euo pipefail, logging, flock जोडाcron की systemd timer निवडाSchedule लिहाजवळच्या वेळेने testपहिल्या run नंतर logs तपासा
Cron आणि timers छोट्या environment ने चालतात, तुमच्या login shell ने नाही.

2. crontab syntax

हे का लागतं?

'दर 15 मिनिटांनी' किंवा 'संध्याकाळी 7 ला' सारखे schedules चुकीशिवाय वाचता-लिहिता यायला हवेत.

हे काय आहे?

पाच time fields मग command: minute (0-59), hour (0-23), day of month (1-31), month (1-12), day of week (0-7, 0 आणि 7 रविवार). * म्हणजे प्रत्येक, */15 म्हणजे दर 15, 1-5 range, 1,15 list. Shortcuts: @reboot, @daily, @hourly, @weekly. दोन्ही day fields set असतील तर कोणतंही जुळलं की cron चालतो. Crontab lines मधे % म्हणजे newline, म्हणून \% असं escape करा (उदा. date +\%F मधे).

Lineकधी चालतो
*/5 * * * *दर 5 मिनिटांनी
0 2 * * *रोज 2:00
30 18 * * 1-5weekdays संध्या 6:30
0 9 1 * *1 तारखेला सकाळी 9
@rebootboot वर एकदा

कसं करायचं (step by step)

  1. Edit.
crontab -e

याचा अर्थ: Editor मधे crontab उघडतो.

  1. List.
crontab -l

Output:

0 2 * * * /opt/bin/backup.sh

याचा अर्थ: तुमचे jobs.

  1. दर 15 min.
*/15 * * * * /opt/bin/health.sh

याचा अर्थ: Minutes 0, 15, 30, 45.

  1. सोमवार report.
0 8 * * 1 /opt/bin/weekly-report.sh

याचा अर्थ: सोमवार सकाळी 8.

  1. Percent escape.
0 1 * * * tar czf /backup/etc-$(date +\%F).tgz /etc

याचा अर्थ: \ शिवाय line तुटते.

3. Cron environment

हे का लागतं?

'मी चालवलं की चालतं पण cron मधे नाही' हा सगळ्यात common cron problem.

हे काय आहे?

cron छोट्या PATH ने (बहुदा /usr/bin:/bin), shell म्हणून sh, working dir तुमचं home, आणि .bashrc शिवाय चालतो. म्हणून: full paths वापरा किंवा crontab वर PATH set करा, गरज असेल तर SHELL=/bin/bash, script मधे cd करा, आणि env files स्वतः load करा. Mail set असेल तर MAILTO=you@x output mail ने पाठवतो; MAILTO="" बंद करतो. System jobs /etc/cron.d files मधे extra user field सह.

कसं करायचं (step by step)

  1. Crontab header.
SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
MAILTO=""

याचा अर्थ: crontab -e च्या वर.

  1. Cron env बघा.
* * * * * env > /tmp/cron-env.txt

Output:

PATH=/usr/bin:/bin
SHELL=/bin/sh
HOME=/home/ec2-user

याचा अर्थ: तुमच्याशी compare.

  1. System job.
echo '0 3 * * * root /opt/bin/rotate.sh' | sudo tee /etc/cron.d/rotate

Output:

0 3 * * * root /opt/bin/rotate.sh

याचा अर्थ: Time नंतर user field.

  1. cron चालू?
systemctl status crond   # Ubuntu: cron

Output:

Active: active (running)

याचा अर्थ: Service up हवी.

4. Cron jobs log आणि lock

हे का लागतं?

Default cron output कुठेच जात नाही, आणि slow jobs overlap होऊ शकतात.

हे काय आहे?

दोन्ही streams log मधे append: >> /var/log/job.log 2>&1. किंवा | logger -t job ने journald ला. flock -n ने wrap करा म्हणजे दुसरी copy skip. timeout जोडा म्हणजे अडकलेला job कायम चालणार नाही. cron स्वतः चालला का ते journalctl -u crond किंवा grep CRON /var/log/syslog ने तपासा.

कसं करायचं (step by step)

  1. पूर्ण safe line.
*/10 * * * * flock -n /tmp/sync.lock timeout 9m /opt/bin/sync.sh >> /var/log/sync.log 2>&1

याचा अर्थ: Lock, timeout, log.

  1. journald ला.
0 2 * * * /opt/bin/backup.sh 2>&1 | logger -t backup

याचा अर्थ: journalctl -t backup ने वाचा.

  1. cron चालला?
journalctl -u crond --since '1 hour ago' | grep sync

Output:

Oct 25 10:10:01 host CROND[4410]: (ec2-user) CMD (flock -n /tmp/sync.lock ...)

याचा अर्थ: हो 10:10 ला.

  1. Ubuntu syslog.
grep CRON /var/log/syslog | tail -2

Output:

Oct 25 10:10:01 host CRON[4410]: (ubuntu) CMD (/opt/bin/sync.sh)

याचा अर्थ: तोच check.

5. systemd service + timer

हे का लागतं?

Timers journald मधे logs, exit status, retries आणि limits देतात, आधीच माहित असलेल्या systemctl commands ने.

हे काय आहे?

/etc/systemd/system मधे दोन files लिहा. name.service काय चालवायचं ते सांगतं (Type=oneshot, ExecStart=/opt/bin/script.sh, User=). name.timer कधी ते सांगतं (OnCalendar=) आणि त्यात WantedBy=timers.target. मग systemctl daemon-reload आणि systemctl enable --now name.timer. Job हाताने systemctl start name.service ने चालवा. User timers ~/.config/systemd/user मधे systemctl --user सह.

कसं करायचं (step by step)

  1. Service file.
sudo tee /etc/systemd/system/backup.service > /dev/null <<'EOF'
[Unit]
Description=Nightly backup
[Service]
Type=oneshot
User=backup
ExecStart=/opt/bin/backup.sh
EOF

याचा अर्थ: काय चालवायचं.

  1. Timer file.
sudo tee /etc/systemd/system/backup.timer > /dev/null <<'EOF'
[Unit]
Description=Run backup daily at 02:00
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
EOF

याचा अर्थ: कधी चालवायचं.

  1. Enable.
sudo systemctl daemon-reload && sudo systemctl enable --now backup.timer

Output:

Created symlink /etc/systemd/system/timers.target.wants/backup.timer

याचा अर्थ: Schedule झालं.

  1. आत्ता चालवा.
sudo systemctl start backup.service; systemctl status backup.service --no-pager | head -3

Output:

backup.service - Nightly backup
   Active: inactive (dead) since Sun 2026-10-25 11:20:04 IST

याचा अर्थ: oneshot संपला.

6. OnCalendar, Persistent आणि delays

हे का लागतं?

Laptops sleep होतात, servers reboot होतात, आणि 500 servers एकाच API ला 02:00:00 ला मारणं म्हणजे वादळ.

हे काय आहे?

OnCalendar DayOfWeek Year-Month-Day Hour:Minute:Second वापरतो, जसं Mon..Fri *-*-* 18:30 किंवा *-*-01 09:00 किंवा shortcuts daily, weekly, hourly. systemd-analyze calendar ने तपासा. OnBootSec=5min आणि OnUnitActiveSec=15min boot किंवा शेवटच्या run पासून चालतात. Persistent=true चुकलेला job पुढच्या boot ला चालवतो. RandomizedDelaySec=10m servers पसरवतो. AccuracySec किती अचूक हवं ते ठरवतो.

Settingअर्थ
OnCalendar=dailyरोज मध्यरात्री
OnCalendar=Mon..Fri 18:30weekdays संध्या 6:30
OnUnitActiveSec=15minशेवटच्या run नंतर 15 min
Persistent=trueचुकलेला run भरून
RandomizedDelaySec=10m0-10 min random delay

कसं करायचं (step by step)

  1. Calendar check.
systemd-analyze calendar 'Mon..Fri 18:30'

Output:

  Original form: Mon..Fri 18:30
Normalized form: Mon..Fri *-*-* 18:30:00
    Next elapse: Mon 2026-10-26 18:30:00 IST

याचा अर्थ: पुढचा run दिसतो.

  1. दर 15 मिनिटांनी.
OnCalendar=*:0/15

याचा अर्थ: cron च्या */15 सारखं.

  1. महिन्याची 1 तारीख.
OnCalendar=*-*-01 09:00:00

याचा अर्थ: Monthly invoice run.

  1. Fleet पसरवा.
[Timer]
OnCalendar=daily
RandomizedDelaySec=30m

याचा अर्थ: एकदम गर्दी नाही.

7. Timers बघा: list-timers आणि journalctl

हे का लागतं?

Job शेवटचा कधी चालला, पुढचा कधी आणि चालला का ते कळायला हवं.

हे काय आहे?

systemctl list-timers प्रत्येक timer साठी NEXT, LEFT, LAST आणि PASSED दाखवतो. journalctl -u name.service प्रत्येक run चं script output दाखवतो. systemctl status name.service शेवटचा exit code दाखवतो. Job fail झाल्यावर alert unit चालवायला [Unit] मधे OnFailure=alert@%n.service जोडा.

कसं करायचं (step by step)

  1. पुढचे runs.
systemctl list-timers backup.timer --no-pager

Output:

NEXT                        LEFT     LAST                        PASSED  UNIT
Mon 2026-10-26 02:00:00 IST 14h left Sun 2026-10-25 02:00:03 IST 9h ago  backup.timer

याचा अर्थ: शेवटचा आणि पुढचा.

  1. Runs चं output.
journalctl -u backup.service --since yesterday --no-pager | tail -2

Output:

Oct 25 02:00:41 host backup.sh[1201]: backup ok 2.1G
Oct 25 02:00:41 host systemd[1]: backup.service: Deactivated successfully.

याचा अर्थ: Script output journal मधे.

  1. Fail?
systemctl is-failed backup.service

Output:

inactive

याचा अर्थ: Fail नाही.

  1. Failure वर alert.
[Unit]
OnFailure=notify-fail@%n.service

याचा अर्थ: Failure वर दुसरं unit.

8. cron की systemd timer?

हे का लागतं?

दोन्ही चालतात; योग्य निवड नंतरचा त्रास वाचवते.

हे काय आहे?

Simple per-user jobs साठी, जुन्या किंवा minimal systems वर, किंवा team ला आधीच माहित असेल तर cron वापरा. journald logs, downtime नंतर catch-up, fleet वर random delay, dependencies (After=network-online.target), resource limits (MemoryMax=, CPUQuota=) आणि systemctl मधे status हवं असेल तर timers. बऱ्याच teams महत्त्वाचे server jobs timers वर नेतात आणि quick personal tasks साठी cron ठेवतात.

गरजcron / timer
Simple and everywhereहो / बहुतेक
Logs in journaldmanual / built in
Catch up missed runनाही (anacron) / Persistent
Random delaymanual sleep / RandomizedDelaySec
Resource limitsनाही / MemoryMax, CPUQuota

कसं करायचं (step by step)

  1. Memory limit.
[Service]
MemoryMax=512M
CPUQuota=50%

याचा अर्थ: Job server खाऊ शकत नाही.

  1. Network साठी थांबा.
[Unit]
After=network-online.target
Wants=network-online.target

याचा अर्थ: Boot वर लवकर failures नाहीत.

  1. नंतर एकदा.
sudo systemd-run --on-calendar='2026-10-26 01:00' /opt/bin/migrate.sh

Output:

Running timer as unit: run-u91.timer

याचा अर्थ: at सारखं, logs सह.

9. अनेक industries मधली खरी उदाहरणं

हे का लागतं?

तेच Linux skill प्रत्येक प्रकारच्या company मध्ये लागतं. वेगवेगळ्या ठिकाणी पाहिलं की लक्षात राहतं.

हे काय आहे?

प्रत्येक row म्हणजे एक काल्पनिक team. कोण हे वापरतं आणि कसं ते दाखवते.

कसं करायचं (step by step)

Team आणि शहरते कसं वापरतातCommand
Shruti, bank, Puneरात्री 2 ला EOD backup0 2 * * * /opt/bin/eod-backup.sh
Tom, newspaper, ManchesterWeekdays सकाळी 5 ला e-paperOnCalendar=Mon..Fri 05:00
Wei, IoT, ShanghaiLock सह दर 15 min sensor upload*/15 * * * * flock -n /tmp/u.lock /opt/bin/up.sh
Noura, retail, DohaSpread सह fleet cache warmRandomizedDelaySec=20m
Pedro, hospital, Lisbonचुकलेलं audit export भरूनPersistent=true
Mangesh, APMC market, Nashikरोज सकाळी 6 ला price list0 6 * * * /opt/bin/prices.sh >> /var/log/prices.log 2>&1

10. नेहमीच्या errors आणि त्यांचे fixes

हे का लागतं?

हे errors सगळ्यांना येतात. कारण माहीत असलं की तास वाचतात.

हे काय आहे?

आधी नेमका message वाचा. मग खालच्या row शी जुळवा.

कसं करायचं (step by step)

दिसणारा errorका होतंFix कसा करायचा
Job never runscron service बंद किंवा चुकीची lineService आणि syntax तपासा.
systemctl status crond
command not found in cron onlyछोटा PATHFull paths किंवा PATH line.
PATH=/usr/local/bin:/usr/bin:/bin
Command cut at % signcrontab मधे % म्हणजे newline\% असं escape.
date +\%F
No output anywhereRedirect नाही, mail नाहीLog ला redirect.
>> /var/log/job.log 2>&1
bad minute / errors in crontab fileचुकीची field संख्यापाच fields मग command.
crontab -e
Timer not in list-timersEnable नाही किंवा daemon-reload नाहीReload आणि enable.
sudo systemctl daemon-reload && sudo systemctl enable --now x.timer
Failed to parse calendar specificationचुकीचा OnCalendarExpression test.
systemd-analyze calendar 'Mon *-*-* 08:00'
Service runs as root unexpectedlyUser= line नाहीUser= जोडा.
User=backup
Overlapping runsSlow job, लहान intervalflock किंवा OnUnitActiveSec.
flock -n /tmp/j.lock ./j.sh

11. Troubleshooting step by step

हे का लागतं?

आधी scheduler चालला का, मग script fail झाली का, मग का ते शोधा.

हे काय आहे?

वरून खाली जा. ज्या step ला problem दिसतो तिथे थांबा.

कसं करायचं (step by step)

  1. cron चालला?
journalctl -u crond --since today | tail
  1. Timer status.
systemctl list-timers --all
  1. शेवटच्या run चं output.
journalctl -u backup.service -n 30
  1. Exit status.
systemctl status backup.service
  1. Same env test.
env -i PATH=/usr/bin:/bin /bin/sh -c /opt/bin/backup.sh
  1. Calendar check.
systemd-analyze calendar daily

12. Lab 1: Log आणि lock सह safe cron job

हे का लागतं?

flock, timeout आणि log सह दर मिनिटाला छोटा disk report schedule करा, चालतो ते confirm करा, मग काढा.

हे काय आहे?

पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).

कसं करायचं (step by step)

  1. Script.
mkdir -p ~/bin && cat > ~/bin/diskrep.sh <<'X'
#!/usr/bin/env bash
set -euo pipefail
printf '%(%F %T)T ' -1; df -h / | tail -1
X
chmod +x ~/bin/diskrep.sh && ~/bin/diskrep.sh

Output:

2026-10-25 11:40:02 /dev/xvda1 20G 8.1G 12G 41% /
  1. Crontab मधे.
( crontab -l 2>/dev/null; echo "* * * * * flock -n /tmp/diskrep.lock timeout 50 $HOME/bin/diskrep.sh >> $HOME/diskrep.log 2>&1" ) | crontab -
  1. Line तपासा.
crontab -l | tail -1

Output:

* * * * * flock -n /tmp/diskrep.lock timeout 50 /home/ec2-user/bin/diskrep.sh >> /home/ec2-user/diskrep.log 2>&1
  1. 2 min थांबा आणि वाचा.
sleep 125; cat ~/diskrep.log

Output:

2026-10-25 11:41:01 /dev/xvda1 20G 8.1G 12G 41% /
2026-10-25 11:42:01 /dev/xvda1 20G 8.1G 12G 41% /
  1. काढा.
crontab -l | grep -v diskrep.sh | crontab -; rm ~/diskrep.log

13. Lab 2: तोच job systemd timer म्हणून

हे का लागतं?

Disk report ला दर 2 मिनिटांनी चालणारी service आणि timer बनवा, list-timers आणि journalctl मधे बघा, मग काढा.

हे काय आहे?

पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).

कसं करायचं (step by step)

  1. Script copy.
sudo install -m 755 ~/bin/diskrep.sh /usr/local/bin/diskrep.sh
  1. Service.
sudo tee /etc/systemd/system/diskrep.service > /dev/null <<'EOF'
[Unit]
Description=Disk report
[Service]
Type=oneshot
ExecStart=/usr/local/bin/diskrep.sh
EOF
  1. Timer.
sudo tee /etc/systemd/system/diskrep.timer > /dev/null <<'EOF'
[Unit]
Description=Disk report every 2 minutes
[Timer]
OnCalendar=*:0/2
Persistent=true
[Install]
WantedBy=timers.target
EOF
  1. Enable आणि list.
sudo systemctl daemon-reload && sudo systemctl enable --now diskrep.timer && systemctl list-timers diskrep.timer --no-pager

Output:

NEXT                        LEFT       UNIT
Sun 2026-10-25 11:52:00 IST 1min left  diskrep.timer
  1. Run नंतर logs.
sleep 130; journalctl -u diskrep.service -n 2 --no-pager

Output:

Oct 25 11:52:00 host diskrep.sh[3101]: 2026-10-25 11:52:00 /dev/xvda1 20G 8.1G 12G 41% /
Oct 25 11:52:00 host systemd[1]: diskrep.service: Deactivated successfully.
  1. काढा.
sudo systemctl disable --now diskrep.timer && sudo rm /etc/systemd/system/diskrep.{service,timer} && sudo systemctl daemon-reload

Output:

Removed /etc/systemd/system/timers.target.wants/diskrep.timer.

Ravindra Bagale's Tip

Before you schedule anything, make the script work with full paths, set -euo pipefail, a log and a flock guard. Then test the schedule: crontab -l for cron, systemd-analyze calendar and list-timers for timers. Always check the first real run in the log instead of assuming it worked.

14. नेहमी विचारले जाणारे प्रश्न

प्र. Cron time zone?

CRON_TZ नसेल तर server चा zone.

प्र. दर 30 seconds?

OnUnitActiveSec=30s सह timer.

प्र. User crontabs कुठे?

/var/spool/cron.

प्र. anacron काय?

बंद असताना चुकलेले daily jobs.

प्र. User साठी timer?

systemctl --user आणि loginctl enable-linger.

प्र. Timer आत्ता test?

systemctl start x.service.

प्र. Day 0 की 7?

दोन्ही रविवार.

प्र. सगळे cron jobs काढा?

crontab -r, काळजीने.

15. मुलाखत प्रश्न आणि उत्तरं

Beginner level

प्र. crontab edit?

crontab -e.

प्र. Cron fields?

पाच, मग command.

प्र. दर 5 मिनिटांनी?

*/5 * * * *.

प्र. Timers list?

systemctl list-timers.

Mid level level

प्र. फक्त cron मधे fail का?

PATH आणि env वेगळे.

प्र. Timer ला कोणत्या files?

.service आणि .timer.

प्र. चुकलेला run?

Persistent=true.

प्र. Crontab मधे percent?

\% असं escape.

Senior level

प्र. Timers कधी?

Logs, catch-up, limits, dependencies हवे तेव्हा.

प्र. Fleet storms टाळा?

RandomizedDelaySec किंवा sleep $((RANDOM%600)).

प्र. Failure वर alert?

OnFailure= unit किंवा exit code monitor.

प्र. Timers मधे overlap?

चालू oneshot service दुसऱ्यांदा सुरू होत नाही.

घरी करून बघा

  1. Monday ते Friday संध्या 7:30 ला script चालवणारी crontab line लिहा आणि नीट तपासा.
  2. systemd-analyze calendar ने तीन schedules test करा: दर रविवार सकाळी 10, दर महिन्याची 1 तारीख, दर 10 मिनिटांनी.

सराव Tasks

या scenario बद्दल

Ahmednagar Sugar Co-op हा अहिल्यानगर मधला साखर सहकारी व्यवसाय आहे. Balasaheb Pawar त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 21

सोपं crontab list

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: Balasaheb Pawar ला Ahmednagar Sugar Co-op मधे फक्त backup असलेल्या cron lines बघायच्या आहेत.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं crontab edit

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: nano editor मधे crontab editing साठी उघडा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Timers list

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: Pager शिवाय, inactive सह सगळे systemd timers list करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Timer enable

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: report.timer enable करून आत्ता start करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Units reload

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: User unit files edit केल्यावर per-user systemd manager reload करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Job logs

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: backup.service च्या शेवटच्या 50 log lines दाखवा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Cron service

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: cron daemon crond active आहे का एवढंच print करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Timer status

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: backup.timer चा status दाखवा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Current time

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: timedatectl ने current date आणि time zone settings print करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम दुसरा user

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: Root म्हणून asha चा crontab list करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Calendar check

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: Mon..Fri 09:00 OnCalendar expression पुढे कधी fire होईल ते check करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Unit verify

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: backup.service मधल्या चुका check करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम आत्ता चालवा

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: report.timer मागचा job service start करून आत्ता एकदा चालवा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Schedule थांबवा

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: backup.timer disable आणि stop करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Cron logs

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: crond च्या शेवटच्या 30 journal entries दाखवा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Unit दाखवा

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: systemd ला दिसतो तसा backup.timer चा content print करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Failed units

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: Failed units list करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Zone set

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: Server time zone Asia/Kolkata करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड Cron-like env

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: cron सारखं PATH=/usr/bin:/bin सोडून रिकाम्या environment ने report.sh चालवा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड Transient timer

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: systemd-run ने आतापासून 10 minutes नी एकदा df -h चालवा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड Failed reset

का: BIZ reports आणि backups schedule वर चालवतो.

काय करायचं: backup.service ची failed state clear करा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

थोडक्यात सांगायचं तर

  1. min hour dom mon dow command.
  2. Cron चा PATH छोटा; full paths.
  3. प्रत्येक job ला log, flock आणि timeout.
  4. .service + .timer, enable --now.
  5. OnCalendar, Persistent, RandomizedDelaySec.
  6. list-timers आणि journalctl -u.

उजळणी, तुलना आणि मुलाखत cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

Cron 5 fields. min hour day month weekday. रोज 2 AM. दर 15 minutes. Weekdays 9 AM.
उजळणी card: Cron 5 fields · PNG download करा · Card page उघडा
4 steps मधे systemd timer. x.service लिहा. x.timer लिहा. Enable करा. पुढचा run बघा.
उजळणी card: 4 steps मधे systemd timer · PNG download करा · Card page उघडा
cron vs systemd timer. प्रत्येक job एक line. / दोन unit files.
तुलना: cron vs systemd timer · PNG download करा · Card page उघडा
OnCalendar vs OnUnitActiveSec. Wall clock time. / Last run नंतर दर N.
तुलना: OnCalendar vs OnUnitActiveSec · PNG download करा · Card page उघडा
हाताने चालतो, cron मधे fail?. Cron चा PATH छोटा. ~/.bashrc नाही, चुकीचा folder. Full paths आणि log.
मुलाखत card: हाताने चालतो, cron मधे fail? · PNG download करा · Card page उघडा
% crontab का बिघडवतो?. cron मधे % = newline. Escape करा. किंवा code script मधे.
मुलाखत card: % crontab का बिघडवतो? · PNG download करा · Card page उघडा
Server बंद असताना run चुकला?. cron skip करतो. Timer catch up करतो. Last run बघा.
मुलाखत card: Server बंद असताना run चुकला? · PNG download करा · Card page उघडा
OnCalendar test?. systemd parse करतो. पुढची वेळ दाखवतो. चालवा.
मुलाखत card: OnCalendar test? · PNG download करा · Card page उघडा

अजून cards: Ravi Sir's Cards.