我添加了一个 cron 作业来准备我的网站的缓存。命令是:
cd crawler && wget --recursive --no-parent --domains=example.com --level=inf --reject css,js,png,jpg,mp4,psd,pdf --delete-after --header "Cookie: has_js=1" -U "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36" https://example.com
该网站大约有 20k 个页面。但是我的缓存现在有 40k 个页面,并且 48 小时后仍在继续。所以我想停止该命令的运行。
为此我运行了:
ps fauxww | grep -A 1 '[C]RON'
这给了我
root 8174 0.0 0.0 184304 2748 ? S Sep28 0:16 \_ CROND
10037 8182 0.0 0.0 106112 1044 ? Ss Sep28 0:00 | \_ /bin/sh -c cd crawler && wget --recursive --no-parent --domains=example.com --level=inf --reject css,js,png,jpg,mp4,psd,pdf --delete-after --header "Cookie: has_js=1" -U "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36" https://example.com
--
root 23177 0.0 0.0 184300 3556 ? S 13:00 0:00 \_ CROND
root 23180 0.0 0.2 345556 27648 ? Ss 13:00 0:00 | \_ /usr/bin/sw-engine -c /usr/local/psa/admin/conf/php.ini -dauto_prepend_file=sdk.php /usr/local/psa/admin/plib/modules/plesk-mobile/scripts/push_worker.php
root 24754 0.0 0.0 184300 3556 ? S 13:01 0:00 \_ CROND
root 24755 0.0 0.0 106112 1276 ? Ss 13:01 0:00 \_ /bin/bash /usr/bin/run-parts /etc/cron.hourly
我看到了进程 ID 为 8182,因此我运行
kill 8182
现在当我跑步时
ps fauxww | grep -A 1 '[C]RON'
我明白了
10037 8182 0.0 0.0 0 0 ? Zs Sep28 0:00 | \_ [sh] <defunct>
root 7120 0.0 0.0 184300 3556 ? S 13:10 0:00 \_ CROND
guy 7123 0.0 0.0 106112 1164 ? Ss 13:10 0:00 | \_ /bin/sh -c /usr/local/psa/admin/sbin/fetch_url 'https://example.com/cron.php' > /dev/null
guy 7127 0.0 0.0 106112 1212 ? S 13:10 0:00 | \_ /bin/bash /usr/local/psa/admin/sbin/fetch_url https://example.com/cron.php
--
root 21941 0.0 0.0 184300 3556 ? S 13:20 0:00 \_ CROND
root 21947 0.1 0.2 345556 27644 ? Ss 13:20 0:00 \_ /usr/bin/sw-engine -c /usr/local/psa/admin/conf/php.ini -dauto_prepend_file=sdk.php /usr/local/psa/admin/plib/modules/plesk-mobile/scripts/push_worker.php
root 2737 0.0 0.0 21104 308 ? Ss 2018 0:00 /usr/sbin/atd
关键是 wget 命令仍在运行。缓存文件所在的目录每秒都在增长。
那么,在我的服务器空间耗尽之前,我该如何停止 wget 命令呢?
答案1
我认为你杀死了你追捕的/bin/sh
那个人的父母。你wget
没有做任何事wget
……
要杀死wget
你kill
需要找到的PID wget
。ps fauxww | grep -A 2 '[C]RON'
(或更多2
)可能已经向你展示了正确的wget
。现在找到wget
这种方式可能为时已晚,因为作为一个孤儿进程它被另一个进程采用可能或可能不匹配[C]RON
。
wget
用pidof wget
或找到 的 PID ps … | grep [w]get
,不要依赖它与 的关系,CROND
因为关系可能不再存在。如果有许多wget
进程,您可能需要进一步调查才能在众多进程中找到正确的 PID。然后kill
它。
期望成功,除非你再次瞄准错误的进程。你之前的尝试没有成功,因为你根本wget
没有瞄准。wget