linux 根据sid找进程,Linux查找所有正在运行的守护进程(daemon)

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 command line or from a startup script such as an init script or a SystemStarter script, involves:

Dissociating from the controlling tty

Becoming a session leader

Becoming a process group leader

Executing as a background task by forking and exiting (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 root directory (/) as the current working directory 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 umask 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 file descriptors 0, 1 and 2 for the standard streams (stdin, stdout and stderr). Required files will be opened later.

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值