如何停止当前正在运行的执行 wget 的 cron 作业?

如何停止当前正在运行的执行 wget 的 cron 作业?

我添加了一个 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……

要杀死wgetkill需要找到的PID wgetps fauxww | grep -A 2 '[C]RON'(或更多2)可能已经向你展示了正确的wget。现在找到wget这种方式可能为时已晚,因为作为一个孤儿进程它被另一个进程采用可能或可能不匹配[C]RON

wgetpidof wget或找到 的 PID ps … | grep [w]get,不要依赖它与 的关系,CROND因为关系可能不再存在。如果有许多wget进程,您可能需要进一步调查才能在众多进程中找到正确的 PID。然后kill它。

期望成功,除非你再次瞄准错误的进程。你之前的尝试没有成功,因为你根本wget没有瞄准。wget

相关内容