当前位置: 首页 > news >正文

Linux--start-stop-daemon

参考:start-stop-daemon(8) - Linux manual page

1、名称

start-stop-daemon:启动和停止系统守护程序。

2、简介

start-stop-daemon [option...] command

3、描述

start-stop-daemon用于控制系统级进程的创建和终止。使用其中一个匹配选项,可以配置start-stop-deamon寻找一个正在运行进程的已有实例。

注意:除非指定--pid或--pidfile,start-stop-daemon行为类似killall。start-stop-daemon将扫进程表查找任何匹配这个进程名,(如果指定了)父进行pid,uid和/或gid的进程。任何匹配的进行将阻止--start启动这个守护进程。如果指定了--stop(或者通过--signal或--retry指定了一个),将发送TERM信号给所有匹配的进程。对于有存活过一个--stop的长生存期子进程的守护进程,你必须指定一个pidfile。

4、命令

1)-S --start [--] arguments

检查一个指定的进程的存在性。如果这样一个进程存在,start-stop-daemon什么也不做,并且用错误状态1退出(如果指定--oknodo,0)。如果这样一个进程不存在,它启动一个实例,使用通过--exec指定可执行文件,或者通过--startas指定。在命令行上--后传递的任何参数被不修改地传递给要被启动的程序。

2) -K, --stop

检查一个指定进程的存在性。如果这样一个进程存在,start-stop-daemon向他发送由--signal指定的信号,并且以错误状态0退出。如果这样一个进程不存在,start-stop-daemon以错误状态1退出(如果指定了--oknodo则0)。如果指定了--retry,则start-stop-daemon将检查这些进程已经终止了。

3)-T, --status

检查指定进程的存在性,并且根据LSB Init脚本操作,返回一个退出状态码。

4)-H,--help

显示用法信息并且退出。

5)-V, --version

显示程序版本并且退出。

5、选项

进行匹配的选项

1)--pid pid

用指定的pid检查一个进程。这个pid必须是一个大于0的数值。

2)--ppid ppid

用父进程pid ppid检查一个进程。这个ppid必须是一个大于0的数值。

3)-p, --pidfile pidfile

检查一个进程是否已经创建文件pidfile。

注意:如果旧进程终止了,而没有能够删除这个pidfile,单独使用这个进行匹配的选项,可能引起操作非预期的进程。

警告:对全局可写的pidfile使用这个匹配选项,或者对以非特权用户(非root)写这个pidfile的守护进程单独使用他,将用一个错误拒绝,由于这是一个安全风险,因为任何用户能够写入他,或者如果守护进程受到损坏,pidfile的内容不能被信任,并且接着一个特权运行程序(诸如一个以root被执行的init脚本)会结束操作任何系统进程。使用/dev/null时免除这些检查。

4)-x, --exec executable

检查进程是这个executable的实例。executable参数应该是一个绝对路径。

注意:这可能没有按被解析脚本预计地运行,由于可执行文件将指向这个解析器。考虑从一个chroot内运行的进程也将被匹配,因此可能也需要其它匹配限制。

5)-n, --name process-name

用名称process-name检查进程。process-name通常是进程文件名,但它可能已经被这个进程自身更改。

注意:在大多数系统上,这些信息取自源自内核的进程comm名,它倾向于有相当短的长度限制(认为多于15个字符是不可移植的)。

6)-u, --user username|uid

检查由username或uid指定用户拥有的进程。

注意:单独使用这个匹配选项将使得匹配这个用户的所有进程被操作。

通用选项

1)-g, --group group|gid

当启动这个进程时,切换到group或gid。

2)-s, --signal signal

带上--stop,指定信号发送给被终止的进程(默认:TERM)。

3) -R, --retry timeout|schedule

使用--stop,指定start-stop-daemon检查这些进程是否结束了。它将重复检查任何匹配的进行是否正在运行,直到没有匹配的进程运行。如果这些进程不存在,它将采取由调度表决定的进一步操作。

如果指定了timeout替代schedule,则调度表signal/timeout/KILL/timeout被使用,此处signal是由--signal指定的信号。

schedule是一个列表,其至少有由斜杆(/)分隔的两项;每项可能是-signal-number或[-]signal-name,它表示发送那个信号,或timeout,它表示为进程退出等待那些秒数,或者forever,它表示如果需要一直重复调度表余下的。

