{"id":1966,"date":"2018-02-11T08:00:52","date_gmt":"2018-02-11T07:00:52","guid":{"rendered":"https:\/\/www.my-it-brain.de\/wordpress\/?p=1966"},"modified":"2018-02-02T21:24:12","modified_gmt":"2018-02-02T20:24:12","slug":"unit-typ-systemd-path-kurz-vorgestellt","status":"publish","type":"post","link":"https:\/\/www.my-it-brain.de\/wordpress\/unit-typ-systemd-path-kurz-vorgestellt\/","title":{"rendered":"Unit-Typ systemd.path kurz vorgestellt"},"content":{"rendered":"<p>Mit <em>systemd.path<\/em> lassen sich Dateien und Verzeichnisse auf bestimmte Ereignisse hin \u00fcberwachen. Tritt ein spezifiziertes Ereignis ein, wird eine Service-Unit ausgef\u00fchrt, welche \u00fcblicherweise den gleichen Namen, wie die Path-Unit tr\u00e4gt.<\/p>\n<p>Wie dies funktioniert, m\u00f6chte ich an einem sehr einfachen Beispiel zeigen. Das Ziel ist, die Datei <code>testfile<\/code> auf \u00c4nderungen hin zu \u00fcberwachen. Immer wenn die Datei nach einem Schreibvorgang geschlossen wird, soll ein bestimmtes Skript gestartet werden.<\/p>\n<h2>beispiel.path<\/h2>\n<p>Im Verzeichnis <code>\/etc\/systemd\/system\/<\/code> wird die Datei <code>beispiel.path<\/code> mit folgendem Inhalt erstellt:<\/p>\n<pre>[Unit]\r\nDescription=Datei auf \u00c4nderungen hin \u00fcberwachen\r\n\r\n[Path]\r\nPathChanged=\/home\/oglattermann\/testfile\r\nUnit=beispiel.service\r\n\r\n[Install]\r\nWantedBy=multi-user.target\r\n<\/pre>\n<p>In der Sektion <code>[Path]<\/code> wird mit <code>PathChanged=<\/code> der absolute Pfad zu der zu \u00fcberwachenden Datei spezifiziert, w\u00e4hrend <code>Unit=<\/code> angibt, welche Service-Unit ausgef\u00fchrt werden soll, wenn sich die Datei \u00e4ndert. Diese Unit soll gestartet werden, wenn sich das System im Multi-User-Mode befindet.<\/p>\n<h2>beispiel.service<\/h2>\n<p>Wird die Datei <code>testfile<\/code> ge\u00e4ndert (genau: geschrieben und geschlossen), wird folgende Service-Unit aufgerufen, um das darin spezifizierte Skript auszuf\u00fchren:<\/p>\n<pre>[Unit]\r\nDescription=F\u00fchrt Skript aus, wenn eine Datei sich ge\u00e4ndert hat.\r\n\r\n[Service]\r\nType=simple\r\nExecStart=\/home\/oglattermann\/skript.sh\r\n\r\n[Install]\r\nWantedBy=multi-user.target\r\n<\/pre>\n<p>Das Skript <code>skript.sh<\/code> enth\u00e4lt dabei in diesem Beispiel lediglich folgenden Code:<\/p>\n<pre>#!\/bin\/bash\r\necho \"Datei ge\u00e4ndert\" &gt;\/home\/oglattermann\/Output.txt\r\n<\/pre>\n<p>F\u00fcr einen Test m\u00fcssen die beiden soeben erstellten Units noch aktiviert werden:<\/p>\n<pre>sudo systemctl enable beispiel.path beispiel.service\r\nsudo systemctl start beispiel.path\r\n<\/pre>\n<p>Schreibt man nun die Datei <code>testfile<\/code> neu bzw. wird eine Schreiboperation auf diese Datei abgeschlossen, wird die entsprechende Service-Unit ausgef\u00fchrt und man findet die Datei <code>Output.txt<\/code> vor.<\/p>\n<h2>Anwendungsbeispiele<\/h2>\n<p>Die folgende, unvollst\u00e4ndige und nicht abschlie\u00dfende Liste f\u00fchrt einige Anwendungsbeispiele auf, wo sich <em>systemd.path<\/em> sinnvoll nutzen l\u00e4sst.<\/p>\n<ul>\n<li>Ereignisgesteuerte Datenverarbeitung starten<\/li>\n<li>Dateien unter <code>\/etc<\/code> \u00fcberwachen und bei \u00c4nderungen Benachrichtigung versenden<\/li>\n<li>Import-Ordner auf neue Dateien hin \u00fcberwachen und Verarbeitung starten<\/li>\n<\/ul>\n<h2>Quellen und weiterf\u00fchrende Links<\/h2>\n<ul>\n<li><a href=\"https:\/\/wiki.ubuntuusers.de\/systemd\/Units\/\">https:\/\/wiki.ubuntuusers.de\/systemd\/Units\/<\/a><\/li>\n<li><a href=\"https:\/\/wiki.ubuntuusers.de\/systemd\/Service_Units\/\">https:\/\/wiki.ubuntuusers.de\/systemd\/Service_Units\/<\/a><\/li>\n<li>systemd.unit(5)<\/li>\n<li>systemd.path(5)<\/li>\n<li>systemd.service(5)<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Mit systemd.path lassen sich Dateien und Verzeichnisse auf bestimmte Ereignisse hin \u00fcberwachen. Tritt ein spezifiziertes Ereignis ein, wird eine Service-Unit ausgef\u00fchrt, welche \u00fcblicherweise den gleichen Namen, wie die Path-Unit tr\u00e4gt. Wie dies funktioniert, m\u00f6chte ich an einem sehr einfachen Beispiel zeigen. Das Ziel ist, die Datei testfile auf \u00c4nderungen hin zu \u00fcberwachen. Immer wenn die<span class=\"continue-reading\"> <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/unit-typ-systemd-path-kurz-vorgestellt\/\">[Weiterlesen&#8230;]<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_metis_text_type":"","_metis_text_length":0,"_post_count":0,"footnotes":""},"categories":[51],"tags":[482,430,305,481],"class_list":["post-1966","post","type-post","status-publish","format-standard","hentry","category-linux","tag-inotify","tag-osbn","tag-planet","tag-systemd-path"],"_links":{"self":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/1966","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/comments?post=1966"}],"version-history":[{"count":2,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/1966\/revisions"}],"predecessor-version":[{"id":1968,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/1966\/revisions\/1968"}],"wp:attachment":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/media?parent=1966"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/categories?post=1966"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/tags?post=1966"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}