首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何实现Linux服务Crash后自动重启?

Systemd Systemd Restart Systemd 允许你对服务进行配置,以便在服务崩溃自动重启。...不过,你可以让 systemd 自动重启守护进程,以防它崩溃意外被杀掉。为此,你可以在 [Service] 中添加 Restart 选项。...Systemd OnFailure 重启一项服务固然很好,但在某个单元出现故障采取特定行动就更好了。...也许你使用的软件有一个已知的错误,要求在崩溃删除缓存文件,也许你想启动一个脚本来收集日志和系统信息,以便诊断问题。Systemd 允许你指定在服务失败时运行的单元。...在本例中,单元发生故障,系统将优雅地重新启动: [Unit] Description=Lightweight Kubernetes Documentation=https://k3s.io Wants

61340

第十六章.Linux系统管理-开机启动流程

这样做是为了保证是init改变运行级别,所有相关的守护进程都将重启。...至于在每个运行级中将运行哪些守护进程,用户可以通过chkconfigsetup中的"System Services"来自行设定。  4.建立终端 rc执行完毕后,返回init。...系统启动,内核从initrd.img加载所有必要的内核模块和驱动器,以加载Linux7中的系统第一个进程systemd,在6里面,init是爸爸,在7里面换了个爸爸,那就是systemd 下面的命令将帮助您找到...  ---- CentOS7通过光盘进入救援模式 1.挂载光盘镜像  2.从BIOS启动  3.进入BIOS设置从光盘启动  4.按F10保存退出  5.进入救援模式 ...active(exited) 一次性运行的服务成功被执行退出(服务运行后完成任务,相关进程会自动退出) active(waiting) 服务已经运行但在等待某个事件 inactive 服务没有在运行

2.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

如何编写bash脚本以便在进程死机时重新启动进程

bash脚本来检查它是否正在运行,如果没有,则启动它。...." >&2 sleep 1 done 上面的bash代码在一个until循环中运行procA。第一行启动procA等待它结束。它结束,until检查其退出状态。...如果退出状态为0,则表示它正常结束(这意味着你要求它以某种方式关闭,并且它成功关闭了)。在这种情况下,我们不想重新启动它(我们只是要求它关闭!...如果退出状态不是0,until将运行循环体,该循环体在STDERR上发出错误消息,并在 1 秒后重新启动循环(返回第 1 行)。 我们为什么要等一会儿?...然后需要做的就是启动这个bash脚本,它将监控procA并在必要重新启动它。如果你想在(操作系统)启动启动监控脚本,你可以用@reboot规则在用户的 cron(1) 中调度它。

16320

systemctl命令

.]: 重置指定单元的fail状态,或者如果没有传递单元名称,则重置所有单元的状态,一个单元以某种方式发生故障(即进程带非零错误代码退出、异常终止超时),它将自动进入fail状态,记录其退出代码和状态供管理员自查...启动单元不应与启动(激活)单元混淆,就像启动命令所做的那样,启用和启动装置是正交的,装置可以启动就启用,也可以启动启动,启用只需将单元挂接到各种建议的位置,例如,这样在引导时或插入特定类型的硬件...System Commands is-system-running: 检查系统是否正在运行,系统完全启动运行时,返回success,这意味着处于启动、关闭维护模式,否则返回失败,此外,当前状态以短字符串形式打印到标准输出...OnFailure: 这个模块启动失败,就自动启动列出的每个模块。 Conflicts: 与这个模块有冲突的模块,如果列出模块中有已经在运行的,这个服务就不能启动,反之亦然。...RemainAfterExit: 值为truefalse,也可以写yesno,默认为false,配置值为truesystemd只会负责启动服务进程,之后即便服务进程退出了,systemd仍然会认为这个服务是在运行中的

1.6K20

如何在Bash中等待多个子进程完成,并且其中任何一个子进程以非零退出状态结束,使主进程也返回一个非零的退出码?

