精华内容
下载资源
问答
  • 我是想一开机就执行好我编译好的.c文件 但是在/etc/init.d/rc.rocal最后面加入./whole.c后 机器再也起来了 只能重新刷机了 资料全没了 因为pppd call zte-mf210&这个进程还没拨号完毕 我的程序就起来了 所以两个...
  • linux如何让一个程序崩溃后自动重启

    千次阅读 2020-03-19 16:39:17
    编写一个shell脚本,轮询监控应用的进程,如果出现崩溃进程不在的情况下,自动启动应用程序 touch restart.sh(新建一个重启脚本) linux如何让一个程序崩溃后自动重启 chmod 777 restart.sh (赋予权限,默认-rw-rw-r...

    https://jingyan.baidu.com/article/39810a23a124dfb636fda612.html

    编写一个shell脚本,轮询监控应用的进程,如果出现崩溃进程不在的情况下,自动启动应用程序

    touch restart.sh(新建一个重启脚本)

    linux如何让一个程序崩溃后自动重启
    chmod 777 restart.sh (赋予权限,默认-rw-rw-r–没有可执行权限,不赋予权限脚本运行不了)

    执行玩chmod之后,权限已经改变-rwxrwxrwx

    linux如何让一个程序崩溃后自动重启
    vi restart.sh(编辑文件)

    循环每隔10秒查看下应用程序进程是否存在,不存在则启动应用,存在则睡眠10秒继续检测

    #!/bin/sh

    while true

    do

    ps -ef | grep “填入你自己的程序名” | grep -v “grep”

    if [ “$?” -eq 1 ]

    then

    ./run.sh #启动应用,修改成自己的启动应用脚本或命令

    echo “process has been restarted!”

    else

    echo “process already started!”

    fi

    sleep 10

    done

    linux如何让一个程序崩溃后自动重启
    ./restart.sh (启动脚本),启动完成之后,则可以看到每隔10秒打印一次“process already started!”,这个表示应用程序在运行不需要重启

    linux如何让一个程序崩溃后自动重启
    为了演示程序崩溃的情况,手动杀掉应用程序的进程

    linux如何让一个程序崩溃后自动重启
    杀完进程之后,再看刚刚启动的监控脚本打印日志情况,从图中可以看到,“process has been restarted!”,表示已经重启应用成功了。不确定的还可以自己去看下应用程序是否在运行

    linux如何让一个程序崩溃后自动重启步骤阅读
    END
    注意事项
    上面演示的是直接启动脚本,在退出会话的时候会停止,要使用nohup的方式启动监控脚本

    展开全文
  • 用golang开发的项目越来越多了,他们都跑在...也可以使用pm2来启动管理进程的。使用supervise的。也有使用daemon来实现的。下面我们就尝试使用daemon的方式来实现一个守护进程。 golang的daemon守护进程的代码实现 go

    用golang开发的项目越来越多了,他们都跑在服务器上。但是他们都是在shell中运行的,如果关闭了终端,它就自动停止了。这显然不符合我们的需求,服务中断了还怎么服务用户啊。现在市面上流行的有几种解决方案,最简单的是使用nohup /data/wwwroot/build_app& 来实现将进程抛到后台去。也可以使用pm2来启动管理进程的。使用supervise的。也有使用daemon来实现的。下面我们就尝试使用daemon的方式来实现一个守护进程。

    golang的daemon守护进程的代码实现

    golang中启用daemon的方法很简单,已经有别人造好的轮子了,我们就不再造一遍,直接引用即可。使用的是syscall来处理进程。网上的实例使用的是http.Server服务,由于我使用的是iris框架,所以我重新实现了一个针对iris框架可用的daemon守护进程实现方式。它支持启动、关闭、重启等命令,模仿这nginx的命令操作来实现的。

    核心代码

    package main
    
    import (
    	"fmt"
    	"log"
    	"net/http"
    	"os"
    	"syscall"
    	"video"
    
    	"github.com/medivh-jay/daemon"
    	"github.com/spf13/cobra"
    )
    
    // HTTPServer http 服务器示例
    type HTTPServer struct {
    	http *video.Bootstrap
    	cmd  *cobra.Command
    }
    
    // PidSavePath pid保存路径
    func (httpServer *HTTPServer) PidSavePath() string {
    	return "./"
    }
    
    // Name pid文件名
    func (httpServer *HTTPServer) Name() string {
    	return "http"
    }
    
    // SetCommand 从 daemon 获得 cobra.Command 对象
    func (httpServer *HTTPServer) SetCommand(cmd *cobra.Command) {
    	// 在这里添加参数时他的参数不是对应服务的 start stop restart 命令的, 比如这个示例服务
    	// 他对应的是示例服务命令, s所以这里添加的自定义 flag 应该在 start 之前传入
    	cmd.PersistentFlags().StringP("test", "t", "yes", "")
    	httpServer.cmd = cmd
    }
    
    // Start 启动web服务
    func (httpServer *HTTPServer) Start() {
    	fmt.Println(httpServer.cmd.Flags().GetString("test"))
    	http.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
    		fmt.Println("hello world")
    		_, _ = writer.Write([]byte("hello world"))
    	})
    	httpServer.http = video.New(8088, "debug")
    	httpServer.http.Serve()
    }
    
    // Stop 关闭web服务
    func (httpServer *HTTPServer) Stop() error {
    	fmt.Println("准备关闭服务器")
    	err := httpServer.http.Shutdown()
    	fmt.Println("服务器已经关闭")
    	return err
    }
    
    // Restart 重启web服务前关闭http服务
    func (httpServer *HTTPServer) Restart() error {
    	fmt.Println("服务器关闭中")
    	err := httpServer.Stop()
    	return err
    }
    
    func main() {
    	// 自定义输出文件
    	out, _ := os.OpenFile("./http.log", os.O_APPEND|os.O_CREATE|os.O_RDWR, 0644)
    	err, _ := os.OpenFile("./http_err.log", os.O_APPEND|os.O_CREATE|os.O_RDWR, 0644)
    
    	// 初始化一个新的运行程序
    	proc := daemon.NewProcess(new(HTTPServer)).SetPipeline(nil, out, err)
    	proc.On(syscall.SIGTERM, func() {
    		fmt.Println("a custom signal")
    	})
    	// 示例,多级命令服务
    	// 不要共享一个 worker 对象指针
    	daemon.GetCommand().AddWorker(proc).AddWorker(proc)
    	// 示例,主服务
    	daemon.Register(proc)
    
    	// 运行
    	if rs := daemon.Run(); rs != nil {
    		log.Fatalln(rs)
    	}
    }
    

    bootstrap里面是iris的逻辑

    package video
    
    import (
    	"fmt"
    	"github.com/kataras/iris/v12"
    	"github.com/kataras/iris/v12/middleware/recover"
    )
    
    type Bootstrap struct {
    	Application *iris.Application
    	Port        int
    	LoggerLevel string
    }
    
    func New(port int, loggerLevel string) *Bootstrap {
    	var bootstrap Bootstrap
    	bootstrap.Application = iris.New()
    	bootstrap.Port = port
    	bootstrap.LoggerLevel = loggerLevel
    
    	return &bootstrap
    }
    
    func (bootstrap *Bootstrap) loadGlobalMiddleware() {
    	bootstrap.Application.Use(recover.New())
    }
    
    func (bootstrap *Bootstrap) LoadRoutes() {
    	Register(bootstrap.Application)
    }
    
    func (bootstrap *Bootstrap) Serve() {
    	bootstrap.Application.Logger().SetLevel(bootstrap.LoggerLevel)
    	bootstrap.loadGlobalMiddleware()
    	bootstrap.LoadRoutes()
    
    	bootstrap.Application.Run(
    		iris.Addr(fmt.Sprintf(":%d", bootstrap.Port)),
    		iris.WithoutServerError(iris.ErrServerClosed),
    		iris.WithoutBodyConsumptionOnUnmarshal,
    	)
    }
    
    func (bootstrap *Bootstrap) Shutdown() error {
    	bootstrap.Shutdown()
    
    	return nil
    }
    
    

    控制器代码

    package video
    
    import (
    	"github.com/kataras/iris/v12"
    	"os"
    	"time"
    )
    
    func Index(ctx iris.Context) {
      ctx.WriteString("hello")
    }
    
    func ParseVideo(ctx iris.Context) {
    	v, err := os.Open("vv.mp4")
    	if err != nil {
    		ctx.WriteString(err.Error())
    		return
    	}
    	defer v.Close()
    	ctx.ServeContent(v, "vv.mp4", time.Now(), true)
    }
    
    

    路由器代码

    package video
    
    import "github.com/kataras/iris/v12"
    
    func Register(app *iris.Application) {
    	app.Use(Cors)
    	app.Use(ParseToken)
    
      app.Get("/", Index)
    	app.Get("/play", ParseVideo)
    }
    
    

    中间件代码,用来处理cors

    package video
    
    import (
    	"github.com/kataras/iris/v12"
    )
    
    func Cors(ctx iris.Context) {
    	origin := ctx.GetHeader("Origin")
    	if origin == "" {
    		origin = ctx.GetHeader("Referer")
    	}
    	ctx.Header("Access-Control-Allow-Origin", origin)
    	ctx.Header("Access-Control-Allow-Credentials", "true")
    	ctx.Header("Access-Control-Expose-Headers", "Content-Disposition")
    	if ctx.Request().Method == "OPTIONS" {
    		ctx.Header("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,PATCH,OPTIONS")
    		ctx.Header("Access-Control-Allow-Headers", "Content-Type, Api, Accept, Authorization, Admin")
    		ctx.StatusCode(204)
    		return
    	}
    	ctx.Next()
    }
    
    func ParseToken(ctx iris.Context) {
    
    	ctx.Next()
    }
    
    展开全文
  • 为什么自动关闭知道,但是如何让他再次启动呢 看了网上说启动不了的解决办法,看到一个说是有IDEA进程未关闭,一般情况下IDEA可以重复打开,所以再怎么双击他也没反应。 我去任务管理器看了,进程——应用里边...
    1. 突然自动关闭,再次尝试启动IDEA发现没反应(刚安装激活好的)
    2. 刚开始以为激活工具有问题,后来发现并不是。
    3. 为什么自动关闭不知道,但是如何让他再次启动呢
    4. 看了网上说启动不了的解决办法,看到一个说是有IDEA进程未关闭,一般情况下IDEA不可以重复打开,所以再怎么双击他也没反应。
    5. 我去任务管理器看了,进程——应用里边好像并没有IDEA在运行,刚开始以为也不是这种原因。
    6. 最后发现还是有进程没有关闭,我是在任务管理器——详细信息里边看到有个IDEA进程,然后给他结束了,就可以了。
    展开全文
  • 如何让 Spring Boot 以 Web 方式启动,并且进程不退出呢? 需要确定下 Web 的这个依赖是否在你的依赖中。 <dependency> <groupId>org.springframework.boot</groupId&g...

    在 Spring Boot 启动的时候,在进程完成后会自动退出。

    如何让 Spring Boot 以 Web 方式启动,并且进程不退出呢?

     


    需要确定下 Web 的这个依赖是否在你的依赖中。

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>

    如果没有的话,你需要讲上面的依赖添加到你的项目中。

     

     

     

    然后再重新启动后,你会发现你的 Web 应用没有在完成后自动退出了。

    https://www.cwiki.us/display/SpringBootZH/questions/57938770

     

    展开全文
  • 主要描述在centos 下tomat如何加入到守护进程服务器管理,实现tomat随服务器自启动自动关闭。 jsvc 就是tomcat自带的工具,用jsvc很方便的把tomcat加入到服务器的守护进程中,以下以tomcat5.5.26为例。 ...
  • 以前用c实现的代码在底层编程时还是比较方便,我最近迷上了用golang写程序,如何让golang也能方便的实现界面和强大的底层编程能力呢,当然这里不是嵌入式开发,主要是针对windows平台,通过大量的baidu,google,看了...
  • 我们都知道,当一个exe程序在启动之后,操作系统会把这个可执行文件加载到内存中去,在程序处于运行状态时,如果我们想要把这个文件删除,那就会出现以下...当我们的启动进程完成对目标进程的注入这些事情之后,能
  • 然而,大多数情况下你可能想手动启动服务器,有可能是你安排MySQL服务器在系统引导时自动启动,作为标准引导过程的一部分,在Unix下,该引导过程由系统的Unix用户root执行,并且任何在该过程中运行的进程均以root...
  • 然而,大多数情况下你可能想手动启动服务器,最有可能是你安排MySQL服务器在系统引导时自动启动,作为标准引导过程的一部分,在Unix下,该引导过程由系统的Unix用户root执行,并且任何在该过程中运行的进程均以...
  • 第二部分: 做过android开发的人应该都知道应用会在系统资源匮乏的情况下被...这个办法对普通应用而言,应该只是降低了应用被杀死的概率,但是如果真的被系统回收了,还是无法应用自动重新启动! 2.serv...
  • 网上有不少关于如何让Linux自动运行自己编写的脚本或者程序的方法,但是大多数都是把命令写到/etc/rc.local里,这样虽然能够实现随机运行,但是并不够灵活。能像mysql,apache等服务一样能够使用service命令或者...
  • 如何让一个网站进行挂载服务 让网站一直持续运行呢? 今天我们使用systemd, 来实现网站的挂载服务 。 systemd是Linux系统的一组基本构建块。它提供了一个以PID 1运行的系统和服务管理器,并启动了系统的其余部分。 ...
  • 树莓派设置开机启动脚本

    万次阅读 2016-10-17 15:41:28
    网上有不少关于如何让Linux自动运行自己编写的脚本或者程序的方法,但是大多数都是把命令写到/etc/rc.local里,这样虽然能够实现随机运行,但是并不够灵活。能像mysql,apache等服务一样能够使用service命令或者...
  • 创建一个最简单的Linux随机启动服务

    千次阅读 2012-07-01 19:31:56
    网上有不少关于如何让Linux自动运行自己编写的脚本或者程序的方法,但是大多数都是把命令写到/etc/rc.d/rc.local或者/etc/rc.local里,这样虽然能够实现随机运行,但是并不够灵活。能像mysql,apache等服务一样...
  • 网上有不少关于如何让Linux自动运行自己编写的脚本或者程序的方法,但是大多数都是把命令写到/etc/rc.d/rc.local或者/etc/rc.local里,这样虽然能够实现随机运行,但是并不够灵活。能像mysql,apache等服务一样...
  • 我们在使用IIS部署网站或者系统的时候,会发现当长时间没有访问的话IIS...大家会想IIS永远运行,不自动退出就可以了。恩,这样确实可以解决问题。那我们如何实现呢?下面介绍下步骤: 1.下载并安装Application In...
  •  好,FormCreate过程完成了,这样每次启动都可以自动加载Tapi32.exe,并且在“关闭程序”对话框中看不见本进程了,木马的雏形初现。  接着选中ServerSocket控件,在左边的ObjectInspector中将Active改为true,这样...
  •  2、在进程中可以发现的双进程EXE病毒或木马程序,由于手工方式能同时停掉两个进程,当我们手工掉其中一个进程后,另一个进程会将该进程重新启动。针对这种情况杀毒软件也无能为力,若两个都是非系统进程,我们...
  • </li><li>可避免的超长启动时间 3分钟以内的都算是快的。启动后,程序员抽支烟再回来的在少数。大量的时间在等待,使得程序员越来越愿意测试自己的功能,写完了之后直接扔给测试就完事了。...
  • 同样我们可以故意测试通过,修改<code>test.js代码为: <pre><code> js 'use strict'; require('should'); const mylib = require('../index'); describe('My ...
  • supervisor备忘

    2018-11-28 23:57:28
    旨在快速配置supervisor 常见问题 如何不重启supervisor的情况重新...如何不让程序随supervisor自动启动在conf中添加autostart=false 多进程如何同时关闭子进程在conf中添加stopasgroup=true 下载supervisor ...
  •  如果在使用Total Copy复制文件的过程中突然断电或是死机、系统自动重启,不必担心,重新启动计算机后Total Copy会自动启动并可以断点续传继续文件的复制。  3. 自由调控“复制”速度  在复制文件的过程中,很...
  • 如何让MDI窗口一启动时就最大化或者最小化 如何改变窗口框架的颜色 怎样得到主框架窗口指针 如何实现全屏显示 当文档被修改时,如何在标题上加上标志“*” 怎样判断获得的视图指针是哪一个类 如何取得MDI应用程序中...
  • 1.8.1 如何计算umask值 10 1.8.2 常用的umask值 11 1.9 符号链接 12 1.9.1 使用软链接来保存文件的多个映像 12 1.9.2 符号链接举例 12 1.10 小结 13 第2章 使用find和xargs 14 2.1 find命令选项 14 2.1.1 使用name...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 204
精华内容 81
关键字:

如何让进程不自动启动