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用于控制系统级进程的创建和终止。使用其中一个匹配选项࿰…...
优化Java中XML和JSON序列化
优化Java中XML和JSON序列化 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在Java应用程序中,对于XML和JSON的序列化操作是非常常见的需求。本文将…...
像学Excel 一样学 Pandas系列-创建数据分析维度
嗨,小伙伴们。又到喜闻乐见的Python 数据分析王牌库 Pandas 的学习时间。按照数据分析处理过程,这次轮到了新增维度的部分了。 老样子,我们先来回忆一下,一个完整数据分析的过程,包含哪些部分内容。 其中,…...
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)是一个独立的进程,它监听数据库服务器上的特定端口上的网络连接请求,…...
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)有线电视网络 ࿰…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...
微服务通信安全:深入解析mTLS的原理与实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言:微服务时代的通信安全挑战 随着云原生和微服务架构的普及,服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...