如果到达了调度表末尾并且没有指定forever,则start-stop-daemon以错误状态2退出。如果指定了一个调度表,则忽略用--signal指定的任何信号。

4)-a, --startas pathname

和--start一起,启动通过pathname指定的进程。如果没有指定,默认为传递给-exec的参数。

5)-t, --test

打印将采取的操作以及设置合适的返回值,但不采取行动。

6)-o, --oknodo

如果没有操作被采取,返回退出状态0替代1。

7)-q, --quiet

不打印信息消息;仅显示错误消息。

8)-c, --chuid username|uid[:group|gid]

在启动进程前,切换到这个用户名/uid。你也可以通过用你对chown命令(user:group)相同的方式追加一个:接着组或者gid,指定一个组。如果不带组指定一个用户,使用那个用户的主GID。当你使用这个选项时,即使没有指定--group选项,你必须知道主组和补充组也被设置了。--group选项仅用于用户通常不是其组员的组(如为一般用户添加每个组成员资格像nobody)。

9) -r, --chroot root

在启动这个进程前,更改目录并且根目录切换到root。请注意pidfile也被写在这个chroot之后。

10)-d, --chdir path

在启动这个进程前,切换目录到path。如果设置了-r |--chroot选项,在chroot后做这件事。当未被指定,在启动这个进程前,start-stop-daemon将切换目录到root目录。

11)-b, --background

一般跟不靠它们自己分离的程序一起使用。这个选项将强制start-stop-daemon在启动进程前fork,并且强制它进入后台。

警告:如果进程由于任何原因执行出错,start-stop-daemon不能检查退出状态。这是最后的方法,并且仅只适用于这样的程序,靠其自己forking没有意义或者为它们添加它们自己做这件事的代码是不合理的。

12) --notify-await

在认为服务器被启动前,等待后台进程发送一个准备好的通知。这实现了部分的systemd准备好协议,如在sd_notify(3)手册页中指定。支持一下变量:

READY=1:程序准备好提供服务,因此我们可以安全地退出。

EXTEND_TIMEOUT_USEC=number:程序请求增加超时时间number微妙。这将重置当前超时时间为指定的值。

ERRNO=number:程序以一个错误退出。做相同事情并且为errno值打印用户友好字符串。

13)--notify-timeout timeout

为-notify-await选项设定超时时间。当超时时间到了,start-stop-daemon将以一个错误代码退出,并且将不等待准备好通知。默认值是60秒。

14)-C, --no-close

当强制守护进程进入后台时,不关闭任何文件描述符。用于调试目的来查看进程输出,或者重定向文件描述符来记录进程输出。仅在使用--background时,才有用。

15)-O, --output pathname

当强制守护进程进入后台时,重定向stdout和stderr到pathname。仅在使用--background时,才有用。

16)-N, --nicelevel int

这在启动进程前更改了它的优先级。

17)-P, --procsched policy:prority

在启动进程前,这更改了它调度测量和进程优先级。通过在末尾添加一个:后跟值,可选地指定优先级。当前支持的测量是other, fifo和rr。

这个选项在某些不支持POSIX进程调度的系统上什么也不做。

18)-I, --iosched class:priority

在启动进程前,这更改了它的IO调度器类和优先级。通过在末尾添加一个:后跟值可选地指定优先级。默认优先级是4,除非类是idle,则优先级总是7。对于类,当前支持地值是idle,best-effort和real-time。

这个选项在不支持Linux IO调度地某些系统上什么也不做。

19) -k, --umask mask

这在启动进程前设置它地umask。

20)-m, --make-pidfile

当前启动一个不创建其自己pid文件地程序时,使用。这个选项将使得start-stop-daemon创建由--pidfile引用的文件,并且在执行这个进程前向其放置这个pid。注意,当使用了--remove-pidfile,在停止程序时,这个文件才被删除。

注意:这个特性不是在所有情况下有作用。当被执行的程序从其主进程forks时,最明显。由于此,仅在结合--background选项一起使用时,它通常才有作用。

21)--remove-pidfile

当终止一个不删除它自己pid文件的程序时,被使用。这个选项将使得start-stop-daemon在终止这个进程后删除由--pidfile引用的文件。

22) -v, --vervose

打印详细的信息消息。

退出状态

1)0:请求的操作被执行。如果指定了--oknodo,什么也没做也是可能的。当指定了--start,并且一个匹配的进程已经在运行了,或者在指定--stop并且没有匹配的进程时,这会发生。

