Linux

確定後台程序的啟動位置和方式以及它們來自何處

  • March 28, 2015

首先是簡短的故事:我需要遷移伺服器(應用程序、配置等),但我不知道裡面有什麼,沒有文件,負責人只是放棄並且沒有留下任何資訊,所以這是一種黑匣子或黑洞。我的任務是將伺服器中的內容移至新實例並了解其中的工作方式。問題是有一些後台程序正在執行(參見下面的 ps -ax 輸出):

ps -ax

Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
 PID TTY      STAT   TIME COMMAND
 ...
 841 ?        Ss    13:42 python /usr/local/bin/pdoInstaller/
 848 ?        Ss     0:04 php /usr/local/bin/pdoneVendorBroker/vendorBroker.php
 950 ?        Ssl   13:00 /usr/bin/mongod --config /etc/mongodb.conf
 013 ?        S      0:00 CRON
1014 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
1015 ?        Ssl    1:02 /usr/sbin/mysqld
1016 ?        S      0:02 /usr/bin/php rss_article_loader.php
1065 ?        Ssl    0:29 /usr/sbin/nova-agent -q -p /var/run/nova-agent.pid -o /var/log/nova-agent.log -l info /usr/share/nova-agent/nova-agent.py
1219 ?        S      0:01 /usr/lib/erlang/erts-5.10.3/bin/epmd -daemon
1222 ?        S      0:00 CRON
1223 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
1224 ?        S      0:01 /usr/bin/php rss_article_loader.php
1506 ?        S      0:00 /bin/sh /usr/sbin/rabbitmq-server
1517 ?        Sl    15:59 /usr/lib/erlang/erts-5.10.3/bin/beam.smp -W w -K true -A30 -P 1048576 -- -root /usr/lib/erlang -progname erl -- -home /var/lib/rabbitmq -- -noshell -noinput -sname rabbit@pdone-db-qa -boot /v
1728 ?        S      0:00 CRON
1729 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
1730 ?        S      0:00 /usr/bin/php rss_article_loader.php
3137 ?        Ss     0:04 php /usr/local/bin/shareEventHandler/shareEventHandler.php
3165 ?        Ss     0:04 php /usr/local/bin/repToolBroker/repToolBroker.php
3180 ?        Ss     0:04 php /usr/local/bin/pdoneLoginProctor/loginProctor.php
3201 ?        Ss     0:04 php /usr/local/bin/messageBroker/messageBroker.php
3230 ?        Ss     0:04 php /usr/local/bin/emailBroker/emailBroker.php
3250 ?        Ss     0:04 php /usr/local/bin/edetailBroker/edetailBroker.php
3270 ?        Ss     0:04 php /usr/local/bin/cmeBroker/cmeBroker.php
3921 ?        S      0:00 CRON
3922 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
3923 ?        S      0:03 /usr/bin/php rss_article_loader.php
4395 ?        S      0:00 CRON
4396 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
4397 ?        S      0:02 /usr/bin/php rss_article_loader.php
4498 ?        S      0:00 CRON
4499 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
4500 ?        S      0:01 /usr/bin/php rss_article_loader.php
5781 ?        S      0:00 CRON
5782 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
5783 ?        S      0:04 /usr/bin/php rss_article_loader.php
7242 ?        S      0:00 CRON
7243 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
7244 ?        S      0:03 /usr/bin/php rss_article_loader.php
7575 ?        S      0:00 CRON
7576 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
7577 ?        S      0:02 /usr/bin/php rss_article_loader.php
7705 ?        S      0:00 CRON
7706 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
7707 ?        S      0:01 /usr/bin/php rss_article_loader.php
9368 ?        S      0:00 CRON
9369 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
9370 ?        S      0:04 /usr/bin/php rss_article_loader.php
10450 ?        S      0:00 CRON
10451 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
10452 ?        S      0:03 /usr/bin/php rss_article_loader.php
10771 ?        S      0:00 CRON
10772 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
10773 ?        S      0:02 /usr/bin/php rss_article_loader.php
10884 ?        S      0:00 CRON
10885 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
10886 ?        S      0:01 /usr/bin/php rss_article_loader.php
12947 ?        S      0:00 CRON
12949 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
12951 ?        S      0:04 /usr/bin/php rss_article_loader.php
13573 ?        S      0:00 CRON
13574 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
13575 ?        S      0:03 /usr/bin/php rss_article_loader.php
13963 ?        S      0:00 CRON
13964 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
13965 ?        S      0:01 /usr/bin/php rss_article_loader.php
14157 ?        S      0:00 CRON
14158 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
14159 ?        S      0:00 /usr/bin/php rss_article_loader.php
16083 ?        S      0:00 CRON
16084 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
16085 ?        S      0:04 /usr/bin/php rss_article_loader.php
17089 ?        S      0:00 CRON
17090 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
17091 ?        S      0:03 /usr/bin/php rss_article_loader.php
17103 ?        S      0:00 CRON
17104 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
17105 ?        S      0:01 /usr/bin/php rss_article_loader.php
17553 ?        S      0:00 CRON
17554 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
17555 ?        S      0:00 /usr/bin/php rss_article_loader.php
19227 ?        S      0:00 CRON
19228 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
19229 ?        S      0:04 /usr/bin/php rss_article_loader.php
20318 ?        S      0:00 CRON
20319 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
20320 ?        S      0:01 /usr/bin/php rss_article_loader.php
20375 ?        S      0:00 CRON
20376 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
20377 ?        S      0:02 /usr/bin/php rss_article_loader.php
20722 ?        S      0:00 CRON
20723 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
20724 ?        S      0:00 /usr/bin/php rss_article_loader.php
22324 ?        S      0:00 CRON
22325 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
22326 ?        S      0:03 /usr/bin/php rss_article_loader.php
23549 ?        S      0:00 CRON
23550 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
23551 ?        S      0:01 /usr/bin/php rss_article_loader.php
23643 ?        S      0:00 CRON
23644 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
23645 ?        S      0:02 /usr/bin/php rss_article_loader.php
23945 ?        S      0:00 CRON
23946 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
23947 ?        S      0:00 /usr/bin/php rss_article_loader.php
25875 ?        S      0:00 CRON
25876 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
25877 ?        S      0:03 /usr/bin/php rss_article_loader.php
26840 ?        S      0:00 CRON
26841 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
26842 ?        S      0:02 /usr/bin/php rss_article_loader.php
27223 ?        S      0:00 CRON
27225 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
27227 ?        S      0:01 /usr/bin/php rss_article_loader.php
27538 ?        S      0:00 CRON
27539 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
27540 ?        S      0:00 /usr/bin/php rss_article_loader.php
29374 ?        S      0:00 CRON
29375 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
29376 ?        S      0:03 /usr/bin/php rss_article_loader.php
30232 ?        S      0:00 CRON
30233 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
30234 ?        S      0:02 /usr/bin/php rss_article_loader.php
30444 ?        S      0:00 CRON
30445 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
30446 ?        S      0:01 /usr/bin/php rss_article_loader.php
30682 ?        S      0:00 /usr/sbin/apache2 -k start
30683 ?        S      0:00 /usr/sbin/apache2 -k start
30848 ?        S      0:00 CRON
30849 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
30850 ?        S      0:00 /usr/bin/php rss_article_loader.php
32692 ?        S      0:00 CRON
32693 ?        Ss     0:00 /bin/sh -c cd /var/www/pdone/ipad_v2/rpc; /usr/bin/php rss_article_loader.php
32694 ?        S      0:03 /usr/bin/php rss_article_loader.php

