我正在努力确保脚本仍在开发服务器上运行.它整理统计数据,并提供一个web服务,所以它应该持续存在,但每天有几次,它会因为未知的原因而消失.当我们注意到我们只是再次启动它,但这是一种后遗症,一些用户没有权限(或专有技术)启动它.

我的程序员想花几个小时弄清问题的根源,但我的忙碌者认为必须有一种简单的方法来检测应用程序是否没有运行,并再次启动它.

我知道我通过grep编写了could个cron脚本ps:

ps -A | grep appname

但再一次,这是我生命中又一个小时浪费在做一些必须已经存在的事情上...难道没有一个预先制作好的应用程序,我可以传递一个可执行文件(可选带有参数),并让一个进程无限期地运行吗?

如果有什么不同,那就是Ubuntu.

推荐答案

注意:Upstart处于维护模式,由使用systemd的Ubuntu提供.人们应该查看systemd'manual,了解如何编写服务定义的详细信息.

因为你使用的是Ubuntu,你可能会对Upstart感兴趣,它已经取代了传统的sysV init.一个关键特性是,如果服务意外死亡,它可以重新启动服务.Fedora已经转向upstart,Debian正在进行实验,所以它可能值得研究.

不过,在这种情况下,这可能有些过分,因为cron脚本需要2分钟才能实现.

#!/bin/bash
if [[ ! `pidof -s yourapp` ]]; then
    invoke-rc.d yourapp start
fi

Linux相关问答推荐

使用Bash从文件名中删除日期名称

使用 grep 时如何跳过第一行和最后一行?

使用 sed 或 awk 在 linux 中将第一行中的一个单词替换为第二行中的另一个单词

文件未在脚本中使用 cp 命令复制到 Docker 容器中

使用 awk 将索引列添加到 csv

使用 Dockerfile RUN 执行某些操作但忽略错误

Linux time 命令输出中 real、user 和 sys 的含义

判断条件是否为假

用于将文件夹从本地计算机复制到远程服务器的 scp 命令语法

如何更改某些文件模式/扩展名的权限?

将以前忽略的目录添加到 Git 存储库

scp 使用私钥身份验证将目录复制到另一台服务器

如何在没有空格的情况下打印 awk?

CLOCK_MONOTONIC 和 CLOCK_MONOTONIC_RAW 有什么区别?

linux根据文件名模式搜索文件

限制程序在 Linux 中运行的时间

初学者如何在 Linux 中开始使用 Mono?

当父进程被杀死时,使用 fork() 创建的子进程是否会自动被杀死?

如何从 shell 确定当前的 CPU 利用率?

如何制作和应用SVN补丁?