2)1:如果没有指定--oknodo,并且什么也没有做。

3)2:如果指定了--stop和--retry,但到达了调度表末尾并且进程仍在运行。

4)3:任何其它错误。

当使用--status命令时,返回以下状态代码:

1)0:程序正在运行。

2)1:程序没有在运行并且pid文件存在。

3)3:程序没有在运行。

4)4:不能确定程序状态。

示例

1)启动food守护进程,除非一个已经在运行了(一个名为food的进程,以用户food运行,用pid在food.pid中)

start-stop-daemon --start --oknodo --user food --name food \--pidfile /usr/local/var/run/food.pid --startas /usr/sbin/food \--chuid food -- --daemon

2) 发送SIGTERM给food并且最多等待5秒等待其停止:

  start-stop-daemon --stop --oknodo --user food --name food \--pidfile /usr/local/var/run/food.pid --retry 5

3) 一个停止food的自定义调度表的演示:

 start-stop-daemon --stop --oknodo --user food --name food \--pidfile /usr/local/var/run/food.pid --retry=TERM/30/KILL/5

相关文章:

Linux--start-stop-daemon

参考:start-stop-daemon(8) - Linux manual page 1、名称 start-stop-daemon:启动和停止系统守护程序。 2、简介 start-stop-daemon [option...] command 3、描述 start-stop-daemon用于控制系统级进程的创建和终止。使用其中一个匹配选项&#xff0…...

优化Java中XML和JSON序列化

优化Java中XML和JSON序列化 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在Java应用程序中,对于XML和JSON的序列化操作是非常常见的需求。本文将…...

像学Excel 一样学 Pandas系列-创建数据分析维度

嗨,小伙伴们。又到喜闻乐见的Python 数据分析王牌库 Pandas 的学习时间。按照数据分析处理过程,这次轮到了新增维度的部分了。 老样子,我们先来回忆一下,一个完整数据分析的过程,包含哪些部分内容。 其中&#xff0c…...

Rust 基础教程

Rust 编程语言教程 Rust是一门注重安全、并发和性能的系统编程语言。本文将从Rust的基本语法、常用功能到高级特性,详细介绍Rust的使用方法。 目录 简介环境配置基础语法 变量和常量数据类型函数控制流 所有权和借用 所有权借用 结构体和枚举 结构体枚举 模块和包…...

Study--Oracle-06-Oracler网络管理

一、ORACLE的监听管理 1、ORACLE网络监听配置文件 cd /u01/app/oracle/product/12.2.0/db_1/network/admin 2、在Oracle数据库中,监听器(Listener)是一个独立的进程,它监听数据库服务器上的特定端口上的网络连接请求&#xff0c…...

uniapp零基础入门Vue3组合式API语法版本开发咸虾米壁纸项目实战

嗨,大家好,我是爱搞知识的咸虾米。 今天给大家带来的是零基础入门uniapp,课程采用的是最新的Vue3组合式API版本,22年发布的uniappVue2版本获得了官方推荐,有很多同学等着我这个vue3版本的那,如果没有学过vu…...

数字信号处理教程(2)——时域离散信号与时域离散系统

上回书说到数字信号处理中基本的一个通用模型框架图。今天咱们继续,可以说今天要讲的东西必须是学习数字信号处理必备的观念——模拟与数字,连续和离散。 时域离散序列 由于数字信号基本都来自模拟信号,所以先来谈谈模拟信号。模拟信号就是…...

imx6ull/linux应用编程学习(8)PWM应用编程(基于正点)

1.应用层如何操控PWM: 与 LED 设备一样, PWM 同样也是通过 sysfs 方式进行操控,进入到/sys/class/pwm 目录下 这里列举出了 8 个以 pwmchipX(X 表示数字 0~7)命名的文件夹,这八个文件夹其实就对应了…...

等保2.0 实施方案