有些是通過 CRON 執行的,我已經確定了那些簡單的路徑,但其他一些像由 PHP 開始的那些,例如:

3137 ?        Ss     0:04 php /usr/local/bin/shareEventHandler/shareEventHandler.php
3165 ?        Ss     0:04 php /usr/local/bin/repToolBroker/repToolBroker.php
3180 ?        Ss     0:04 php /usr/local/bin/pdoneLoginProctor/loginProctor.php

我不知道它是從哪裡來的,我需要知道它們是從哪裡開始以及如何開始的,以便在新伺服器上設置相同的東西,有沒有人可以提供一些關於如何解決這個問題的想法?目前我唯一知道的是 RabbitMQ 使用該腳本來傳遞消息並執行一些任務。我需要確定後台程序的啟動位置和方式以及它們的來源。原始伺服器是 Ubuntu 新的伺服器是 CentOS 不是問題,但僅供參考,任何人都可以給我一些幫助或想法嗎?

更新

cmeBroker.conf在目錄中找到了一個文件,/usr/local/bin/cmeBroker以此類推,這是該文件的內容:

description "PDone cmeBroker"

start on runlevel [234]
stop on runlevel [0156]

respawn
exec php /usr/local/bin/cmeBroker/cmeBroker.php
post-start script
   PID=`status cmeBroker | egrep -oi '([0-9]+)$' | head -n1`
   echo $PID > /var/run/cmeBroker.pid
