<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>unit service &#8211; SMsoft &#8211; informatica e dintorni</title>
	<atom:link href="https://blog.smsoft.it/tag/unit-service/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.smsoft.it</link>
	<description>consigli settimanali su MacOS, GNU/Linux ed Open Source</description>
	<lastBuildDate>Mon, 13 Sep 2021 09:02:44 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=82681</generator>
	<item>
		<title>systemd: Creare un nuovo servizio</title>
		<link>https://blog.smsoft.it/2019/12/17/systemd-creare-un-nuovo-servizio/</link>
					<comments>https://blog.smsoft.it/2019/12/17/systemd-creare-un-nuovo-servizio/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 17 Dec 2019 09:30:00 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[systemd]]></category>
		<category><![CDATA[unit service]]></category>
		<guid isPermaLink="false">https://blog.smsoft.it/?p=4525</guid>

					<description><![CDATA[Qualche tempo fa abbiamo parlato di systemd, oggi vediamo come creare un nostro unit service per avviare qualcosa tramite systemd. Ad esempio vogliamo avviare uno script in /home/prova/ chiamato prova.py con utente prova. Creiamo un nuovo file in /lib/systemd/system/ chiamato prova.service e scriviamoci: [Unit] Description=Prova Service After=multi-user.target [Service] Type=simple ExecStart=/usr/local/bin/python /home/prova/prova.py User=prova Group=prova WorkingDirectory=/home/prova/ Restart=always ... <a title="systemd: Creare un nuovo servizio" class="read-more" href="https://blog.smsoft.it/2019/12/17/systemd-creare-un-nuovo-servizio/" aria-label="Per saperne di più su systemd: Creare un nuovo servizio">Leggi tutto</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Qualche tempo fa abbiamo parlato di <a href="https://blog.smsoft.it/2016/07/12/come-funziona-systemd/">systemd</a>, oggi vediamo come creare un nostro unit service per avviare qualcosa tramite systemd.</p>



<p class="wp-block-paragraph">Ad esempio vogliamo avviare uno script in <strong>/home/prova/</strong> chiamato <strong>prova.py</strong> con utente <strong>prova</strong>. <br>Creiamo un nuovo file in <strong>/lib/systemd/system/</strong> chiamato <strong>prova.service</strong> e scriviamoci:</p>



<pre class="wp-block-preformatted">[Unit]
 Description=Prova Service
 After=multi-user.target

[Service]
 Type=simple
 ExecStart=/usr/local/bin/python  /home/prova/prova.py
 User=prova
 Group=prova
 WorkingDirectory=/home/prova/
 Restart=always
 RestartSec=10

[Install]
 WantedBy=multi-user.target</pre>



<p class="wp-block-paragraph">Nel file precedete possiamo evidenziare:</p>



<p class="wp-block-paragraph"><strong>[Unit]</strong>, determina che questo file è relativa ad una unit per per il servizio</p>



<p class="wp-block-paragraph"><strong>Description</strong> un nome generico per il servizio</p>



<p class="wp-block-paragraph"><strong>After=multi-user.target</strong>  questa riga indica al sistema quando avviare lo script. In questo caso (con la direttiva <strong>multi-user.target</strong>) informiamo systemd di avviarlo quando il sistema è pronto, dopo il boot, per il login degli utenti. E&#8217; la situazioni tipica per avviare uno script dopo l&#8217;avvio del sistema</p>



<p class="wp-block-paragraph"><strong>[Service]</strong>, indica i dettagli del servizio</p>



<p class="wp-block-paragraph"><strong>Type</strong> è la modalità con cui il servizio viene eseguito. <em>simple</em> indica che si tratta di un normale servizio, oppure <em>oneshot</em> indica di eseguire uno script ed uscire. Maggiori dettagli sui tipi sono indicati <a rel="noreferrer noopener" aria-label="qui (apre in una nuova scheda)" href="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Unit_Files.html#ftn.idp25579584" target="_blank">qui</a>. </p>



<p class="wp-block-paragraph"><strong>ExecStart</strong> si tratta del comando da eseguire, nel nostro caso lo script Python</p>



<p class="wp-block-paragraph"><strong>User</strong> opzionale, specifica l&#8217;utente con cui eseguire lo script, altrimenti viene lanciato con l&#8217;utente <strong>root</strong>  </p>



<p class="wp-block-paragraph"><strong>WorkingDirectory</strong>  opzionale, serve per specificare il runtime environment, eseguendo lo script in una cartella specifica. E&#8217; utile se lo script deve leggere un file, perché la posizione sarà relativa proprio a questa impostazione, piuttosto che dover indicare un percorso assoluto.</p>



<p class="wp-block-paragraph"><strong>Restart=on-failure</strong> ci assicuriamo che lo script venga riavviato in caso di crashes/fails. <a rel="noreferrer noopener" aria-label="Qui (apre in una nuova scheda)" href="https://www.freedesktop.org/software/systemd/man/systemd.service.html#Restart=" target="_blank">Qui</a> una lista dei possibili valori.</p>



<p class="wp-block-paragraph"><strong>[Install]</strong> la sezione che indica quando il servizio va eseguito.</p>



<p class="wp-block-paragraph"><strong>WantedBy=multi-user.target</strong> è una riga ridondante che specifica di installare il servizio nel multi-user.target boot level.</p>



<p class="wp-block-paragraph">Facciamo rileggere gli unit service:</p>



<pre class="wp-block-preformatted">systemctl daemon-reload</pre>



<p class="wp-block-paragraph">attiviamo il servizio con:</p>



<pre class="wp-block-preformatted">systemctl enable prova.service</pre>



<p class="wp-block-paragraph">infine attiviamo il servizio con:</p>



<pre class="wp-block-preformatted">systemctl start prova.service</pre>



<p class="wp-block-paragraph">Per vedere lo stato del servizio:</p>



<pre class="wp-block-preformatted">systemctl status prova.service</pre>



<p class="wp-block-paragraph">enjoy!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.smsoft.it/2019/12/17/systemd-creare-un-nuovo-servizio/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