一、引言 随着信息技术的广泛应用,网络安全问题日益突出,为确保信息系统安全、稳定、可靠运行,保障国家安全、公共利益和个人信息安全,根据《网络安全法》及《信息安全技术 网络安全等级保护基本要求》(等保2.0&#x…...

7/3 第六周 数据库的高级查询

...

ubuntu20.04安装kazam桌面屏幕录制工具

在Ubuntu 20.04上安装Kazam可以通过以下步骤进行: 1.打开终端:可以通过按下Ctrl Alt T组合键来打开终端。 2.添加PPA源:Kazam不再在官方Ubuntu仓库中,但可以通过PPA源进行安装。在终端中输入以下命令来添加PPA: su…...

Python应对反爬虫的策略

Python应对反爬虫的策略 概述User-Agent 伪造应对302重定向IP限制与代理使用Cookies和Session管理动态内容加载数据加密与混淆请求频率限制爬虫检测算法法律与道德考量结语 概述 在数字化时代,网络数据采集已成为获取信息的重要手段之一。然而,随着技术…...

240703_昇思学习打卡-Day15-K近邻算法实现红酒聚类

KNN(K近邻)算法实现红酒聚类 K近邻算法,是有监督学习中的分类算法,可以用于分类和回归,本篇主要讲解其在分类上的用途。 文章目录 KNN(K近邻)算法实现红酒聚类算法原理数据下载数据读取与处理模型构建--计算距离模型预测 算法原理 KNN算法虽…...

keil5模拟 仿真 报错没有读写权限

debug*** error 65: access violation at 0x4002100C : no write permission 修改为: Dialog DLL默认是DCM3.DLL Parameter默认是-pCM3 应改为 Dialog DLL默认是DARMSTM.DLL Parameter默认是-pSTM32F103VE...

力扣爆刷第158天之TOP100五连刷56-60(子集、最小栈、最长有效括号)

力扣爆刷第158天之TOP100五连刷56-60(子集、最小栈、最长有效括号) 文章目录 力扣爆刷第158天之TOP100五连刷56-60(子集、最小栈、最长有效括号)一、78. 子集二、105. 从前序与中序遍历序列构造二叉树三、43. 字符串相乘四、155. …...

高薪程序员必修课-Java中 Synchronized锁的升级过程

目录 前言 锁的升级过程 1. 偏向锁(Biased Locking) 原理: 示例: 2. 轻量级锁(Lightweight Locking) 原理: 示例: 3. 重量级锁(Heavyweight Locking)…...

Vue项目打包上线

Nginx 是一个高性能的开源HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。它在设计上旨在处理高并发的请求,是一个轻量级、高效能的Web服务器和反向代理服务器,广泛用于提供静态资源、负载均衡、反向代理等功能。 1、下载nginx 2、…...

算法题中常用的C++功能

文章目录 集合优先队列双端队列排序时自定义比较函数最大数值字符串追加:删除:子串: 元组vector查找创建和初始化赋值: 字典map引入头文件定义和初始化插入元素访问元素更新元素删除元素检查元素存在遍历元素int和string转换 集合…...

左扰动和右扰动

在SLAM(Simultaneous Localization and Mapping)中,使用左扰动还是右扰动主要取决于你如何定义坐标系和你希望扰动影响的姿态表示。这通常与你的坐标系选择和你正在解决的具体问题有关。 左扰动通常用于以下情况: 当你使用局部坐…...

【计算机网络】期末复习(2)

目录 第一章:概述 第二章:物理层 第三章:数据链路层 第四章:网络层 第五章:传输层 第一章:概述 三大类网络 (1)电信网络 (2)有线电视网络 &#xff0…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层&#xf…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

docker 部署发现spring.profiles.active 问题

报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

Easy Excel

Easy Excel 一、依赖引入二、基本使用1. 定义实体类(导入/导出共用)2. 写 Excel3. 读 Excel 三、常用注解说明(完整列表)四、进阶:自定义转换器(Converter) 其它自定义转换器没生效 Easy Excel在…...

华为云Flexus+DeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手

华为云FlexusDeepSeek征文 | 基于Dify构建具备联网搜索能力的知识库问答助手 一、构建知识库问答助手引言二、构建知识库问答助手环境2.1 基于FlexusX实例的Dify平台2.2 基于MaaS的模型API商用服务 三、构建知识库问答助手实战3.1 配置Dify环境3.2 创建知识库问答助手3.3 使用知…...

联邦学习带宽资源分配

带宽资源分配是指在网络中如何合理分配有限的带宽资源,以满足各个通信任务和用户的需求,尤其是在多用户共享带宽的情况下,如何确保各个设备或用户的通信需求得到高效且公平的满足。带宽是网络中的一个重要资源,通常指的是单位时间…...