確定後台程序的啟動位置和方式以及它們來自何處
首先是簡短的故事:我需要遷移伺服器(應用程序、配置等),但我不知道裡面有什麼,沒有文件,負責人只是放棄並且沒有留下任何資訊,所以這是一種黑匣子或黑洞。我的任務是將伺服器中的內容移至新實例並了解其中的工作方式。問題是有一些後台程序正在執行(參見下面的 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 使用正則表達式而不是簡單的文本字元串進行搜尋。