• [进程]守护进程


    这两天碰到一个问题,应用程序运行一天,eMMC被塞满了,查看/var/log下面发现是daemon.log和sys.log两个log日志各增加到1.2G左右,询问参与应用程序开发的同事后了解到他们并没与像某个log日志中填日志。查看了日志的内容都是dhcpcd: can....set_mtu....

    后来在/etc/dhcpcd.conf中添加denyinterfaces can0 can1 can2解决了这个问题,取消dhcpcd这个守护进程去监听can口

    于是顺道了解了Linux日志结构,分享如下的日志

    转自http://www.cnblogs.com/z-sm/p/5675051.html

    另外/var/log下20个Linux日志文件详解

    http://h2appy.blog.51cto.com/609721/781281/

    一、普通进程与后台进程

    默认情况下,进程是在前台运行的,这时就把shell给占据了,我们无法进行其它操作。对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'&'实现这个目的:

    zsm@wilburUbun:~/application/zookeeper-3.4.8/bin$ ./zkServer.sh start &
    [1] 21304
    zsm@wilburUbun:~/application/zookeeper-3.4.8/bin$ ZooKeeper JMX enabled by default
    Using config: /home/zsm/application/zookeeper-3.4.8/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    
    [1]+  Done                    ./zkServer.sh start

    进程切换到后台的时候,我们把它称为job。切换到后台时会输出相关job信息,以前面的输出为[1] 21304例:[1]表示job, ID是21304表示进程ID是21304。 切换到后台的进程,仍然可以用ps命令查看,或通过jobs命令只查看所有job(后台进程)

    二、守护进程

    如果一个进程永远都是以后台方式启动,并且不能受到Shell退出影响而退出,一个正统的做法是将其创建为守护进程(daemon)。守护进程值得是系统长期运行的后台进程,类似Windows服务。守护进程信息通过ps –a无法查看到,需要用到–x参数(ps -aux),当使用这条命令的时候,往往还附上-j参数以查看作业控制信息,其中TPGID一栏为-1就是守护进程。

    三、守护进程与后台进程

    后台进程的文件描述符也是继承于父进程,例如shell,所以它也可以在当前终端下显示输出数据。但是daemon进程自己变成了进程组长,其文件描述符号和控制终端没有关联,是控制台无关的。

    基本上任何一个程序都可以后台运行,但守护进程是具有特殊要求的程序,比如要脱离自己的父进程,成为自己的会话组长等,这些要在代码中显式地写出来换句话说,守护进程肯定是后台进程,但反之不成立。 

    四、进程查看

    • 守护进程:ps -x
    • 普通进程:ps 或 带参数的其他ps命令
    • 后台进程:jobs 或 前面的上述的那些命令

    五、跟系统任务相关的几个命令

    fg、bg、jobs、&、ctrl+z

    1. & 最经常被用到

       这个用在一个命令的最后,可以把这个命令放到后台执行

    2. ctrl + z

       可以将一个正在前台执行的命令放到后台,并且暂停

    3. jobs

         查看当前有多少在后台运行的命令

    4. fg

         将后台中的命令调至前台继续运行  

       如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

    5. bg 将一个在后台暂停的命令,变成继续执行???

    如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

      1. jobs列举出后台作业信息。([作业号]   运行状态   作业名称)

      2. ctrl+z 将任务放到后台去,并暂停;

      3. bg  <%int> 将后台任务唤醒,在后台运行;

      4. fg   <%int> 将后任务的程序放到前台;

  • 相关阅读:
    Oracle主库存在Online Patch,备库该如何打上该补丁
    Oracle中如何构造一条在去年运行不报错今年运行报错的SQL语句
    Linux双网卡绑定启动网卡报错Error: Connection activation failed: Master connection not found or invalid
    Oracle备库GV$ARCHIVED_LOG.APPLIED的最新归档日志状态为"IN-MEMORY"(已经应用成功)对应主库的状态为"NO"
    Oracle关于ARCHIVELOG DELETION POLICY的配置解释以及RMAN-08137/RMAN-08591的原因探究
    Oracle Logminer的测试使用
    Oracle间隔分区(interval分区)的分区字段无法为NULL值
    Oracle绑定变量类型为timestamp导致V$SQL_BIND_CAPTURE不显示值
    即时性能分析工具 Pyroscope
    Go之Zap日志库集成Gin
  • 原文地址:https://www.cnblogs.com/aaronLinux/p/6839708.html
Copyright © 2020-2023  润新知