{"id":66465,"date":"2022-08-31T08:53:06","date_gmt":"2022-08-31T13:53:06","guid":{"rendered":"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-systemd-for-att-starta-program-vid-uppstart-pa-raspberry-pi\/"},"modified":"2022-08-31T08:53:06","modified_gmt":"2022-08-31T13:53:06","slug":"hur-man-anvander-systemd-for-att-starta-program-vid-uppstart-pa-raspberry-pi","status":"publish","type":"post","link":"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-systemd-for-att-starta-program-vid-uppstart-pa-raspberry-pi\/","title":{"rendered":"Hur man anv\u00e4nder systemd f\u00f6r att starta program vid uppstart p\u00e5 Raspberry Pi"},"content":{"rendered":"<div>\n<p>Raspberry Pi \u00e4r en kraftfull SBC (single board-dator) som du kan anv\u00e4nda f\u00f6r olika applikationer och projekt.  Dess m\u00e5ngsidighet ligger i dess f\u00f6rm\u00e5ga att k\u00f6ra alla typer av program, inklusive anpassade skript, delvis tack vare Raspberry Pi OS och andra Linux-baserade operativsystem som den k\u00f6r.<\/p>\n<p>Att k\u00f6ra ett skript eller program p\u00e5 Raspberry Pi \u00e4r lika enkelt som att hitta det p\u00e5 systemet och k\u00f6ra det.  Men vad h\u00e4nder om du vill automatisera den h\u00e4r processen, kanske f\u00f6r att ditt projekt kr\u00e4ver det eller f\u00f6r att du vill effektivisera ditt arbetsfl\u00f6de?<\/p>\n<p>Ett svar p\u00e5 detta \u00e4r att l\u00e4ra sig hur man anv\u00e4nder systemd.<\/p>\n<h2 id=\"what-is-systemd\"><span class=\"ez-toc-section\" id=\"Vad_ar_Systemd\"><\/span>  Vad \u00e4r Systemd?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>systemd \u00e4r en upps\u00e4ttning systemkomponenter f\u00f6r tj\u00e4nstkonfiguration och beteende p\u00e5 moderna Linux-system.  Den identifieras med ett PID (processidentifierare) p\u00e5 1 eftersom det \u00e4r den f\u00f6rsta processen som startar upp vid systemstart.  Systemds syfte \u00e4r i stort att hj\u00e4lpa dig med att hantera och k\u00f6ra program vid systemstart.  Och det \u00e4r vad du kommer att utnyttja f\u00f6r att starta ditt program vid start p\u00e5 Pi.<\/p>\n<p>Som n\u00e4mnts inledningsvis finns det flera metoder f\u00f6r att k\u00f6ra program vid uppstart p\u00e5 Linux-system, s\u00e5som rc.local, cron och autostart.  Systemd r\u00e5kar dock ut f\u00f6r en b\u00e4ttre l\u00f6sning om du vill starta GUI-program (grafiskt anv\u00e4ndargr\u00e4nssnitt), automatisera applikationer att k\u00f6ra efter att vissa systemprocesser har b\u00f6rjat, eller k\u00f6ra program om och om igen tills din schemal\u00e4ggning fungerar.<\/p>\n<h2 id=\"how-to-use-systemd-to-launch-programs-at-startup\"><span class=\"ez-toc-section\" id=\"Hur_man_anvander_systemd_for_att_starta_program_vid_uppstart\"><\/span>  Hur man anv\u00e4nder systemd f\u00f6r att starta program vid uppstart<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>systemd \u00e4r en n\u00e5got mer komplicerad metod f\u00f6r att starta program vid uppstart p\u00e5 Linux-system.  Men den schemal\u00e4ggningsflexibilitet som den erbjuder j\u00e4mf\u00f6rt med andra metoder \u2013 de vi har n\u00e4mnt ovan \u2013 uppv\u00e4ger totalt dess komplexitet i alla aspekter.<\/p>\n<p>Systemd-metoden anv\u00e4nder enhetsfiler, som \u00e4r ungef\u00e4r som .ini-filer som inneh\u00e5ller kodningsinformation om enheter, tj\u00e4nster, sockets, startm\u00e5l och andra viktiga systemkomponenter.<\/p>\n<p>Enhetsfiler \u00e4r av olika typer.  S\u00e5, baserat p\u00e5 vilken typ av resurs du vill deklarera, m\u00e5ste du v\u00e4lja en enhetsfiltyp i enlighet med detta.  F\u00f6r syftet med den h\u00e4r guiden kommer vi dock att h\u00e5lla oss till .service-enhetsfiler, som l\u00e5ter dig hantera startbeteendet f\u00f6r program och skript p\u00e5 systemet.<\/p>\n<p>Nedan \u00e4r en uppdelning av stegen som \u00e4r involverade i att starta ett skript\/program vid uppstart med systemd.<\/p>\n<h3 id=\"creating-a-service\"><span class=\"ez-toc-section\" id=\"Skapa_en_tjanst\"><\/span>Skapa en tj\u00e4nst<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>F\u00f6r att st\u00e4lla in ditt program att k\u00f6ra vid start, skapa en serviceenhetsfil som talar om f\u00f6r systemd vilket program som ska k\u00f6ras och n\u00e4r.  S\u00e5 h\u00e4r g\u00f6r du.<\/p>\n<ol>    I CLI-f\u00f6nstret skriver du <strong>sudo nano \/lib\/systemd\/system\/display.service<\/strong>.  Du kan anv\u00e4nda vilket namn som helst f\u00f6r din tj\u00e4nst s\u00e5 l\u00e4nge den slutar med till\u00e4gget .service.  Klistra in f\u00f6ljande kodrader i servicefilen:<\/p>\n<pre>[Unit]<br\/>Description=PiCounter<br\/>After=network.target<br\/>[Service]<br\/>ExecStart=\/usr\/bin\/python3 \/home\/pi\/PiCounter\/display.py<br\/>Restart=always<br\/>User=pi<br\/>[Install]<br\/>WantedBy=multi-user.target<\/pre>\n<\/ol>\n<p>Alla dina vanliga konfigurationsalternativ faller under <strong>Enhet<\/strong> och <strong>Installera<\/strong> sektioner, medan de tj\u00e4nstespecifika konfigurationsalternativen g\u00e5r under sektionen Tj\u00e4nst.<\/p>\n<p>N\u00e5gra av ovanst\u00e5ende direktiv-v\u00e4rdepar som du kan beh\u00f6va \u00e4ndra inkluderar:<\/p>\n<p>i.<strong> Efter:<\/strong> Det avg\u00f6r n\u00e4r tj\u00e4nsten ska startas.  St\u00e4ller in den p\u00e5 <strong>n\u00e4tverk.m\u00e5l<\/strong> s\u00e4kerst\u00e4ller att det listade v\u00e4rdet \u2014 network.target i detta fall \u2014 startar innan den aktuella enheten p\u00e5b\u00f6rjas.  Det styr dock inte ett beroendef\u00f6rh\u00e5llande f\u00f6r tj\u00e4nsten att utl\u00f6sa;  det g\u00f6rs genom andra direktiv som Wants, Requires och WantedBy.<\/p>\n<p>Naturligtvis kan du \u00e4ndra detta v\u00e4rde f\u00f6r att passa dina projektkrav.  Om du till exempel vill att ditt program ska k\u00f6ras efter att din Raspberry Pi anslutit till ett n\u00e4tverk, kan du anv\u00e4nda <strong>n\u00e4tverk-online.m\u00e5l<\/strong> v\u00e4rde.  Du kan referera till Fedoras dokumentation om systemd f\u00f6r att l\u00e4ra dig mer om dessa v\u00e4rden.<\/p>\n<p>ii.<strong> ExecStart:<\/strong> Den inneh\u00e5ller den absoluta s\u00f6kv\u00e4gen och programmet\/skriptnamnet som du vill k\u00f6ra vid start.  S\u00e5 beroende p\u00e5 vad du vill utf\u00f6ra m\u00e5ste du l\u00e4gga till v\u00e4rden f\u00f6r b\u00e5da dessa direktiv.<\/p>\n<p>iii.<strong> Anv\u00e4ndare:<\/strong> Den identifierar namnet p\u00e5 din Raspberry Pi.  Om du har \u00e4ndrat din Pi-namn m\u00e5ste du ange det v\u00e4rdet f\u00f6r anv\u00e4ndare.<\/p>\n<p>iv.<strong><strong>  Efterlyst av: <\/strong><\/strong>Det \u00e4r det vanligaste s\u00e4ttet att specificera triggern f\u00f6r en enhet.  Genom att st\u00e4lla in den p\u00e5 <strong>multi-user.target<\/strong>, kan du uppr\u00e4tta en beroenderelation som kommer att k\u00f6ra programmet n\u00e4r systemkontrollen \u00f6verl\u00e4mnas till fleranv\u00e4ndarskalet.<\/p>\n<p>Dessutom k\u00f6r detta \u00e4ven ditt program innan Pis X-Windows-system startar, vilket inneb\u00e4r att ditt program k\u00f6rs redan innan du loggar in p\u00e5 systemet.  Om du vill att ett skript ska k\u00f6ras innan du loggar in p\u00e5 din Raspberry Pi, s\u00e5 kan du g\u00f6ra det.<\/p>\n<p>Ovanst\u00e5ende kodrader fungerar f\u00f6r icke-GUI-program.  Men om du vill k\u00f6ra ett GUI-program med systemd b\u00f6r du l\u00e4gga till f\u00f6ljande kod till din tj\u00e4nstfil:<\/p>\n<pre>[Unit]<br\/>Description=PiCounter<br\/>After=network.target<br\/>[Service]<br\/>Environment=Display=:0<br\/>Environment=XAUTHORITY\/home\/pi\/.Xauthority<br\/>ExecStart=\/usr\/bin\/python3 \/home\/pi\/PiCounter\/display.py<br\/>Restart=always<br\/>[Install]<br\/>WantedBy=multi-user.target<br\/><\/pre>\n<p>I ovanst\u00e5ende direktiv-v\u00e4rdepar \u00e4r allt du beh\u00f6ver \u00e4ndra v\u00e4rdet f\u00f6r <strong>ExecStart<\/strong> direktiv.  Byt ut den i kodblocket med programmet du vill k\u00f6ra vid uppstart.  N\u00e4r du har fyllt i tj\u00e4nstefilen, tryck <strong>CTRL + O<\/strong> f\u00f6r att spara den.<\/p>\n<h3 id=\"test-the-service\"><span class=\"ez-toc-section\" id=\"Testa_tjansten\"><\/span>Testa tj\u00e4nsten<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Med tj\u00e4nsten redo, verifiera manuellt om den fungerar.  F\u00f6r detta, skriv f\u00f6ljande kommando i terminalen: <strong>sudo systemctl starta display.service<\/strong>.  Tj\u00e4nsten b\u00f6r utf\u00f6ra dina instruktioner framg\u00e5ngsrikt.<\/p>\n<p>N\u00e4r det g\u00f6r det, avsluta det med <strong>sudo systemctl stoppa display.service<\/strong>.<\/p>\n<h3 id=\"enable-the-service\"><span class=\"ez-toc-section\" id=\"Aktivera_tjansten\"><\/span>Aktivera tj\u00e4nsten<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Om du lyckades k\u00f6ra ditt program med hj\u00e4lp av tj\u00e4nsten \u00e4r det dags att aktivera det s\u00e5 att det k\u00f6r ditt program automatiskt varje g\u00e5ng du startar upp din Raspberry Pi.<\/p>\n<p>F\u00f6r att g\u00f6ra detta, skriv<strong> sudo systemctl aktivera display.service<\/strong> i terminalf\u00f6nstret.  Och n\u00e4r det \u00e4r gjort, g\u00e5 in<strong> sudo omstart<\/strong> f\u00f6r att starta om din Pi.<\/p>\n<p>N\u00e4r din Raspberry Pi startar upp b\u00f6r systemd k\u00f6ra ditt program enligt dina instruktioner.<\/p>\n<h2 id=\"automating-program-launch-at-startup-on-raspberry-pi\"><span class=\"ez-toc-section\" id=\"Automatisera_programstart_vid_start_pa_Raspberry_Pi\"><\/span>  Automatisera programstart vid start p\u00e5 Raspberry Pi<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Som de flesta Linux-system l\u00e5ter Raspberry Pi OS dig ocks\u00e5 utf\u00f6ra operationer p\u00e5 flera s\u00e4tt, och det f\u00f6rblir sant att schemal\u00e4gga programstarter ocks\u00e5.  S\u00e5 om du vill starta GUI-program\/skript vid start och vill ha b\u00e4ttre kontroll \u00f6ver din schemal\u00e4ggning \u00e4r systemd helt klart en b\u00e4ttre metod.<\/p>\n<p>Men som sagt, om du vill ha en enklare l\u00f6sning eller om dina projektkrav kr\u00e4ver specifik schemal\u00e4ggning, kan du l\u00e4sa v\u00e5r guide till att k\u00f6ra ett Raspberry Pi-program eller -skript vid start f\u00f6r att l\u00e4ra dig mer.<\/p>\n<p>    <strong class=\"section-sub-title\">Om f\u00f6rfattaren<\/strong><\/p>\n<p>            <strong class=\"bio-title\">Yash Wate (40 publicerade artiklar)<br \/><\/strong><\/p>\n<p>Yash \u00e4r en personalskribent p\u00e5 MUO f\u00f6r g\u00f6r-det-sj\u00e4lv, Linux, programmering och s\u00e4kerhet.  Innan han hittade sin passion f\u00f6r att skriva brukade han utveckla f\u00f6r webben och iOS.  Du kan ocks\u00e5 hitta hans f\u00f6rfattarskap p\u00e5 TechPP, d\u00e4r han t\u00e4cker andra vertikaler.  F\u00f6rutom teknik tycker han om att prata om astronomi, Formel 1 och klockor.<\/p>\n<p>                            Mer fr\u00e5n Yash Wate<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Prenumerera_pa_vart_nyhetsbrev\"><\/span>Prenumerera p\u00e5 v\u00e5rt nyhetsbrev<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>G\u00e5 med i v\u00e5rt nyhetsbrev f\u00f6r tekniska tips, recensioner, free e-b\u00f6cker och exklusiva erbjudanden!<\/p>\n<p>Klicka h\u00e4r f\u00f6r att prenumerera<\/p>\n<\/p><\/div>\n  <div id=\"ez-toc-container\" class=\"ez-toc-v2_0_88 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-systemd-for-att-starta-program-vid-uppstart-pa-raspberry-pi\/#Vad_ar_Systemd\" >Vad \u00e4r Systemd?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-systemd-for-att-starta-program-vid-uppstart-pa-raspberry-pi\/#Hur_man_anvander_systemd_for_att_starta_program_vid_uppstart\" >Hur man anv\u00e4nder systemd f\u00f6r att starta program vid uppstart<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-systemd-for-att-starta-program-vid-uppstart-pa-raspberry-pi\/#Skapa_en_tjanst\" >Skapa en tj\u00e4nst<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-systemd-for-att-starta-program-vid-uppstart-pa-raspberry-pi\/#Testa_tjansten\" >Testa tj\u00e4nsten<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-systemd-for-att-starta-program-vid-uppstart-pa-raspberry-pi\/#Aktivera_tjansten\" >Aktivera tj\u00e4nsten<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-systemd-for-att-starta-program-vid-uppstart-pa-raspberry-pi\/#Automatisera_programstart_vid_start_pa_Raspberry_Pi\" >Automatisera programstart vid start p\u00e5 Raspberry Pi<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blogging-techies.com\/sw\/hur-man-anvander-systemd-for-att-starta-program-vid-uppstart-pa-raspberry-pi\/#Prenumerera_pa_vart_nyhetsbrev\" >Prenumerera p\u00e5 v\u00e5rt nyhetsbrev<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n ","protected":false},"excerpt":{"rendered":"<p>Raspberry Pi \u00e4r en kraftfull SBC (single board-dator) som du kan anv\u00e4nda f\u00f6r olika applikationer och projekt. Dess m\u00e5ngsidighet ligger i dess f\u00f6rm\u00e5ga att k\u00f6ra alla typer av program, inklusive anpassade skript, delvis tack vare Raspberry Pi OS och andra Linux-baserade operativsystem som den k\u00f6r. Att k\u00f6ra ett skript eller program p\u00e5 Raspberry Pi \u00e4r [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":66466,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/ipotek.net\/wp-content\/uploads\/2022\/01\/Hur-man-anvander-systemd-for-att-starta-program-vid-uppstart.jpg","fifu_image_alt":"","footnotes":""},"categories":[5],"tags":[16,15,35,27,163,45,10192,6792,4862,36326,36327,222],"class_list":["post-66465","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bloggar","tag-anvander","tag-att","tag-for","tag-hur","tag-man","tag-pa","tag-program","tag-raspberry","tag-starta","tag-systemd","tag-uppstart","tag-vid"],"_links":{"self":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts\/66465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/comments?post=66465"}],"version-history":[{"count":0,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts\/66465\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/media\/66466"}],"wp:attachment":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/media?parent=66465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/categories?post=66465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/tags?post=66465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}