博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux查找所有正在运行的守护进程(daemon)
阅读量:6230 次
发布时间:2019-06-21

本文共 2983 字,大约阅读时间需要 9 分钟。

hot3.png

ps -eo ppid,pid,sid,stat,tty,comm  | awk '{ if ($2 == $3 && $5 == "?") {print $0}; }'

首先,要注意,守护进程(daemon)和后台进程(background process)有区别。

守护进程是一种后台进程,但是,同时,它必须具备以下特性:

1. 没有控制它的tty

2. 必须是一个session leader

3. 必须是一个进程组的leader

4. 执行后台任务

5. root目录即为工作目录

6. umask设置为0

7. 文件描述符(file descriptor)都必须先关闭,然后再关联相应文件(或者设备),如果有需要的话。

Wiki原文摘录如下:

On a Unix-like system, the common method for a process to become a daemon, when the process is started from the or from a startup script such as an script or a script, involves:

  • Dissociating from the controlling

  • Becoming a session leader

  • Becoming a leader

  • Executing as a by and (once or twice). This is required sometimes for the process to become a session leader. It also allows the parent process to continue its normal execution.

  • Setting the (/) as the current so that the process does not keep any directory in use that may be on a mounted file system (allowing it to be unmounted).

  • Changing the to 0 to allow open(), creat(), et al. operating system calls to provide their own permission masks and not to depend on the umask of the caller

  • Closing all inherited files at the time of execution that are left open by the parent process, including 0, 1 and 2 for the (, and ). Required files will be opened later.

  • Using a , the , or as

实际上,当我们查找守护进程的时候,没有必要用到以上那么多的标准,我们只需要用两条:

1. 没有控制终端

2. session leader

所以我们可以用文中最开始提到的命令来查找:

ps -eo ppid,pid,sid,stat,tty,comm  | awk '{ if ($2 == $3 && $5 == "?") {print $0}; }'

E.g

chenqi@pek-qchen1-d1:~/test [1] $ ps -eo ppid,pid,sid,stat,tty,comm  | awk '{ if ($2 == $3 && $5 == "?") {print $0}; }'

    0     1     1 Ss   ?        init
    1   401   401 Ss   ?        systemd-udevd
    1   435   435 Ssl  ?        rsyslogd
    1   446   446 Ss   ?        dbus-daemon
    1   520   520 Ss   ?        rpc.idmapd
    1   530   530 Ss   ?        systemd-logind
    1   575   575 Ss   ?        bluetoothd
    1   750   750 Ss   ?        smbd
    1   762   762 Ss   ?        rpcbind
    1   779   779 Ss   ?        rpc.statd
    1   829   829 Ssl  ?        ModemManager
    1   950   950 Ssl  ?        NetworkManager
    1   993   993 Ss   ?        cups-browsed
    1  1424  1424 Ss   ?        nmbd
    1  1550  1550 Ss   ?        acpid
    1  1559  1559 Ss   ?        cron
    1  1560  1560 Ss   ?        atd
    1  1565  1565 Ss   ?        sshd
    1  1612  1612 Ssl  ?        automount
    1  1622  1622 Ssl  ?        named
    1  1627  1627 Ssl  ?        whoopsie
    1  1664  1664 Ss   ?        gdomap
    1  1670  1670 Ss   ?        kerneloops
    1  1721  1721 Ss   ?        rpc.mountd
    1  1829  1829 Ss   ?        master
    1  1998  1998 Ss   ?        apache2
    1  2016  2016 SLsl ?        lightdm
 2561  2588  2588 Ss   ?        init
 2588  2653  2653 Ss   ?        dbus-daemon
 2588  2656  2656 Ss   ?        ssh-agent
 2588  2663  2663 Ss   ?        upstart-event-b
 2588  2667  2667 Ss   ?        window-stack-br
 2588  2668  2668 Ssl  ?        ibus-daemon
 2588  2681  2681 Ssl  ?        unity-settings-
 2588  2686  2686 Ssl  ?        hud-service
 2588  2687  2687 Ssl  ?        at-spi-bus-laun
 2588  2688  2688 Ssl  ?        gnome-session
 2588  2693  2693 Ssl  ?        unity-panel-ser
 2588  2786  2786 Ssl  ?        indicator-messa
 2588  2789  2789 Ssl  ?        indicator-bluet
 2588  2792  2792 Ssl  ?        indicator-power
 2588  2799  2799 Ssl  ?        indicator-datet
 2588  2800  2800 Ssl  ?        indicator-sound
 2588  2803  2803 Ssl  ?        indicator-print
 2588  2866  2866 Ssl  ?        indicator-sessi
 2588  2879  2879 Ssl  ?        indicator-appli
    1 24409 24409 Ss   ?        cupsd

转载于:https://my.oschina.net/u/158589/blog/351890

你可能感兴趣的文章
计算机网络与Internet应用
查看>>
标签制作软件中如何导出标签模板为PDF文件?
查看>>
[CF919E]Congruence Equation
查看>>
Java IO最详解
查看>>
关于错误error C4430 error C2365 error C2078 error C2440 error C2143的处理。
查看>>
用python写一个抽奖程序
查看>>
npm使用入门(package.json)
查看>>
You are beautiful
查看>>
inline和宏之间的区别
查看>>
hibernate篇章五--Hibernage工作原理
查看>>
MongodDB学习笔记(二)(复制)
查看>>
oracle在线迁移同步数据,数据库报错
查看>>
Java中1.0 / 0.0 会输出什么?
查看>>
linux性能剖析工具
查看>>
DP ZOJ 3872 Beauty of Array
查看>>
jQuery Ajax实例 ($.ajax_$.post_$.get)
查看>>
垃圾桶丁
查看>>
HDU 4757 可持久化trie树
查看>>
spring-boot入门
查看>>
USB HID 分析
查看>>