end script

post-stop script
   rm -f /var/run/cmeBroker.pid
end script

所以現在這是一個線索,但誰負責啟動或讀取這個文件?

更新 2

正如**@ivan**所建議的,我已安裝auditd在 Ubuntu 伺服器上,並執行了以下命令:

auditctl -w /usr/local/bin/repToolBroker/repToolBroker.php -p rwxa

我應該重新啟動伺服器還是只是等待並找到使用:

ausearch -f /usr/local/bin/repToolBroker/repToolBroker.php

誰訪問或更改了文件?這可以告訴我誰負責啟動這些文件並在後台執行它們?

更新 3

使用**@julian-sivertsen**建議在文件系統中搜尋與文件名匹配的文本字元串,感謝我從這裡得到的另一個幫助,我執行了這個命令:

sudo grep -r 'shareEventHandler.php\|repToolBroker.php\|loginProctor.php\|messageBroker.php\|emailBroker.php\|edetailBroker.php\|cmeBroker.php' .

這使我可以找到呼叫文件的位置。這是上面命令的輸出:

./init/emailBroker.conf:exec php /usr/local/bin/emailBroker/emailBroker.php
./init/cmeBroker.conf:exec php /usr/local/bin/cmeBroker/cmeBroker.php
./init/pdoneLoginProctor.conf:exec php /usr/local/bin/pdoneLoginProctor/loginProctor.php
./init/edetailBroker.conf:exec php /usr/local/bin/edetailBroker/edetailBroker.php
./init/messageBroker.conf:exec php /usr/local/bin/messageBroker/messageBroker.php
grep: ./init/veevaBroker.conf: No such file or directory
./init/shareEventHandler.conf:exec php /usr/local/bin/shareEventHandler/shareEventHandler.php
./init/repToolBroker.conf:exec php /usr/local/bin/repToolBroker/repToolBroker.php

.conf文件是我之前找到的文件的符號連結,這就是所有發生的地方。現在我還有一個問題,init文件夾是乾什麼用的?這是我第一次處理這個問題,我想知道和學習。

任何?

首先使用命令調查父/子程序之間的關係,例如ps -AF --forest. 父程序 ID (PPID) 將是生成相關程序的程序,或者如果它分叉或成為孤立程序,則為 1。--forest切換到 PS 會顯示這種關係的圖形表示。

守護程序通常從 /etc/rc5.d/ 中的腳本開始,請嘗試查看那裡。還要查看 cron 任務的文件。這些位置和設置因 Linux 發行版而異,有關詳細資訊,請參閱發行版文件。對於新貴的 init 系統,可以使用該service --status-all命令列出所有守護程序。

如果這些為空,您可以嘗試在文件系統中搜尋與用於啟動程序的命令匹配的文本字元串。例如grep "rss_article_loader\\.php" -r /usr /etc,將顯示 /usr 和 /etc 中包含字元串“rss_article_loader.php”的所有文件。請注意,grep 使用正則表達式而不是簡單的文本字元串進行搜尋。

引用自:https://serverfault.com/questions/678789