AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 10811
Accepted
Amir Arad
Amir Arad
Asked: 2009-05-22 07:21:46 +0800 CST2009-05-22 07:21:46 +0800 CST 2009-05-22 07:21:46 +0800 CST

如何在debian中添加脚本来启动和关闭?

  • 772

标题几乎总结了它。

如何将我的服务器应用程序的 startup.sh 和 shutdown.sh 添加到 Debian 操作系统的启动和关闭序列中?

scripting debian
  • 5 5 个回答
  • 45526 Views

5 个回答

  • Voted
  1. Best Answer
    MikeyB
    2009-05-22T07:53:40+08:002009-05-22T07:53:40+08:00

    在 Debian 上,服务和应用程序启动和关闭脚本应该放在/etc/init.d/.

    Debian 提供了一个示例脚本/etc/init.d/skeleton,您可以根据您的特定应用程序的喜好对其进行修改。

    一旦到位,请致电:

    # update-rc.d YOURAPP defaults
    

    要让 Debian/etc/rc?.d/为您添加符号链接。

    如果您更喜欢菜单或图形界面,请查看sysv-rc-conforksysv包。

    • 17
  2. Elliptical view
    2018-12-25T00:07:07+08:002018-12-25T00:07:07+08:00

    自 Debian Jessie 以来,旧init程序已被systemd.

    自己检查一下。运行:ls -l /sbin/init看看它指向什么。现在它指向systemd( /sbin/init -> /lib/systemd/systemd),一个更新更好的初始化程序。


    所以这里的选择和其他答案现在已经过时了


    *虽然您仍然可以使用 System-V 工具以旧方式安装脚本,但一般来说这不是一个好主意。

    man systemd.service说:*

    如果以特定名称请求服务但未找到单元配置文件,systemd 会查找具有相同名称的 SysV 初始化脚本......并从该脚本动态创建服务单元。这对于与 SysV 的兼容性很有用。请注意,这种兼容性非常全面,但不是 100%。


    对于较新的 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

    这是单元文件中的内容:

    #   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
    

    手动运行一个单元文件,(例如用于测试):

    • 开始$ sudo systemctl start noip2。_
    • $ sudo systemctl restart noip2重新启动。
    • 停止$ sudo systemctl stop noip2。_

    配置系统在启动或关闭时自动运行一个单元文件:

    • 开始使用$ sudo systemctl enable noip2。
    • 结束使用with $ sudo systemctl disable noip2。

    查看日志

    • $ sudo journalctl -u noip2
    • 7
  3. Brent
    2009-05-22T07:29:26+08:002009-05-22T07:29:26+08:00

    您可以从/etc/rc.local调用您的脚本,在退出 0的行之前

    至于关闭您的应用程序,我建议在/etc/rc0.d中放置一个脚本。您需要使用大写的K命名,然后是指定这些脚本运行顺序的 2 位数字,然后是名称。它将使用参数“stop”调用,但对于简单的停止脚本,您可以忽略它。

    • 4
  4. squillman
    2009-05-22T07:24:27+08:002009-05-22T07:24:27+08:00

    对于启动看看这个。

    对于关闭,创建一个链接/将您的脚本复制到 /etc/rcX.d 文件夹之一,其中 X 是您希望它执行的运行级别。我相信 0 是 Debian 的关闭运行级别。

    • 3
  5. chickensk
    2013-06-30T18:13:24+08:002013-06-30T18:13:24+08:00

    最简单的是修改现有脚本,在我的系统中工作,用于声音:)

    • 启动,修改/etc/init.d/rc.local,在文件末尾添加你的 sh,之前:(它会在登录“屏幕”之前执行它)
    • 关闭,修改/etc/init.d/halt,在文件开头添加您的 sh,就在初始注释之后(它将在实际关闭命令之前执行,即由该脚本文件调用
    • 重启,与关机相同,但在/etc/init.d/reboot
    • 3

相关问题

  • 严重的写入性能问题

  • 您是否在生产/个人服务器上使用过 Debian 不稳定/测试?

  • 推荐的个人邮件服务器设置 [关闭]

  • 为什么 redhat 在企业界似乎如此受欢迎?[关闭]

  • 我应该如何将 debian/xen 机器从 etch 升级到 lenny

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve