精华内容
下载资源
问答
  • 问题应该是:/etc/init.d/xinetd 的方式启动和rsync --daemon的方式有什么不同 根据守护进程启动和管理方式,可以分为独立启动守护进程和超级守护进程两类独立启动(stand_alone):该类进程启动后就常驻内存,...

    问题应该是:

    /etc/init.d/xinetd 的方式启动和rsync --daemon的方式有什么不同

     

    根据守护进程的启动和管理方式,可以分为独立启动守护进程和超级守护进程两类
    独立启动(stand_alone):

    该类进程启动后就常驻内存,所以会一直占用系统资源。其最大的优点就是它会一直启动,当外界有要求时相应速度较快,像httpd等进程;

    超级守护进程:

    系统启动时由一个统一的守护进程xinet来负责管理一些进程,当相应请求到来时需要通过xinet的转接才可以唤醒被xinet管理的进程。这种进程的优点时最初只有xinet这一守护进程占有系统资源,其他的内部服务并不一直占有系统资源,只有数据包到来时才会被xinet管理员来唤醒。并且我们还可以通过xinet来对它所管理的进程设置一些访问权限,相当于多了一层管理机制。

     


    本文出自 “宋某人c” 博客,请务必保留此出处http://syaving.blog.51cto.com/5614476/1871260

    展开全文
  • ubuntu 开机自启动 守护进程 supervisor

    千次阅读 2019-05-17 07:55:29
    当我们写好程序时,有时希望这个程序,一开机就能运行; 当程序意外被终止时(内部 或 ...使用 守护进程 supervisor ,需要先安装一下: 1)安装 可以使用一下命令: sudo apt-get install supervisor 安装成功...

    当我们写好程序时,有时希望这个程序一开机就能运行

    程序意外被终止时(内部 或 外设设备出了问题),希望程序能自动重新运行

     

    目录

    解决方案:

    其他一些配置,通过这个例子讲解

    补充说明:


     

    解决方案:

    使用 守护进程 supervisor ,需要先安装一下:

    1)安装

    可以使用一下命令:

    sudo apt-get install supervisor

    安装成功后,supervisor就会默认启动

     

    2) 使用 

    将每个进程的配置文件单独拆分,放在 /etc/supervisor/conf.d/目录下,以.conf作为扩展名,

    cd /etc/supervisor/conf.d/
    sudo gedit haha.conf

    例如test.conf定义的一个简单的HTTP服务器:

    [program:test]
    command=python -m SimpleHTTPServer

     

    3)重启supervisor,让配置文件生效,然后启动test进程:

    sudo supervisorctl reload
    sudo supervisorctl start test

    如果要停止进程,就用stop 

     

    其他一些配置,通过这个例子讲解

    [program:meta.txn.recover.on.error]
    command=/cas/bin/meta.txn.recover.on.error ; 被监控的进程路径
    numprocs=1                    ; 启动几个进程
    directory=/cas/bin                ; 执行前要不要先cd到目录去,一般不用
    autostart=true                ; 随着supervisord的启动而启动
    autorestart=true              ; 自动重启。。当然要选上了
    startretries=10               ; 启动失败时的最多重试次数
    exitcodes=0                 ; 正常退出代码(是说退出代码是这个时就不再重启了吗?待确定)
    stopsignal=KILL               ; 用来杀死进程的信号
    stopwaitsecs=10               ; 发送SIGKILL前的等待时间
    redirect_stderr=true          ; 重定向stderr到stdout
    stdout_logfile=logfile        ; 指定日志文件

     

    常用命令: 

    supervisorctl start programxxx,启动某个进程
    supervisorctl restart programxxx,重启某个进程
    supervisorctl stop groupworker: ,重启所有属于名为groupworker这个分组的进程(start,restart同理)
    supervisorctl stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
    supervisorctl reload,载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
    supervisorctl update,根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
    supervisor启动和停止的日志文件存放在/var/log/supervisor/supervisord.log
    注意:显式用stop停止掉的进程,用reload或者update都不会自动重启

     

    下面结合我的实际开发,分享一下例子:

    1)先进入目录:

    cd /etc/supervisor/conf.d/
    

     

    2)新建一个文件,以conf为文件结尾

    sudo gedit haha.conf

    内容:

    [program:meta.txn.recover.on.error]
    command=/home/pu/pu_student/壁障/test        ; 被监控的进程路径
    numprocs=1                    ; 启动几个进程
    autostart=true                ; 随着supervisord的启动而启动
    autorestart=true              ; 自动重启。。当然要选上了
    startretries=10               ; 启动失败时的最多重试次数
    exitcodes=0                 ; 正常退出代码(是说退出代码是这个时就不再重启了吗?待确定)
    stopsignal=KILL               ; 用来杀死进程的信号
    stopwaitsecs=10               ; 发送SIGKILL前的等待时间
    redirect_stderr=true          ; 重定向stderr到stdout
    stdout_logfile=logfile        ; 指定日志文件

    目的,运行程序:test , 程序放在目录:/home/pu/pu_student/  

    startretries=10               ; 启动失败时的最多重试次数 10 

     

     

     

     

     

     关机,重启,用top命令看一下test是否有运行:

    成功开机自动启动,启动失败时会重试的

     

    补充说明:

    如果 守护进程 supervisor不能使用的朋友,尝试先把python默认设置为 python2,再启动守护进程 supervisor 服务。

    python3 切换到 python2:

    
    gedit  ~/.bashrc             #执行命令1 
    
    alias python=python2         #执行命令2   需改内容,指向python2
    
    source ~/.bashrc             #执行命令3   更新一下python默认内容
    
    

     

    感谢朋友haha,协助完成这篇博客。

    希望对你有帮助。

     

     

    展开全文
  • systemd是Liunx的启动守护进程,已被大多数Liunx发行版所采用。相较于之前被采用的init进程串行启动,systemd进程采用并行启动且为系统启动管理提供了成套的方案。 探索systemd启动的问题背景是,团队使用树莓派...

    欢迎转载,请注明出处!

    ©MrWang_tju 2019.5.15

    systemd是Liunx的启动守护进程,已被大多数Liunx发行版所采用。相较于之前被采用的init进程串行启动,systemd进程采用并行启动且为系统启动管理提供了成套的方案。

    探索systemd启动的问题背景是,团队使用树莓派zero W+做的产品在系统启动后需要启动声卡播放音频文件,但声卡驱动相关的服务启动需要20s+,加上系统其余启动项耗费的时间,在45s左右才能实现音频播放。上电45秒系统不作出任何反应,用户难以忍受如此长的没有任何反馈的启动时间。

    经过调整service启动顺序,最终实现上电22s播放音频文件。

    树莓派烧录2019-04-08-raspbian-stretch-lite.img镜像,已经是极简化的系统,故没有通过内核裁剪实现加速启动(团队没有人有相关经验)。

    声卡驱动来源:https://github.com/respeaker/seeed-voicecard.git

    适用于驱动2mic、4mic、6mic树莓派喇叭模块

    问题解决:

    1.systemd相关基础知识,参考以下几篇博客  

    http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html

    https://www.jianshu.com/p/86adb6d5347b

    2.分析当前系统各项服务启动时间及顺序

    a.列出各项启动占用的时间,但由于是并行启动,启动时间不决定启动完成先后

    systemd-analyze blame

     

    b.列出启动矢量图,用浏览器打开boot.svg文件  得到各service启动顺序

    systemd-analyze plot > boot.svg

     

    由svg矢量图得到声卡服务seeed-voicecard.service在17s左右开始启动,启动时间约20s,(和上电,外部计时时间不同,原因在于uboot引导、内存卡程序copy等时间未算在内)

    分析seeed-voicecard.service

    [Unit]
    Description=Seeed Voicecard service
    After=alsa-restore.service
     
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/usr/bin/seeed-voicecard
    User=root
     
    [Install]
    WantedBy=sysinit.target
    

    service将在alsa-restore.service之后启动,且属于sysinit.target组,目的在于执行seeed-voicecard 文件

    systemd启动顺序约定为,当前服务满足启动条件,则立即创建进程进行并行启动。启动条件指服务的依赖关系(Requires、Wants)及顺序关键字(After、Before)等

    c.列出seeed-voicecard.service的全部依赖关系,发现依赖关系异常多、且复杂。但service文件中并未提到如此多的依赖、怀疑依赖有继承关系,删掉After alsa-re... / 仍然有很多依赖。寻找何处定义依赖关系花费了很长时间,也是解决问题的关键。

    systemctl list-dependencies seeed-voicecard.service

    3.解决契机,发现keyboard启动服务很早被执行,观察keyboard service文件写法(路径 /lib/systemd/system),发现unit中包含

    DefaultDependencies=no

     即systemd规定了许多默认依赖,一般的服务需要等待默认依赖的服务启动完毕后才可以启动。至此,问题解决大半。

    剩余的问题在于,seeed-voicecard.service过早启动,(早于I2C、SPI等硬件初始化、早于boot.mont挂载点)导致程序启动失败。分析svg图,将seeed-voicecard.service置于如下几个服务之后,可确保较早启动且正常启动。

    修改seeed-voicecard.service文件如下

    [Unit]
    Description=Seeed Voicecard service
    DefaultDependencies=no
    After=boot.mount
    Before=nfs-config.service
    Before=console-setup.service
    Before=plymouth-read-write.service
    Wants=DRStartSound.service
    
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/usr/bin/seeed-voicecard
    
    [Install]
    WantedBy=sysinit.target

    此时分析boot启动svg图,发现seeed-voicecard.service启动时间提前至9s且启动时间缩短至8s以内,即17s即可播放音频文件。启动时间缩短的原因在于启动时刻提前,此时并行任务较少,声卡服务占用充足cpu资源,实现了快速启动。

    学习探索systemd几天之后的总结:

    1.依赖关系由默认依赖DefaultDependencies与service中定义的依赖组成,默认依赖确保了一般服务在内核启动完毕、硬件设备驱动启动完毕、内存管理等启动个完毕之后才启动服务。启动条件满足,服务会立刻被启动。

    2.systemctl enable xxx.service命令实质是在target.wants文件中创建xxx.service的链接,同理disable实质在于断开链接。大多数的service文件存放于 /lib/systemd/system目录下。而创建的链接、按照不同target分属于不同的文件夹。seeed-voicecard.service被sysinit.target包含,创建的链接存在于 /etc/systemd/system/sysinit.target.wants文件夹中。

    3.systemctl disable xxx.service命令有时不能移除创建的链接(或是在其他部分enable了该服务),服务仍然可以在其他进程、或下次上电时启动。要完全禁止某服务启动,应该用 systemctl mask xxx.service 要解除禁止,用systemctl unmask xxx.service

    4.修改 /lib/systemd/system目录下的service,使用sudo systemctl daemon-reload更新链接中的service内容,或关机再次开机也会自动更新。

    5.分析启动问题,有svg启动矢量图才能看清各项启动顺序及启动时间,实用且直观的表达方式

    6.本次涉及的只有service相关内容,systemd的硬件启动device相关内容没有涉及到。

     

     

    展开全文
  • 主要为大家详细介绍了Linux守护进程启动方法,本文介绍如何将一个 Web 应用,启动守护进程,感兴趣的小伙伴们可以参考一下
  • 参考链接: 《Linux 守护进程启动方法》 《disown, zombie children, and the uninterruptible sleep》
    展开全文
  • Systemd 如何设置 开机启动 守护进程

    千次阅读 2019-06-15 09:58:15
    权限:systemd有系统和用户区分;系统(/user/lib/systemd/system/)、用户(/etc/lib/systemd/...1、在/usr/lib/systemd/system/ 目录下 创建对应service(例如我要设置 gogs 为开机启动守护进程,那么就创建 gog...
  • linux 设置开机启动守护进程

    千次阅读 2016-12-30 11:04:03
    linux系统下设置开机启动守护进程 1、编写启动解本shell 如:要启动/test目录下的a.out. 1、在/test目录下建一个run.sh文件; 2、编辑内容,第一行:#!/bin/bash 第二行:cd /test 第三行:./a.out &; 3、设置可...
  • Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置。 本文介绍它的基本用法,分为上下两篇。今天介绍它的主要命令,下一篇介绍如何用于实战。一、由来历史上,Linux 的启动一直采用init...
  • 版本Hadoop-1.2.1启动脚本 脚本说明start-all.sh 启动所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、DataNode、JobTracker、 TaskTrackstop-all.sh 停止所有的Hadoop守护进程。包括NameNode、 ...
  • 守护进程和超级守护进程

    千次阅读 2015-01-02 11:09:00
    在Linux中,守护进程有...每个守护进程都会有一个脚本,可以理解成工作配置文件,守护进程的脚本需要放在指定位置,独立启动守护进程:放在/etc/init.d/目录下,当然也包括xinet的shell脚本;超级守护进程:按照x
  • 从django 启动守护进程

    千次阅读 2011-03-04 00:42:00
    无论是通过使用多线程(threading),还是多进程(subprocess, multiprocessing, os.fork),页面都会返回内容,但一直处于继续等待的界面.分析原因是在django中启动线程后除非kill掉启动的线程或者线程自己结束,否则django...
  • 守护进程

    2017-06-09 17:20:13
    守护进程是在后台运行的一种特殊进程,Linux系统启动时会启动很多系统服务进程,这些系统服务进程没有控制终端,不能直接和用户交互,其它进程都是在用户登录或运行程序时创建,在运行结束或用户注销时中缀,但系统...
  • 今天遇到一个问题:Hyperf项目能正常启动,用守护进程无法启动 首先排除守护进程问题,因为其他项目可正常启动。对应项目的配置文件也毫无问题。 解决方式:给我们的缓存文件夹runtime 加777权限 chomd -R 777 /...
  • 启动Docker守护进程: sudo docker -d  第一次启动守护进程的时候报错。如下图: 查看守护进程是否已经启动 : ps aux | grep docker 发现已经启动。但是执行 sudo docker -d 任然报错。 ...
  • 何为守护进程 、进程组 / 组长进程 / 会话 / 会话首进程 、守护进程的创建步骤 、创建守护进程程序示例
  • 守护进程及初始化守护进程

    千次阅读 2016-10-26 21:20:55
    Linux系统中的守护进程是一种运行在后台的进程。而守护进程,也就是通常说的Daemon进程。它通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程它从被执行开始运转,直到整个系统关闭时...
  • 守护进程: 守护线程是低优先级的线程,它的作用仅仅是为用户线程(非守护线程)提供服务。正是由于守护线程是为用户线程提供服务的,仅仅在用户线程处于运行状态时才需要守护线程。另外,一旦所有的用户线程都运行...
  • 守护进程详解

    2017-06-07 16:48:58
     (1)用来启动守护进程的终端在启动守护进程之后,需要执行其他任务。 2. 守护进程的创建 调用umask将文件模式创建屏蔽字设置为0. 调用fork,父进程退出(exit )  原因:1)如果该守护进程是作为一条简单的...
  • 如何使守护进程开机启动

    千次阅读 2017-04-30 15:42:30
    写一个简单的守护进程,如何做到让其开机启动呢?精灵化daemon这个守护进程,无论是使用shell脚本写的,还是使用C等编译型语言写的,都需要经过进程脱离终端转入后台执行的过程,可以代码层面精灵化,也可以命令行下...
  • 1,成功执行文件 在main函数所在的文件下运行,生成可执行文件 go build 2.启动守护进程 nohup ./生成的文件 &

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 205,863
精华内容 82,345
关键字:

怎样启动守护进程