{"id":33137,"date":"2024-12-02T21:11:14","date_gmt":"2024-12-02T21:11:14","guid":{"rendered":"https:\/\/www.linuxboxen.dk\/?p=33137"},"modified":"2024-12-13T13:50:30","modified_gmt":"2024-12-13T13:50:30","slug":"linux-systemd-kan-bruges-til-mange-ting","status":"publish","type":"post","link":"https:\/\/www.linuxboxen.dk\/?p=33137","title":{"rendered":"Linux systemd kan bruges til mange ting."},"content":{"rendered":"\n<pre class=\"wp-block-preformatted\">Jeg havde et st\u00f8re problem med docker og hvordan container startes i den rigtige r\u00e6kkef\u00f8lge. Hvis du kun bruger docker service til at starte dine container kan du ikke helt styre hvilken container som starter i hvilken r\u00e6kkef\u00f8lge.<br><br>For at l\u00f8se dette lavet jeg et systemd script som kalder et bash script som starter container op i den rigtige r\u00e6kkef\u00f8lge.<br><br>Her er et systemd script som starter efter docker er startet.<\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>$ vi \/etc\/systemd\/my_app.service\n\n&#91;Unit]\nDescription=Restart docker container in the right way.\nAfter=docker.target\n\n&#91;Service]\nType=oneshot\nExecStart=\/data\/docker\/start_service.sh\nExecStop=\/data\/docker\/stop_service.sh\nRemainAfterExit=true\n\n&#91;Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">Du kan se det best\u00e5r af 3 dele. En Unit samt Service og en Install del.<br><br>Unit bruges her til at beskrive hvad processen g\u00f8r. Samt sikre den starter op efter at docker service er startet op.<br><br>Service beskriver hvilken type det er, her <strong>oneshot<\/strong> den simpleste type af service, samt hvilken process som skal startes her <strong>start_service.sh<\/strong><br><br>Install beskriver under hvilken target (type) som den skal oprettes under.<br><br>For at g\u00f8re den nye service aktiv skal vi fort\u00e6lle systemd vores nye service, dette g\u00f8res med kommandoen systemctl som vist.<br><br>Du opretter en oneshot-service som enhver anden tjeneste. En brugeroprettet service fil skal ligge i \/etc\/systemd\/system\/, mens systemtjenester skal findes i \/usr\/lib\/systemd\/system.<br><br>Af typer findes der udover oneshot.<br>simple,forking<br>exec,dbus,notify,idle<br><br>oneshot er ogs\u00e5 den type som bruges hvis du ikke specificere hvilken type du skal bruge.<br><br>Med RemainAfterExit=false, er n\u00e5r processen, der blev startet af ExecStart, afsluttes, kaldes ExecStop (fordi du sagde, at den stopper, n\u00e5r den afsluttes). Hvis du ikke holder en proces k\u00f8rende i hele tjenestens levetid. Du ville v\u00e6re bedre stillet. P\u00e5 den m\u00e5de vil systemd betragte tjenesten som aktiv og ikke udf\u00f8re ExecStop, f\u00f8r du eller noget andet andet fort\u00e6ller, at den skal stoppe (f.eks. g\u00e5r selve ExecStart-processen ned).<br><br>S\u00e5 brug RemainAfterExit=true ved oneshot<br><br>jeg vil ikke komme ind p\u00e5 de andre typer men du skal vide de findes.<br><br>For at registere samt enable vores service skriver du.<br><br>$ systemctl daemon-reload<br>$ systemctl enable my_app.service<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">Disse service kaldes under boot.<br><br><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><a href=\"https:\/\/www.linuxboxen.dk\/?p=33130\" data-type=\"link\" data-id=\"https:\/\/www.linuxboxen.dk\/?p=33130\">Link til jenkins system service<\/a><\/pre>\n\n\n<div class=\"wp-block-page-views-count-stats\"><div class=\"pvc_clear\"><\/div><p id=\"pvc_stats_33137\" class=\"pvc_stats all  pvc_load_by_ajax_update\" data-element-id=\"33137\" style=\"float:left;\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/www.linuxboxen.dk\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p><div class=\"pvc_clear\"><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Jeg havde et st\u00f8re problem med docker og hvordan container startes i den rigtige r\u00e6kkef\u00f8lge. Hvis du kun bruger docker service til at starte dine container kan du ikke helt styre hvilken container som starter i hvilken r\u00e6kkef\u00f8lge.For at l\u00f8se dette lavet jeg et systemd script som kalder et bash script som starter container op [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":33140,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","footnotes":""},"categories":[5,2,8],"tags":[],"class_list":["post-33137","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bash","category-tips","category-shell"],"_links":{"self":[{"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=\/wp\/v2\/posts\/33137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=33137"}],"version-history":[{"count":21,"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=\/wp\/v2\/posts\/33137\/revisions"}],"predecessor-version":[{"id":33187,"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=\/wp\/v2\/posts\/33137\/revisions\/33187"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=\/wp\/v2\/media\/33140"}],"wp:attachment":[{"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=33137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=33137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=33137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}