问题 如何在 Bash 脚本中等待该脚本启动的多个子进程完成,并且这其中任意一个子进程以非零退出码结束,让该脚本也返回一个非零的退出码? 简单的脚本: #!.../bin/bash for i in `seq 0 9`; do calculations $i & done wait 上述脚本将会等待所有 10 个被创建的子进程结束,但它总会给出退出状态 0...我应该如何修改这个脚本,使其能检测到被创建子进程的退出状态,并且任何子进程以非零代码结束,让脚本返回退出码 1?.../usr/bin/env bash # 这是一个特殊的 sleep 函数,它将睡眠的秒数作为"错误代码" # "返回代码"返回,以便我们可以清楚地看到,实际上 # 我们在每个进程完成确实获取了它的返回代码...# 存储上一个子进程启动的 pid echo " pid = ${pids[$i]}" done for pid in $pids; do wait $pid rc=$?

5300

这样用 systemd 可能会有风险

宿主服务注册为系统服务并且随系统开机自启动。宿主服务支持接收服务端指令拉起一些常驻进程,拉起的进程我们简称为子进程。宿主服务被 kill 意外终止,会引起子进程一起被 kill。...因为 simple 类型不存在主进程退出的情况也就不存在有返回状态的情况,所以它一旦启动就认为是成功的,除非没起来。 forking:标准 Unix Daemon 使用的启动方式。...其他类型千万不要去设置RemainAfterExit=yes,否则systemd会认为服务启动成功了,重启再去启动都会失败。...dbus:这个程序启动需要获取一块 DBus 空间,所以需要和 BusName= 一起用。只有它成功获得了 DBus 空间,依赖它的程序才会被启动。...比如你 ExecStart 的是个 shell 脚本,里面可能跑了一些别的东西,如果这样的话,那很可能别的东西的控制台输出里会多一个“启动成功”这样的 Systemd 消息。

71210

linux: Shell脚本设计函数的成功和异常返回

