Мазмуну:
- 1 -кадам: Systemd тарабынан берилген ыкмаларды колдонуу
- 2 -кадам: Кызматты текшерүүчү скрипттерди конфигурациялоо жана колдонуу
- 3 -кадам: Акыркы ойлор
Video: Linux серверлери үчүн Service Monitor Script: 4 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
Туруктуу, дайыма иштеп жаткан системага ээ болуу, эгер сиз Linuxту колдонуп жатсаңыз да, кыйын иш болушу мүмкүн.
Заманбап программалык камсыздоонун татаалдыгына жана начар коддоого байланыштуу кээ бир процесстер мезгил -мезгили менен бузулушу мүмкүн. Эгерде сиз серверди иштетип жатсаңыз жана кээ бирөөлөр бул кызматтарга таянса, бул жаман нерсе болушу мүмкүн.
1 -кадам: Systemd тарабынан берилген ыкмаларды колдонуу
Белгилүү болгондой, көпчүлүк Linux операциялык системалары systemd колдонушат.
Эгерде сиз systemd менен тааныш эмес болсоңуз, бул Википедияга ылайык:
"… Linux дистрибуциясында UNIX System V же Berkeley Software Distribution (BSD) init системаларынын ордуна, колдонуучу мейкиндигин жүктөө жана бардык процесстерди башкаруу үчүн колдонулган init системасы.…"
Көптөгөн адамдар дагы эле эмне үчүн жакшы эски инициативдик системаны ушул татаал процессти башкаруу системасы менен алмаштыруу керек болгонун талашып -тартышууда, бирок төмөнкү шилтемеден жакшы түшүндүрмө табууга болот:
www.tecmint.com/systemd-replaces-init-in-l…
Эң маанилүү жакшыртуу системанын баштапкыга караганда ырааттуу иштешинин ордуна, жүктөөдө параллель жана параллель иштетүүдөн улам системаны тезирээк алып келиши болмок.
Systemdдин тереңине кирбей туруп, процессти systemdге кошуу үчүн, сиз кызмат файлын түзүшүңүз керек. Мындай файлдын синтаксиси өтө жөнөкөйдөн өтө татаалга чейин өзгөрүшү мүмкүн жана биз майда -чүйдөсүнө чейин айтпайбыз. Негизги.service файлына ээ болуу үчүн, төмөнкү жазууларды колдонуу жетиштүү:
[Unit] Description = applicationDocumentation = https://wikipedia.org/ After = local-fs.target network.target [Service] Type = simpleExecStart =/usr/sbin/applicationExecReload =/usr/sbin/application reloadExecStop =/ usr/sbin/application stopRestart = дайыма [Орнотуу] WantedBy = multi-user.target
Муну application.service файлына/lib/systemd/system папкасына салыңыз.
Бул варианттардын ар бири эмне кылары төмөнкү шилтемеде түшүндүрүлөт:
access.redhat.com/documentation/en-US/Red_…
Колдонмоңузду баштоо үчүн, төмөнкү буйрукту бериңиз:
sudo systemctl баштоо application.service
Эскертүү:.service кеңейтүүсүн алып салууга болот.
Колдонмону токтотуу үчүн:
sudo systemctl stop application.service
Эгерде конфигурация файлы өзгөртүлүп, орнотууларды кайра жүктөөнү кааласаңыз:
sudo systemctl reload application.service
Колдонмону кайра баштоо үчүн:
sudo systemctl application.service өчүрүп күйгүзүү
Жүктөөдө автоматтык баштоону иштетүү үчүн:
sudo systemctl application.service иштетүү
Эгер бул иштетилген болсо, анда systemd процесс менеджери тутум файлы тарабынан берилген орнотуулардын негизинде тиркемени баштоого аракет кылат.
Аны өчүрүү үчүн жогорудагыдай буйрукту колдонуңуз, бирок 'disable' parameter менен.
Эгер кайра жүктөөнү = дайыма кызмат файлына койсоңуз, анда systemd процессти көзөмөлдөйт жана эгер процесстин тизмесинен табылбаса, аны автоматтык түрдө кайра баштоого аракет кылат.
Эгер жайгаштырсаңыз
RestartSec = 30
кайра баштоо көрсөтмөсүнөн кийин, процессти кайра баштоо үчүн 30 секунд күтөт. Бул пайдалуу болушу мүмкүн, анткени иштебей калган кызматтын/тиркемени үзгүлтүксүз өчүрүп -күйгүзүү системада суроо -талаптын жогору болушуна алып келиши мүмкүн (ката журналдарын жазуу ж.б.)
Көрүнүп тургандай, systemd буга чейин процесстерди көзөмөлдөө үчүн кээ бир каражаттарды берет. Бирок, кээ бир учурларда бул жетишсиз болушу мүмкүн. Процесс чыкпай калса (ал процесстин тизмесинде кала берет), бирок жооп берүүнү токтотот. Бул учурда, бир процесс чындап эле иштеп жатканына ынануу үчүн, кошумча текшерүүлөр жүргүзүлүшү мүмкүн.
Бул жерде бул нускамадан сценарийлер жардамга келет.
2 -кадам: Кызматты текшерүүчү скрипттерди конфигурациялоо жана колдонуу
Эгерде сиз иштеп жаткан процесстерди/кызматтарды көбүрөөк көзөмөлдөөгө муктаж болсоңуз, анда бул скрипттер пайдалуу болот.
Код бир аз чоң болгондуктан, ал githubга жүктөлгөн жана аны төмөнкү репозиторийден тапса болот:
github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh
Бүт пакеттин "жүрөгү" - бул
checkService.sh
Аны колдонуудан мурун, сиз кызмат папкасына толук жолду алмаштырышыңыз керек. Муну сценарийдин башында тапса болот.
Скрипт төмөндө сүрөттөлгөндөй бир нече процесстерди көзөмөлдөп, кошумча тапшырманы аткара алат:
Бул.serv же.check кеңейтүүлөрүнө ээ болгон /кызматтар папкасынан ар бир файлдан өтөт жана 'application' деп аталган активдүү процесс бар -жогун текшерет.
Колдонмо үчүн '.check' файлы жок болсо, application.serv файлы гана:
Эгерде процесс активдүү болсо, ал процессти активдүү деп эсептейт
Эгерде процесс активдүү болбосо, анда ал төмөнкү буйрукту берүү менен кызматты кайра баштайт:
systemctl кайра иштетүү колдонмосу
эгер.serv файлы бош болсо!
Эгерде.serv файлы бош болбосо жана аткарылуучу укуктарга ээ болсо, аны жөнөкөй BASH скрипти катары иштетүүгө аракет кылат.
Бул кызматты кайра жүктөөдөн башка бир нерсе жасалышы керек болсо пайдалуу.
Мисалы, spamd.serv файлында, жогорудагы репо кызматынан, эгер спам кызматы өлгөн болсо, анын ордуна спамассассин кызматын кайра баштоо керек, бул дагы спамды кайра баштайт. Жөн эле спамды кайра жүктөө жетишсиз болмок.
Мындай сервис файлынын мазмунун муктаждыктарга жараша түзөтө аласыз.
Дагы бир мисал pcscd.serv файлы. Бул учурда дагы бир нече процесстер кайра башталды/өлтүрүлдү.
Эгерде текшерүү файлы бар болсо, процесстин иштеп жаткандыгын текшергенден кийин, ал кошумча текшерүүлөрдү аткаруу үчүн бул скрипт файлын иштетет.
Мисалы, oscam кызматы үчүн, биз анын интерфейсине туташууга аракет кылган текшерүү файлын түздүк, анын ийгиликтүү болгонун билүү үчүн. Эгер андай болбосо, анда процесс активдүү болгонуна карабастан, кызмат жооп бербейт жана кайра баштоо керек. Кызматты кайра баштоо.чек файлынын өзү тарабынан аткарылышы/чакырылышы керек.
Дагы бир мисал медиатомб DLNA кызматы болмок.
Бул DLNA кардарларына видео/аудио мазмунун камсыз кылган жана өзүн тармакта көрсөтүүчү кичинекей сервер. Кээде кызмат илинип калат жана аны табуу мүмкүн болбой калат, бирок процесс дагы деле активдүү бойдон калат. Кызматтын ачылышын текшерүү үчүн gssdp-Discover деп аталган CLI утилита колдонулган. DLNA серверин текшерүүчү бүт код mediatomb.check скриптинин ичине жайгаштырылган.
Бул.serv жана.check файлдарын кантип колдонсоңуз болору жөнүндө бир нече мисалдар.
Жаңы кызматты көзөмөлдөө үчүн.serv түзүп, керек болсо текшерүү файлын түзүп, алардын ичине тиешелүү скриптти жазышыңыз керек.
Эгерде процесстин бар экендигин текшерүү жетиштүү болсо, анда бош.serv файлы жетиштүү болот. Эгерде кошумча текшерүүлөр жүргүзүлүшү керек болсо, анда.check файлын түзүү керек жана бул ишти аткаруу үчүн кичинекей скрипт жазылышы керек.
Албетте,.sh скрипти мезгил -мезгили менен иштеши керек, андыктан cron жумушун да түзүү керек:
#5 мүнөт сайын иштеп жаткан кызматтарды текшериңиз */5 * * * * /var/bin/ServiceCheck/checkService.sh>/dev/null
3 -кадам: Акыркы ойлор
Бул пакетти пайдалуу деп табасыз деп үмүттөнөм, анткени ал Linux процесстерин жөн эле көзөмөлдөп турат жана кызматыңыздын иштебей калуусун азайтат деп үмүттөнөм.
Githubга кошумча сценарийлерди жүктөп берүүдөн тартынбаңыз, эгер сиз жаңыларын түзсөңүз. Мага кабарлаңыз, мен сизди салымчы катары кошом.
Сунушталууда:
Чоңойтууну башкаруу үчүн гитара баатырдык гитараны колдонуу (Windows үчүн гана): 9 кадам
Масштабды көзөмөлдөө үчүн гитара баатырдык гитараны колдонуу (Windows үчүн гана): Биз глобалдык пандемиянын ортосунда турганыбыз үчүн, көбүбүз үйдү тазалап, Zoomдагы жолугушууларга катышып жатабыз. Бир аз убакыттан кийин, бул абдан жумшак жана кызыксыз болуп калышы мүмкүн. Үйүмдү тазалап жатып, ыргытып жиберилген эски гитара баатырын таптым
Эмне үчүн үйлөнүү үчүн робот куруш керек?: 9 кадам
Эмне үчүн үйлөнүү үлпөтүнө робот жасоо керек? Эмнеге менин жашоомдун эң маанилүү күнү үчүн мындай кылбаска? Үйлөнүү тоюна даярдык болуп жаткандыктан, шакектерди коридорго алып бара турган роботту жасадым
Ардуино үчүн температура сенсору COVID 19 үчүн колдонулат: 12 кадам (Сүрөттөр менен)
Ардуино үчүн температура сенсору COVID 19 үчүн колдонулат: Arduino үчүн температура сенсору адамдын денесиндеги процессордун температурасын өлчөгүбүз келгенде негизги элемент болуп саналат. Arduino менен температура сенсору жылуулуктун деңгээлин кабыл алуу жана өлчөө үчүн байланышта же жакын болушу керек. Мына ушинтип
WoW Жеке Серверлери: 3 кадам
WoW Жеке Серверлери: Бул сизге World of Warcraft программасын кантип төлөбөстөн көрсөтөт !!! Ошол замат сизге 80 -деңгээлди, бекер нерселерди ж. Эскертүү: чыныгы оюн үчүн төлөшүңүз керек болушу мүмкүн
Shell Script аркылуу Picaxe программасын орнотуу (Linux): 5 кадам
Picaxe программасын Shell Script аркылуу орнотуу (Linux): Бул аркылуу жөнөкөй басуу кантип ftp сайтынан программаны жүктөй турган кабык скриптин кантип жасоону көрсөтөт, андан кийин аны түзүп, анан пиксакка жүктөп алуу. (Бул дагы менин биринчи үйрөтүүчү)