我正在为我的脚本使用 tor 服务,但出现此错误:
The job identifier is 17084 and the job result is failed.
Şub 26 03:12:11 Ugroon systemd[1]: tor.service: Start request repeated too quickly.
Şub 26 03:12:11 Ugroon systemd[1]: tor.service: Failed with result 'start-limit-hit'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ The unit tor.service has entered the 'failed' state with result 'start-limit-hit'.
Şub 26 03:12:11 Ugroon systemd[1]: Failed to start Anonymizing overlay network for TCP (multi-instance-master).
我正在使用 50 个线程
皮顿代码:
#!/usr/bin/python3
from os import system
from sys import argv
from concurrent.futures import ThreadPoolExecutor
system("service tor start")
def times(p):
if p%15 == 0:
system("service tor restart && ./test.sh " + str(p) + " " + str(argv[1]) + " " + str(argv[2]))
else:
system("./test.sh " + str(p) + " " + str(argv[1]) + " " + str(argv[2]))
for i in range(1000, 10000, 1):
ThreadPoolExecutor(50).submit(times, i)
重击代码:
curl https://www.apple.com/ --socks5-hostname 127.0.0.1:9050 -H "A: $1 $2$3"
我尝试找到 tor 服务的配置文件,但找不到。我查看了 /etc/tor/torrc 文件和 /etc/systemd/system/multi-user.target.wants/ 目录,但找不到速率限制配置。我想每 15 秒更改一次 IP 并使用此 IP 发送curl 请求,但如您所见,我收到了此错误。
另外,我在 /etc/systemd/system/multi-user.target.wants/ 中有此文件: binfmt-support.service cron.servicenetworking.service nfs-client.target rsync.service smartmontools.service virtualbox-guest-utils。服务 console-setup.service ModemManager.service NetworkManager.service remote-fs.target rsyslog.service stunnel.target
注意:我已经在堆栈安全性、askubuntu 和 stackoverflow 上询问过这个问题,但我无法得到答复
编辑:我的实例配置:
日志ctl-xeu[电子邮件受保护]输出:
答案1
阅读完您的评论后,我认为这或多或少可以归结为您如何使用 Tor。 Tor 在其目前的实现中旨在用作多实例服务。当您正在运行时service tor restart
或service tor start
从现在起,tor 似乎不再提供init.d
脚本(这对我来说是新的),您实际上只是被重定向到 systemd 单元文件tor.service
。
该文件旨在作为实例的主文件,在本例中意味着它根本不执行任何操作。正如你可以看到的
ExecStart=/bin/true
ExecReload=/bin/true
它只是执行 /bin/true ,其目的只是以状态 0(在 shell 中为 true)退出。
您需要做的就是运行tor-instance-create <instance name>
这将创建一个新的 Tor 实例。
然后您可以通过以下方式与该服务实例交互
systemctl <stop|start|restart|reload> tor@<instance name>
为了解决你的问题的后半部分,即为什么您收到错误。
如果不运行到服务启动限制,则无法重复重新启动 systemd 服务,这正是最初生成错误的原因。当您使用实例时,这不会改变。
如果尚未配置为这样做,则在创建实例后,您应该进行修改ExecReload
以准确反映您尝试执行的操作(重新启动服务)。
我们这样做是因为与systemctl start tor@<instance name>
and不同systemctl restart tor@<instance name>
,执行systemctl reload tor@<instance name>
对执行次数没有限制。
您可以通过执行来做到这一点systemctl edit tor@<instance name> --full
。您的最终结果可能如下所示:
[Unit]
# ....some preconfigured stuff...
[Service]
# ...more preconfigured stuff...
ExecReload=/bin/kill -HUP ${MAINPID}
# ...preconfigured stuff...
[Install]
# ...final preconfigured stuff...
进行必要的更改(或者如果不需要则不进行)后,您应该修改脚本以利用此更改;
#!/usr/bin/python3
from os import system
from sys import argv
from concurrent.futures import ThreadPoolExecutor
system("systemctl start tor@<instance name>")
def times(p):
if p%15 == 0:
system("systemctl reload tor@<instance name> && ./test.sh " + str(p) + " " + str(argv[1]) + " " + str(argv[2]))
else:
system("./test.sh " + str(p) + " " + str(argv[1]) + " " + str(argv[2]))
for i in range(1000, 10000, 1):
ThreadPoolExecutor(50).submit(times, i)
编辑:如果tor@<instance name>.service
自行配置,Type=oneshot
请在评论中告诉我,我将调整答案