在编写复杂的 Shell 脚本,使用函数是一种常见的做法,它有助于提高代码的可读性和可维护性。...函数可以接受参数,并且可以返回一个值,通常是一个退出状态码,用于指示函数的执行结果。...函数执行成功且没有错误时,应返回 0。这遵循了 UNIX 和 Linux 中的常规惯例,即“无消息即好消息”。...通常,1 用作通用错误代码,但您可以根据需要使用不同的值来表示特定类型的错误。 示例:异常返回 bash download_file() { wget "$1" if [ $?...使用描述性错误代码:使用不同的非零值来区分不同类型的错误。 在文档中记录返回代码:在脚本函数的文档中说明每个返回代码的含义。 一致性:在整个脚本中保持返回值的一致性。

20910

100个Linux命令(7)-进程管理

随着时间的流逝,分配给进程的时间也会被逐渐消耗,分配时间消耗完毕,内核收回此进程的控制权,让下一个进程运行。...后台进程 若在执行命令,在命令的结尾加上符号"&",它会进入后台。将命令放入后台,会立即返回父进程,返回该后台进程的的jobid和pid,所以后台进程的父进程不会进入睡眠。...一般的方法也是最简单的方法是使用nohup命令带上要执行的命令脚本放入后台,这样任务就脱离了终端的关联。终端退出,该任务将自动挂到init(systemd)进程下执行。...此信号为EXIT信号,表示直接退出。如果kill发送的信号是0(即kill -0)则表示不做任何处理直接退出,但执行错误检查:检查发现给定的pid进程存在,则返回0,否则返回1。...三种方式可以改变因终端中断发送sighup而导致子进程也被结束的行为:一是使用nohup命令启动进程,它会忽略所有的sighup信号,使得该进程不会随着终端退出而结束;二是将待执行命令放入子shell中放入后台运行

1.7K20

Docker之容器操作

新建井启动容器 除了创建容器后通过 start 命令来启动 也可以直接新建启动容器。...利用 docker [container] run 来创建启动容器, Docker 在后台运行的标准操作包括: 检查本地是否存在指定的镜像,不存在就从公有仓库下载; 利用镜像创建一个容器,启动该容器...某些时候,执行 docker [container] run时候因为命令无法正常执行容器会出错直接退出, 此时可以查看退出错误代码 。...例如,下面的命令会在后台运行容器 : 容器启动后会返回一个唯一的 id ,也可以通过 docker ps docker container ls命令来查看容器信息: 5....多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示;某个窗口因命令阻塞,其他窗口也无法执行操作了 。

49010

Linux系统管理-crond、chkconfig、systemd、unit、target

10.23 linux任务计划cron crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond...添加/删除服务 首先,在添加服务之前必须把该服务的脚本放到“/etc/init.d/”目录下添加执行权限。...如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。 Type=forking:systemd认为该服务进程fork,且父进程退出后服务启动成功。...Type=dbus:若以此方式启动指定的 BusName 出现在DBus系统总线上systemd认为服务就绪。...RemainAfterExit:如果设置这个选择为真,服务会被认为是在激活状态,即使所以的进程已经退出,默认的值为假,这个选项只有在Type=oneshot需要被配置。

1K20

Systemd管理服务

Systemd 服务管理 简介 Systemd 是一系列工具的集合,其作用也远远不仅是启动操作系统,它还接管了后台服务、结束、状态查询,以及日志归档、设备管理、电源管理、定时任务等许多职责,支持通过特定事件...To:与 Requires 相似,失败失败,成功成功,但是在这些模板中有任意一个出现意外结束重启,这个服务也会跟着终止重启 Part Of:一个 Bind To 作用的子集,仅在列出的任务模块失败重启...,终止重启当前服务,而不会随列出模板的启动启动 OnFailure这个模板启动失败,就会自动启动列出的每个模块 Conflicts:与这个模块有冲突的模块,如果列出的模块中有已经在运行的,这个服务就不能启动...配置为 true Systemd 只会负责启动服务进程,之后即便服务进程退出了,Systemd 也仍然会认为这个服务还在运行中。...systemd-analyze 显示此次系统启动时运行每个服务所消耗的时间,可以用于分析系统启动过程中的性能瓶颈 systemd-ask-password:辅助性工具,用星号屏蔽用户的任意输入,然后返回实际输入的内容

59530

Linux 命令(107)—— systemctl 命令

默认为 replace,除非使用了表示隔离作业模式的 isolate 命令 -i, --ignore-inhibitors 系统关闭睡眠请求,忽略约束锁,否则系统关闭睡眠请求会失败。...与 disable mask 一起使用时,单元也将停止 --root=PATH 与 enable/disable/is-enabled(等相关命令)一起使用时,在查找单元文件使用指定的根路径...如果单元处于运行状态,则不进行重启 isolate NAME 启动命令行中指定的单元及其依赖项,停止所有其他的单元 kill PATTERN... 向单元的一个多个进程发送信号。...如果至少一个是活动的,则返回退出代码 0,否则为非零 is-failed PATTERN... 检查指定单元是否处于 failed 状态。...如果至少一个是失败的,则返回退出代码 0,否则为非零 status [PATTERN...|PID...] 显示一个多个单元的简要运行时状态信息,然后是日志中的最新日志数据。

2.1K20

systemctl(1) command

默认为 replace,除非使用了表示隔离作业模式的 isolate 命令 -i, --ignore-inhibitors 系统关闭睡眠请求,忽略约束锁,否则系统关闭睡眠请求会失败。...与 disable mask 一起使用时,单元也将停止 --root=PATH 与 enable/disable/is-enabled(等相关命令)一起使用时,在查找单元文件使用指定的根路径...如果单元处于运行状态,则不进行重启 isolate NAME 启动命令行中指定的单元及其依赖项,停止所有其他的单元 kill PATTERN... 向单元的一个多个进程发送信号。...如果至少一个是活动的,则返回退出代码 0,否则为非零 is-failed PATTERN... 检查指定单元是否处于 failed 状态。...如果至少一个是失败的,则返回退出代码 0,否则为非零 status [PATTERN...|PID...] 显示一个多个单元的简要运行时状态信息,然后是日志中的最新日志数据。

28820

linux全套教程【黑马】:1

media opt root sbin srv tmp var boot etc init lib64 mnt proc run snap sys usr /bin: binary...经常使用的命令,比如ls cd,详细见下面 /bin$ ls bash ed lsblk open systemd-inhibit...Linux使用的一些核心文件,不要改动 /dev:device 存放设备文件,该目录下存放Linux外部设备,一切皆文件,所有硬件外设抽象成一个文件 /etc 保存操作系统安装软件所需要的配置文件和子目录...4.6 删除文件 rm -i 文件 4.7 复制文件目录 复制文件 cp 文件1 文件2 会把文件1的内容放到文件2 两种情况: 如果文件2没有,则自动创建写入文件1的内容 如果文件2存在,则会用文件...但不能返回,q键ctrl+c退出 4.8.3 less ctrl+p可以往前看一行 ctrl+b往回看一页 ctrl+n可以一行行往前看 ctrl+f往下看一页 4.8.4head默认前10行

2K62

Linux学习笔记之Centos7 自定义systemctl服务脚本

Centos7 开机第一程序从init完全换成了systemd启动方式,而systemd依靠unit的方式来控制开机服务,开机级别等功能。...Before=xxx.service # 表示需要在某些服务启动之前启动,After和Before字段只涉及启动顺序,涉及依赖关系。...on-success: # 只有正常退出退出状态码为0),才会重启 on-failure: # 非正常退出,重启,包括被信号终止和超时等 on-abnormal: #...只有被信号终止超时,才会重启 on-abort: # 只有在收到没有捕捉到的信号终止,才会重启 on-watchdog: # 超时退出,才会重启 always:...如果想支持bash语法,需要设置Tyep=oneshot ExecStart: # 启动服务执行的命令 ExecReload: # 重启服务执行的命令 ExecStop

2.9K30

从 docker 到 runC

docker-containerd 收到 dockerd 启动容器的请求之后,会做一些初始化工作,然后启动 docker-containerd-shim 进程,并将相关配置作为参数传给它。...docker-runc 进程根据配置找到容器的 rootfs 创建子进程 bash 作为容器中的第一个进程。...这一切都完成后 docker-runc 进程退出,然后容器进程 bash 由 docker-runc 的父进程 docker-containerd-shim 接管。...也许大家会问,为什么在容器的启动运行过程中需要一个 docker-containerd-shim 进程呢?把它移除掉整个架构会更简洁也更优美一些!...) 即使在 containerd 和 dockerd 都挂掉的情况下,容器的标准 IO 和其它的文件描述符也都是可用的 向 containerd 报告容器的退出状态 前两点尤其重要,有了它们就可以在不中断容器运行的情况下升级重启

56960

群晖docker使用教程_docker的使用

容器启动参数添加一些限制(如内存,CPU),会有警告不支持,因为内核启动没有这个参数的支持,可以修改grub启动配置文件/etc/default/grub 在GRUB_CMDLINE_LINUX...: docker run image command 新建启动容器 docker start 启动已终止的容器 –name 可以给容器起一个名字 b) 查看容器: docker ps -a 查看所有容器...添加binary到docker image简易方式 将docker image export,解包 利用chroot来切换根文件系统 chroot . sh 将binary 拷贝到其目录就可以执行测试这种执行方式...制作Docker Image细节 如若使用/boot/下的initrd文件系统, 要把里面的initlinuxrc删除,因为init的作用就是挂载真实的根文件系统,寻找执行/sbin/init开启init...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

2.6K10
领券