Linux 进程退出后自动启动

/**********************************************************************
 *                    Linux 进程退出后自动启动
 * 说明:
 *     在系统中,我们有时候会希望后台程序能够一直运行,即使程序出错了,
 * 也是希望程序能够自动启动,并继续运行。
 *
 *                                  2016-12-10 深圳 南山平山村 曾剑锋
 *********************************************************************/

一、参考文档:
    How to automatically restart a linux background process if it fails?
        http://superuser.com/questions/507576/how-to-automatically-restart-a-linux-background-process-if-it-fails

二、解决办法:
    1. 如参考文档中的说明,分三种情况:
        1. BusyBox init:在/etc/inittab中添加:
            ::respawn:/bin/myprocess
        2. Linux "System V" init:在/etc/inittab中添加:
            myprocess:2345:respawn:/bin/myprocess
        3. systemd:
            1. 在/etc/systemd/system/myprocess.service中添加:
                [Unit]
                Description=My Process

                [Service]
                ExecStart=/bin/myprocess
                Restart=always

                [Install]
                WantedBy=multi-user.target
            2. systemctl enable myprocess.service
    2. 详情请参考:
        http://buildroot.uclibc.org/downloads/manual/manual.html#_init_system
            3. systemctl start myprocess.service
时间: 2024-12-28 15:34:30

Linux 进程退出后自动启动的相关文章

Linux进程退出详解(do_exit)--Linux进程的管理与调度(十四))

日期 内核版本 架构 作者 GitHub CSDN 2016-05-12 Linux-4.6 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度 Linux进程的退出 linux下进程退出的方式 正常退出 从main函数返回return 调用exit 调用_exit 异常退出 调用abort 由信号终止 _exit, exit和_Exit的区别和联系 _exit是linux系统调用,关闭所有文件描述符,然后退出进程. exit是c语言的库函数,他最

Linux进程退出详解(do_exit)--Linux进程的管理与调度(十四)

Linux进程的退出 linux下进程退出的方式 正常退出 从main函数返回return 调用exit 调用_exit 异常退出 调用abort 由信号终止 _exit, exit和_Exit的区别和联系 _exit是linux系统调用,关闭所有文件描述符,然后退出进程. exit是c语言的库函数,他最终调用_exit.在此之前,先清洗标准输出的缓存,调用用atexit注册的函数等, 在c语言的main函数中调用return就等价于调用exit. _Exit是c语言的库函数,自c99后加入,等

erlang监控进程在启动进程退出后异常退出原因分析

一.问题引出 erlang监控进程在启动时设置了trap_exit为true,即会捕获到退出信号,会将退出信号转换为{'EXIT',Pid,Reason}存入自己的邮箱中,因此与监控进程link关系的进程退出后,监控进程能够很坦然的截获退出信号,自身不退出.启动erlang监控进程的进程,会和监控进程建立link关系,然而当启动进程退出时,监控进程没有象正常的情况,发生了异常退出,为什么设置了trap_exit为true,还会退出呢? 二.原因分析 查看supervisor的源码,supervi

TODO:Golang Linux进程退出说明

Golang使用os.Exit(code)进程退出导致当前程序退出并返回给定的状态代码.传统上,code代码为零表示成功退出,非零错误退出. syscall.Exit可以调用不同平台的操作系统的退出. code值为0-255,当code为非0时,os.Exit(code)会返回,对应值当状态码 exit status 128 当code为0,则正常退出.code值可自定义对应当意义进行相应业务场景使用.code的值在自然数是按从0至255的倍数进行循环,例如自然数为256,在进程退出的时候返回的

Linux进程退出--exit与return的区别

通过fork()函数来创建一个进程,那么如何终止一个进程呢? 进程的退出分为正常退出和异常退出: 正常退出: 1).在main()函数执行return. 2).调用exit()函数 3).调用_exit()函数 异常退出可能调用某种函数也可能收到某种信号. 现在只讨论正常退出: (1)exit和return 的区别: a.exit是一个函数,有参数.exit执行完后把控制权交给系统 b.return是函数执行完后的返回.renturn执行完后把控制权交给调用函数. exit()和_exit()

飞鸽传书linux进程退出不彻底

问题描述: 飞鸽传书linux版本(QIpmsg)是有问题的. 在ubuntu14.04上运行的时候,没有任务栏图标,点击关闭也不能退出进程,端口仍然占用,无法再次运行. 这个问题截至1.2.141211版本中依然存在,不知道什么时候能解决. 解决之道: 我用飞鸽主要是传文件,但是我没耐心坐等,所以要自己动动手. 写个脚本,从控制台启动,用完以后直接 ^C结束,干干净净. #!/bin/bash cd ~/app/ipmsg ./QIpmsg.1.2.141211 这样用着就好一点了.

进程退出后自动重启脚步

#!/bin/sh while true; do processExist=`ps aux | grep xxx | grep -v "grep" ` if [ -z "$processExist" ];then echo "proecss is restarted" cd /MyData/xxx nohup sh xxx.sh & else echo "process is running" fi sleep 60

Linux进程管理知识整理

Linux进程管理知识整理 1.进程有哪些状态?什么是进程的可中断等待状态?进程退出后为什么要等待调度器删除其task_struct结构?进程的退出状态有哪些? TASK_RUNNING(可运行状态) TASK_INTERRUPTIBLE(可中断等待状态) TASK_UNINTERRUPTIBLE(不可中断等待状态) TASK_STOPPED(进程被其它进程设置为暂停状态) TASK_TRACED(进程被调试器设置为暂停状态) TASK_DEAD(退出状态) 进程由于所需资源得不到满足,从而进入

深入源码分析Linux进程模型

一.操作系统是怎么组织进程的 1.进程的概念 在进程模型中,计算机上所有可运行的软件,通常也包括操作系统,被组织成若干顺序进程,简称进程.一个进程应该包含如下内容: (1)程序的代码,既然进程是一个正在运行的程序,自然需要程序的代码: (2)程序的数据: (3)CPU寄存器的值,包括通用寄存器,程序计数器: (4)堆(heap)是用来保存进程运行时动态分配的内存空间: (5)栈(stack)有两个用途,1保存运行的上下文信息.2在函数调用时保存被调用函数的形参或者局部变量: (6)进程所占用的一