# Comments can only go at the beginning of the line!
[Unit]
Description=Start the NoIP IP update daemon. This runs every 30 minutes and reports our current IP to NoIP.com to update Love2d.ddns.net.
Documentation=https://no-ip.com/
Documentation=file:///nobak/Installers/NoIP/noip-2.1.9-1/README.FIRST
[Service]
# 'forking' because process returns after starting daemon (traditional unix daemon).
Type=forking
# This program runs and returns, leaving the running daemon
ExecStart=/usr/local/bin/noip2
# Be in no hurry to start this. Max nice is +19.
Nice=15
# If it dies for any reason, then restart it
Restart=always
[Install]
# Installs a hook to use this unit file when the system boots or shuts down
WantedBy=multi-user.target
在 Debian 上,服务和应用程序启动和关闭脚本应该放在
/etc/init.d/
.Debian 提供了一个示例脚本
/etc/init.d/skeleton
,您可以根据您的特定应用程序的喜好对其进行修改。一旦到位,请致电:
要让 Debian
/etc/rc?.d/
为您添加符号链接。如果您更喜欢菜单或图形界面,请查看
sysv-rc-conf
orksysv
包。自 Debian Jessie 以来,旧
init
程序已被systemd
.自己检查一下。运行:
ls -l /sbin/init
看看它指向什么。现在它指向systemd
(/sbin/init -> /lib/systemd/systemd
),一个更新更好的初始化程序。所以这里的选择和其他答案现在已经过时了
*虽然您仍然可以使用 System-V 工具以旧方式安装脚本,但一般来说这不是一个好主意。
man systemd.service
说:*对于较新的 Debian 系统(即 Jessie、Stretch、Buster 等...)
这比你想象的要容易。(-:
这是安装启动或关闭程序的新的首选方法。
与
systemd
你首先要创建一个单元文件。单元文件主要是声明,而不是代码。然后,您将使用该
systemctl
命令启用或启动该单元。systemd
为您完成大部分工作,例如,让关键程序在崩溃或被终止时自动重新启动变得容易。此外,它还会在默认情况下在何时何地关闭您的程序,而无需您做任何额外的工作。从这里开始了解
systemd
:来自Debian和 其他地方等等等等。
手册页开始:
man systemd.unit
-- 关于一般的单元文件man systemd.service
-- 关于服务单元文件,例如守护进程和单次运行程序。man systemctl
-- 命令行用户界面man journalctl
-- 查看 systemd 所做的日志man systemd
-- 关于init程序本身还有多种其他类型的单元文件,例如
man systemd.target
- 用于组和常见的同步目标。一旦你消化了上面的基础知识,然后深入研究
man -k systemd
以找到其他相关的手册页。无论你做什么,在 Debian 上都不要使用这些:
update-rc.d
--安装和删除 System-V 风格的初始化脚本链接sysv-rc-conf
-- SysV 的运行级配置,如初始化脚本链接runlevel
-- 打印以前和当前的 SysV 运行级别BUM
-- Boot U p Manager - 一个图形化的运行级别编辑器systemadm
-- systemd 系统和服务管理器的图形前端(顺便说一句,作者通过电子邮件告诉我它现在太坏了。)
一个例子:
这个单元文件在我启动时启动 NoIP.com 守护程序,并在我关闭时将其关闭。
这个守护进程会不时发送我当前的 IP 地址来更新我的 DDNS(动态DNS (域名服务器))提供商的数据库,从而使我的域名始终指向我的计算机,无论它去往何处。
此单元文件位于我系统上的此设置文件中:
/etc/systemd/system/noip2.service
这是单元文件中的内容:
手动运行一个单元文件,(例如用于测试):
$ sudo systemctl start noip2
。_$ sudo systemctl restart noip2
重新启动。$ sudo systemctl stop noip2
。_配置系统在启动或关闭时自动运行一个单元文件:
$ sudo systemctl enable noip2
。$ sudo systemctl disable noip2
。查看日志
$ sudo journalctl -u noip2
您可以从/etc/rc.local调用您的脚本,在退出 0的行之前
至于关闭您的应用程序,我建议在/etc/rc0.d中放置一个脚本。您需要使用大写的K命名,然后是指定这些脚本运行顺序的 2 位数字,然后是名称。它将使用参数“stop”调用,但对于简单的停止脚本,您可以忽略它。
对于启动看看这个。
对于关闭,创建一个链接/将您的脚本复制到 /etc/rcX.d 文件夹之一,其中 X 是您希望它执行的运行级别。我相信 0 是 Debian 的关闭运行级别。
最简单的是修改现有脚本,在我的系统中工作,用于声音:)
/etc/init.d/rc.local
,在文件末尾添加你的 sh,之前:(它会在登录“屏幕”之前执行它)/etc/init.d/halt
,在文件开头添加您的 sh,就在初始注释之后(它将在实际关闭命令之前执行,即由该脚本文件调用/etc/init.d/reboot