سرور هغه وخت خپل ارزښت ښيي چې ستاسو د خوب پر مهال کار وکړي: بیک اپونه، د لاګونو ګرځول، د سندونو نوي کول، په نهو بجو راپور. Linux د دې لپاره دوه مهالوېشونکي لري. cron څلوېښت کلن دی او یوه کرښه بسنه کوي. systemd ټایمرونه دوه کوچني فایلونه غواړي او په بدل کې لاګونه، له بندېدو وروسته جبران او دقیق وخت ورکوي. دا لارښود دواړه په Ubuntu 24.04 کې تشریح کوي، او هره چلند زموږ له امېج څخه په نوي سرور کې ازمول شوې، په شمول د هغو دریو تېروتنو چې د cron دنده پرته له یوې کلمې ناکاموي.
تاسو د sudo لرونکي کاروونکي ته اړتیا لرئ؛ د Ubuntu د جوړولو لارښود یو جوړوي.
1. cron په پنځو دقیقو کې
cron زموږ په Ubuntu او Debian امېجونو کې نصب او روان دی. هر کاروونکی د دندو خپل جدول لري؛ خپل یې په دې کمانډ سره سم کړئ:
crontab -e
هره کرښه پنځه د وخت ساحې او یو کمانډ ده:
# min hour day month weekday command
30 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
*/5 * * * * /usr/local/bin/check.sh
0 9 * * 1-5 /usr/local/bin/report.sh
@reboot /usr/local/bin/start-tunnel.sh
یعنې: هره شپه په 03:30، هرې 5 دقیقې، د کار په ورځو کې په 09:00 او د هر بوټ وروسته یو ځل. */5 یعنې هر پنځم ارزښت، 1-5 یوه لړۍ، 1,15 یو لړ. د سرور وخت زون پلي کېږي، زموږ په امېجونو کې UTC؛ خپل یې یو ځل د کوربه نوم او وخت زون لارښود په مرسته تنظیم کړئ او cron به یې تعقیب کړي.
څه چې چلېدلي په journalctl -u cron کې یې وګورئ. هر چلول کاروونکی او کمانډ ثبتوي، او درې لومې همالته ښکاري.
لومه 1: وتنه ورکېږي. cron د دندې وتنه کاروونکي ته په برېښنالیک لېږي. زموږ امېج د برېښنالیک سرور نه لري، نو journal ولیکل (CRON) info (No MTA installed, discarding output) او وتنه ورکه شوه. پخپله یې واړوئ، لکه لومړۍ بېلګه چې په >> /var/log/backup.log 2>&1 کوي.
لومه 2: د سلنې نښه. په crontab کې % کمانډ پای ته رسوي او پاتې برخه معیاري ننوتنه ګرځوي. موږ date +%F > /tmp/today مهالوېش کړ. journal ښيي چې cron په رښتیا څه وچلول: CMD (date +). هېڅ فایل ونه لیکل شو او هېڅ تېروتنه موږ ته ونه رسېده. \% ولیکئ، یا کمانډ په سکریپټ کې کېږدئ او سکریپټ مهالوېش کړئ.
لومه 3: بل چاپېریال. cron دندې د bash پر ځای په /bin/sh، ستاسو په کور فولډر کې او له محدود چاپېریال سره چلوي. په Ubuntu 24.04 کې PATH له خپل شهرت ښه ووت: د سیسټم بشپړه لاره په شمول د /usr/local/bin او /snap/bin، د root او عادي کاروونکي دواړو لپاره. هغه څه چې لا هم نشته د کور فولډر لاندې هر څه دي: ~/.local/bin، د nvm node، pipx او cargo. په دنده کې بشپړې لارې وکاروئ یا کرښه په . $HOME/.profile; پیل کړئ.
هغه دندې چې د کاروونکي نه بلکې د سیسټم دي، په /etc/cron.d/ کې د یو اضافي ساحې، یعنې کاروونکي، سره د فایل په توګه ځي:
30 3 * * * root /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Ubuntu هغه هر څه هم چلوي چې په /etc/cron.hourly، cron.daily، cron.weekly او cron.monthly کې دي: د هر ساعت په 17مه دقیقه، په 06:25، یکشنبې په 06:47 او د میاشتې په لومړۍ نېټه په 06:52. یو د اجرا وړ سکریپټ هلته کېږدئ او له نورو سره به وچلېږي.
2. systemd ټایمرونه
ټایمر دوه یونټونه دي: یو خدمت چې کار کوي او یو ټایمر چې وايي کله. لومړی سکریپټ، بیا یونټونه جوړ کړئ.
sudo nano /usr/local/bin/backup.sh
sudo chmod +x /usr/local/bin/backup.sh
sudo nano /etc/systemd/system/backup.service
[Unit]
Description=Nightly backup
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh
sudo nano /etc/systemd/system/backup.timer
[Unit]
Description=Run the backup every night at 03:30
[Timer]
OnCalendar=*-*-* 03:30
Persistent=true
AccuracySec=1m
[Install]
WantedBy=timers.target
ټایمر فعال کړئ، نه خدمت:
sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
systemctl list-timers backup.timer
list-timers بل چلول، تر هغه پورې پاتې وخت او وروستی چلول ښيي. لاګونه تنظیم ته اړتیا نه لري: journalctl -u backup.service هر پیل، هر پای او د وتنې هره کرښه له وخت سره لري. د دندې سمدستي چلولو لپاره sudo systemctl start backup.service؛ په مهالوېش د باور کولو مخکې سکریپټ هم همداسې ازمویئ.
د کلیز نحو. OnCalendar داسې لوستل کېږي: د-اونۍ-ورځ کال-میاشت-ورځ ساعت:دقیقه:ثانیه، او * د هر ارزښت لپاره. د کارولو مخکې څرګندونه وازمویئ:
systemd-analyze calendar "Mon..Fri *-*-* 03:00" --iterations 2
دا عادي شوې بڼه او راتلونکې نېټې چاپوي. ځینې څرګندونې چې موږ وکتلې:
| OnCalendar | مانا |
|---|---|
*-*-* 03:30 | هره ورځ په 03:30 |
Mon..Fri *-*-* 09:00 | د کار په ورځو کې په 09:00 |
*:0/15 | هرې 15 دقیقې |
weekly | دوشنبې په 00:00 |
*-*-01 04:00 | د هرې میاشتې په لومړۍ نېټه په 04:00 |
*-*-* 03:00 Europe/Kyiv | د کیف په وخت 03:00؛ زموږ په ازموینه کې په 01:00 UTC وچلېد |
درې تنظیمات چې پوهېدل یې ارزښت لري. Persistent=true وروستی چلول په ډیسک کې ساتي او هغه چلول پوره کوي چې د سرور د بندېدو یا د ټایمر د درېدو پر مهال پاتې شوی وي. موږ خپل هرې دوه دقیقې ټایمر ودراوه، صبر مو وکړ چې یو مهالوېش شوی چلول تېر شي، او بیا مو پیل کړ: پاتې چلول په همغه ثانیه کې پیل شو. له Persistent پرته ټایمر یوازې بلې نوبت ته انتظار باسي.
AccuracySec اصلي حیرانتیا ده. په ډیفالټ ډول systemd ټایمرونه د یوې دقیقې په کړکۍ کې یو ځای کوي څو سیسټم لږ راویښ کړي، له همدې امله زموږ لومړی چلول په 07:42:18 راغی، نه په 07:42:00. له AccuracySec=1s سره راتلونکي چلونه سم په ثانیه 07:46:00 او 07:48:00 کې وشول. کله چې دقیقه مهمه وي تنظیم یې کړئ؛ د شپې بیک اپ لپاره ډیفالټ پرېږدئ.
RandomizedDelaySec=10m په قصد برعکس کوي: پیل په یوه کړکۍ کې خپروي څو لس سرورونه په یوه ثانیه کې یو بیک اپ زېرمه ونه وهي.
د یو ځلي دندې لپاره هېڅ فایل ته اړتیا نشته:
sudo systemd-run --on-active=30m --unit=cleanup-once /usr/local/bin/cleanup.sh
دا یو لنډمهاله ټایمر جوړوي چې یو ځل چلېږي او ورکېږي؛ تر هغه وخته systemctl list-timers یې ښيي.
3. کوم یو وکاروو
| cron | systemd ټایمر | |
|---|---|---|
| تنظیم | 1 کرښه | 2 فایلونه |
| لاګونه | یوازې که وتنه واړوئ | journalctl -u name.service |
| د سرور د بندېدو پر مهال پاتې چلول | ورکېږي | له Persistent=true سره په بوټ کې چلېږي |
| دنده په بله نوبت کې لا روانه ده | دویمه کاپي پیلېږي | تر هغه پرېښودل کېږي چې لومړۍ پای ته ورسېږي |
| دقیق وخت | تر دقیقې | له AccuracySec=1s سره تر ثانیې |
| حالت | نشته | list-timers او systemctl status |
cron د داسې چټکې کرښې لپاره وکاروئ چې یو کال وروسته هم یې وپېژنئ. ټایمر د هر هغه څه لپاره وکاروئ چې ناکامي یې باید وګورئ، باید سره ونه لوېږي یا باید د هغه ریسټارټ وروسته وچلېږي چې پاتې شوی: بیک اپونه، د سندونو نوي کول، د ډیټابېس پاکول. که د cron دنده سره لوېدای شي، ونغاړئ یې: flock -n /tmp/backup.lock /usr/local/bin/backup.sh، او دویمه کاپي به سمدلاسه ووځي.
دواړه مهالوېشونکي یوه دنده چلوي او درېږي. هغه پروګرام چې باید شپه او ورځ وچلېږي او له کرش وروسته بېرته راشي، مهالوېش نه بلکې خدمت ته اړتیا لري؛ وګورئ د systemd خدمت څنګه جوړ کړو او د Windows لپاره په Windows Server کې سکریپټ 24/7 څنګه وچلوو. یو ښه لومړی ټایمر هغه دی چې زموږ د restic سره د بیک اپ لارښود کې دی؛ اتومات امنیتي تازهکونې هغه ټایمر دی چې Ubuntu یې دمخه لري، apt-daily-upgrade.timer، په نوي سرور کې د روانو 17 ټایمرونو څخه یو.
تبصرې
لا تبصرې نشته. لومړی اوسئ.