Si të aktivizoni komandat në ndryshimet e skedarit/direktorit me Incron në Debian
Ky udhëzues tregon se si mund të instaloni dhe përdorni incron në një sistem Debian 9 (Stretch). Incron është i ngjashëm me cron, por në vend të ekzekutimit të komandave të bazuara në kohë, ai mund të aktivizojë komanda kur ndodhin ngjarje të skedarit ose drejtorisë (p.sh. një modifikim skedari, ndryshime të lejeve, etj.).
1 Parakushtet
- Lejet e administratorit të sistemit (identifikimi rrënjësor). Të gjitha komandat në këtë tutorial duhet të ekzekutohen si përdorues rrënjë në shell.
- Do të përdor redaktorin \nano\ për të redaktuar skedarët. Ju mund të zëvendësoni nano me një redaktues sipas zgjedhjes suaj ose të instaloni nano me \apt-get install nano\ nëse nuk është i instaluar në serverin tuaj.
2 Instalimi i Incron
Incron është i disponueshëm në depon e Debian, kështu që ne instalojmë incron me komandën e mëposhtme apt:
apt-get install incron
Procesi i instalimit duhet të jetë i ngjashëm me atë në këtë pamje të ekranit.
3 Përdorimi i Incron
Përdorimi i inkronit është shumë i ngjashëm me përdorimin e cron. Ju keni komandën incrontab që ju lejon të listoni (-l), të modifikoni (-e) dhe të hiqni (-r) hyrjet incrontab.
Për të mësuar më shumë rreth tij, shihni:
man incrontab
Aty gjeni edhe seksionin e mëposhtëm:
Nëse ekziston /etc/incron.allow vetëm përdoruesit e listuar këtu mund të përdorin incron. Përndryshe, nëse ekziston /etc/incron.deny, vetëm përdoruesit që NUK janë të listuar këtu mund të përdorin incron. Nëse asnjë prej këtyre skedarëve nuk ekziston, të gjithë lejohen të përdorin incron. (Shënim i rëndësishëm: Kjo sjellje është e pasigurt dhe ndoshta do të ndryshohet për të qenë në përputhje me stilin e përdorur nga ISC Cron.) Vendndodhja e këtyre skedarëve mund të ndryshohet në konfigurim.
Kjo do të thotë nëse duam të përdorim incrontab si rrënjë, duhet ose të fshijmë /etc/incron.allow (që është e pasigurt sepse atëherë çdo përdorues i sistemit mund të përdorë incrontab)...
rm -f /etc/incron.allow
... ose shtoni rrënjë në atë skedar (rekomandohet). Hapni skedarin /etc/incron.allow me nano:
nano /etc/incron.allow
Dhe shtoni rreshtin e mëposhtëm. Pastaj ruani skedarin.
root
Përpara se ta bëni këtë, do të merrni mesazhe gabimi si ky kur përpiqeni të përdorni incrontab:
server1:~# incrontab -l
user 'root' is not allowed to use incron
Më pas funksionon:
server1:~# incrontab -l
no table for root
Mund të përdorim komandën:
incrontab -e
Për të krijuar punë incron. Përpara se ta bëjmë këtë, i hedhim një sy faqes incron man:
man 5 incrontab
Faqja e burrit shpjegon formatin e krontabëve. Në thelb, formati është si më poshtë ...
<path> <mask> <command>
...ku
IN_ACCESS File was accessed (read) (*)
IN_ATTRIB Metadata changed (permissions, timestamps, extended attributes, etc.) (*)
IN_CLOSE_WRITE File opened for writing was closed (*)
IN_CLOSE_NOWRITE File not opened for writing was closed (*)
IN_CREATE File/directory created in watched directory (*)
IN_DELETE File/directory deleted from watched directory (*)
IN_DELETE_SELF Watched file/directory was itself deleted
IN_MODIFY File was modified (*)
IN_MOVE_SELF Watched file/directory was itself moved
IN_MOVED_FROM File moved out of watched directory (*)
IN_MOVED_TO File moved into watched directory (*)
IN_OPEN File was opened (*)
Kur monitoroni një direktori, ngjarjet e shënuara me një yll (*) më sipër mund të ndodhin për skedarët në drejtori, në të cilin rast fusha e emrit në
të dhënat e ngjarjeve të kthyera identifikon emrin e skedarit brenda direktorisë.
Simboli IN_ALL_EVENTS përcaktohet si një maskë e të gjitha ngjarjeve të mësipërme. Dy simbole shtesë komoditeti janë IN_MOVE, që është një kombinim i IN_MOVED_FROM dhe IN_MOVED_TO, dhe IN_CLOSE që kombinon IN_CLOSE_WRITE dhe IN_CLOSE_NOWRITE.
Simbolet e mëtejshme të mëposhtme mund të specifikohen në maskë:
IN_DONT_FOLLOW Don't dereference pathname if it is a symbolic link
IN_ONESHOT Monitor pathname for only one event
IN_ONLYDIR Only watch pathname if it is a directory
Për më tepër, ekziston një simbol që nuk shfaqet në grupin e simboleve inotify. Është IN_NO_LOOP. Ky simbol çaktivizon monitorimin e ngjarjeve derisa aktuali të trajtohet plotësisht (derisa procesi i tij fëmijë të përfundojë).
$$ dollar sign
watched filesystem path (see above)
$# event-related file name
$% event flags (textually)
$& event flags (numerically)
Nëse shikoni një drejtori, atëherë [email ruan shtegun e plotë drejt skedarit dhe $# është bosh.
Nëse ju duhen shkronjat e egra, por nuk jeni të sigurt se për çfarë përkthehen, mund të krijoni një punë inkroni si kjo. Hapni incrontab-in:
incrontab -e
dhe shtoni rreshtin e mëposhtëm:
/tmp/ IN_MODIFY echo "$$ $# $% $&"
Më pas krijoni ose modifikoni një skedar në drejtorinë /tmp dhe hidhni një sy në /var/log/syslog - ky regjistër tregon kur u aktivizua një punë incron, nëse kishte sukses ose nëse kishte gabime dhe cila ishte komanda aktuale është ekzekutuar (d.m.th., shkronjat e egra zëvendësohen me vlerat e tyre reale).
tail /var/log/syslog
...
Jan 10 13:52:35 server1 incrond[1012]: (root) CMD (echo "$ /tmp .hello.txt.swp IN_MODIFY 2")
Jan 10 13:52:36 server1 incrond[1012]: (root) CMD (echo "$ /tmp .hello.txt.swp IN_MODIFY 2")
Jan 10 13:52:39 server1 incrond[1012]: (root) CMD (echo "$ /tmp hello.txt IN_MODIFY 2")
Jan 10 13:52:39 server1 incrond[1012]: (root) CMD (echo "$ /tmp .hello.txt.swp IN_MODIFY 2")
Në këtë shembull, unë editova skedarin /tmp/hello.txt; siç e shihni [email përkthehet në /tmp, $# në hello.txt, $% në IN_CREATE dhe $& në 256. Kam përdorur një redaktues që krijoi një skedar të përkohshëm .txt.swp e cila rezulton në linjat shtesë në syslog.
Tani mjaft teori. Le të krijojmë punët tona të para incron. Id doja të monitoroj skedarin /etc/apache2/apache2.conf dhe direktorinë /etc/apache2/vhosts/, dhe sa herë që ka ndryshime, dua që incron të rifillojë Apache. Kështu e bëjmë ne:
incrontab -e
/etc/apache2/apache2.conf IN_MODIFY /usr/sbin/service apache2 restart
/etc/apache2/sites-available/ IN_MODIFY /usr/sbin/service apache2 restart
Kjo eshte. Për qëllime testimi, mund të modifikoni konfigurimin tuaj të Apache dhe të hidhni një sy në /var/log/syslog dhe duhet të shihni që incron rinis Apache-n.
SHËNIM: Mos bëni asnjë veprim nga brenda një pune incron në një drejtori që monitoroni për të shmangur lakimet. Shembull: Kur monitoroni drejtorinë /tmp për ndryshime dhe çdo ndryshim aktivizon një skript që shkruan një skedar log në /tmp, kjo do të shkaktojë një lak dhe mund ta sjellë sistemin tuaj në ngarkesë të lartë ose edhe ta prishë atë .
Për të renditur të gjitha punët e përcaktuara të incronit, mund të ekzekutoni:
incrontab -l
server1:~# incrontab -l
/etc/apache2/apache2.conf IN_MODIFY /usr/sbin/service apache2 restart
/etc/apache2/vhosts/ IN_MODIFY /usr/sbin/service apache2 restart
Për të fshirë të gjitha punët e inkronit të përdoruesit aktual, ekzekutoni:
incrontab -r
server1:~# incrontab -r
removing table for user 'root'
table for user 'root' successfully removed
4 Lidhje
- Debian http://www.debian.org
- Software Incron: http://inotify.aiken.cz/?section=incron&page=about&lang=en