systemd添加自定义系统服务设置自定义开机启动的方法
<p><span><strong>1.服务权限</strong></span></p>
<p>
systemd有系统和用户区分;系统(/user/lib/systemd/system/)、用户(/etc/lib/systemd/user/).一般系统管理员手工创建的单元文件建议存放在/etc/systemd/system/目录下面。</p>
<p>
<span><strong>2.创建服务文件</strong></span></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterxhtml" id="highlighter_970240">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="xhtml plain"></code>
</div>
<div class="line number2 index1 alt1">
<code class="xhtml plain">Description=nginx - high performance web server</code>
</div>
<div class="line number3 index2 alt2">
<code class="xhtml plain">Documentation=http://nginx.org/en/docs/</code>
</div>
<div class="line number4 index3 alt1">
<code class="xhtml plain">After=network.target remote-fs.target nss-lookup.target</code>
</div>
<div class="line number5 index4 alt2">
<code class="xhtml spaces"> </code>
</div>
<div class="line number6 index5 alt1">
<code class="xhtml plain"></code>
</div>
<div class="line number7 index6 alt2">
<code class="xhtml plain">Type=forking</code>
</div>
<div class="line number8 index7 alt1">
<code class="xhtml plain">PIDFile=/run/nginx.pid</code>
</div>
<div class="line number9 index8 alt2">
<code class="xhtml plain">ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf</code>
</div>
<div class="line number10 index9 alt1">
<code class="xhtml plain">ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf</code>
</div>
<div class="line number11 index10 alt2">
<code class="xhtml plain">ExecReload=/bin/kill -s HUP $MAINPID</code>
</div>
<div class="line number12 index11 alt1">
<code class="xhtml plain">ExecStop=/bin/kill -s QUIT $MAINPID</code>
</div>
<div class="line number13 index12 alt2">
<code class="xhtml plain">PrivateTmp=true</code>
</div>
<div class="line number14 index13 alt1">
<code class="xhtml spaces"> </code>
</div>
<div class="line number15 index14 alt2">
<code class="xhtml plain"></code>
</div>
<div class="line number16 index15 alt1">
<code class="xhtml plain">WantedBy=multi-user.target</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<span><strong></strong></span></p>
<p>
Description : 服务的简单描述</p>
<p>
Documentation : 服务文档</p>
<p>
Before、After:定义启动顺序。Before=xxx.service,代表本服务在xxx.service启动之前启动。After=xxx.service,代表本服务在xxx.service之后启动。</p>
<p>
Requires:这个单元启动了,它需要的单元也会被启动;它需要的单元被停止了,这个单元也停止了。</p>
<p>
Wants:推荐使用。这个单元启动了,它需要的单元也会被启动;它需要的单元被停止了,对本单元没有影响。</p>
<p>
<span><strong></strong></span></p>
<p>
Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。</p>
<p>
Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。</p>
<p>
Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。</p>
<p>
Type=notify:与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。</p>
<p>
Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。</p>
<p>
Type=idle: systemd会等待所有任务(Jobs)处理完成后,才开始执行idle类型的单元。除此之外,其他行为和Type=simple 类似。</p>
<p>
PIDFile:pid文件路径</p>
<p>
ExecStart:指定启动单元的命令或者脚本,ExecStartPre和ExecStartPost节指定在ExecStart之前或者之后用户自定义执行的脚本。Type=oneshot允许指定多个希望顺序执行的用户自定义命令。</p>
<p>
ExecReload:指定单元停止时执行的命令或者脚本。</p>
<p>
ExecStop:指定单元停止时执行的命令或者脚本。</p>
<p>
PrivateTmp:True表示给服务分配独立的临时空间</p>
<p>
Restart:这个选项如果被允许,服务重启的时候进程会退出,会通过systemctl命令执行清除并重启的操作。</p>
<p>
RemainAfterExit:如果设置这个选择为真,服务会被认为是在激活状态,即使所以的进程已经退出,默认的值为假,这个选项只有在Type=oneshot时需要被配置。</p>
<p>
<span><strong></strong></span></p>
<p>
Alias:为单元提供一个空间分离的附加名字。</p>
<p>
RequiredBy:单元被允许运行需要的一系列依赖单元,RequiredBy列表从Require获得依赖信息。</p>
<p>
WantBy:单元被允许运行需要的弱依赖性单元,Wantby从Want列表获得依赖信息。</p>
<p>
Also:指出和单元一起安装或者被协助的单元。</p>
<p>
DefaultInstance:实例单元的限制,这个选项指定如果单元被允许运行默认的实例。</p>
<p>
<span><strong>3.重载服务</strong></span></p>
<p>
systemctl enable nginx.service</p>
<p>
就会在/etc/systemd/system/multi-user.target.wants/目录下新建一个/usr/lib/systemd/system/nginx.service 文件的链接。</p>
<p>
<span><strong>4.操作服务</strong></span></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterxhtml" id="highlighter_433519">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
<div class="line number18 index17 alt1">
18</div>
<div class="line number19 index18 alt2">
19</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="xhtml plain">#启动服务</code>
</div>
<div class="line number2 index1 alt1">
<code class="xhtml plain">$ sudo systemctl start nginx.service</code>
</div>
<div class="line number3 index2 alt2">
<code class="xhtml spaces"> </code>
</div>
<div class="line number4 index3 alt1">
<code class="xhtml plain">#查看日志</code>
</div>
<div class="line number5 index4 alt2">
<code class="xhtml plain">$ sudo journalctl -f -u nginx.service</code>
</div>
<div class="line number6 index5 alt1">
<code class="xhtml plain">— Logs begin at 四 2015-06-25 17:32:20 CST. —</code>
</div>
<div class="line number7 index6 alt2">
<code class="xhtml plain">6月 25 10:28:24 Leco.lan systemd: Starting nginx – high performance web server…</code>
</div>
<div class="line number8 index7 alt1">
<code class="xhtml plain">6月 25 10:28:24 Leco.lan nginx: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok</code>
</div>
<div class="line number9 index8 alt2">
<code class="xhtml plain">6月 25 10:28:24 Leco.lan nginx: nginx: configuration file /etc/nginx/nginx.conf test is successful</code>
</div>
<div class="line number10 index9 alt1">
<code class="xhtml plain">6月 25 10:28:24 Leco.lan systemd: Started nginx – high performance web server.</code>
</div>
<div class="line number11 index10 alt2">
<code class="xhtml spaces"> </code>
</div>
<div class="line number12 index11 alt1">
<code class="xhtml plain">#重启</code>
</div>
<div class="line number13 index12 alt2">
<code class="xhtml plain">$ sudo systemctl restart nginx.service</code>
</div>
<div class="line number14 index13 alt1">
<code class="xhtml spaces"> </code>
</div>
<div class="line number15 index14 alt2">
<code class="xhtml plain">#重载</code>
</div>
<div class="line number16 index15 alt1">
<code class="xhtml plain">$ sudo systemctl reload nginx.service</code>
</div>
<div class="line number17 index16 alt2">
<code class="xhtml spaces"> </code>
</div>
<div class="line number18 index17 alt1">
<code class="xhtml plain">#停止</code>
</div>
<div class="line number19 index18 alt2">
<code class="xhtml plain">$ sudo systemctl stop nginx.service</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
以上就是小编为大家带来的systemd添加自定义系统服务设置自定义开机启动的方法全部内容了,希望大家多多支持~</p>
頁:
[1]