ሰርቨር ዋጋውን የሚያወጣው እርስዎ ሲተኙ በመሥራት ነው፦ ባክአፖች፣ የሎግ ሽክርክሪት፣ የሰርተፊኬት እድሳት፣ በዘጠኝ ሰዓት ሪፖርት። 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፣ በhome ማውጫዎ እና በጠባብ አካባቢ ያስኪዳል። በUbuntu 24.04 ላይ PATH ከስሙ የተሻለ ሆኖ ተገኘ፦ /usr/local/bin እና /snap/binን ጨምሮ ሙሉ የስርዓት ዱካ፣ ለroot እና ለተራ ተጠቃሚ። አሁንም የሚጎድለው በhome ማውጫዎ ስር ያለው ሁሉ ነው፦ ~/.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 ላይ እና በወሩ 1ኛ ቀን 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 | በየወሩ 1ኛ ቀን 04:00 ላይ |
*-*-* 03:00 Europe/Kyiv | በኪዬቭ ሰዓት 03:00፤ በሙከራችን 01:00 UTC ላይ ሠራ |
ማወቅ የሚገባቸው ሦስት ቅንብሮች። Persistent=true የመጨረሻውን ሩጫ በዲስክ ላይ ያስቀምጣል እና ሰርቨሩ ጠፍቶ ወይም ታይመሩ ቆሞ ሳለ ያመለጠውን ሩጫ ያካክሳል። በየሁለት ደቂቃው የሚሠራውን ታይመራችንን አቁመን፣ የታቀደ ሩጫ እስኪያልፍ ጠብቀን እንደገና አስጀመርነው፦ ያመለጠው ሩጫ በዚያው ሰከንድ ውስጥ ጀመረ። Persistent ከሌለ በቀላሉ ቀጣዩን ጊዜ ይጠብቃል።
AccuracySec አስገራሚው ነገር ነው። በነባሪ systemd ታይመሮችን በአንድ ደቂቃ መስኮት ውስጥ ያሰባስባል፣ ስለዚህ የመጀመሪያ ሩጫችን በ07:42:00 ሳይሆን በ07:42:18 መጣ። በ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ቱ አንዱ።
አስተያየቶች
እስካሁን አስተያየቶች የሉም። መጀመሪያ ይሁኑ።