내 스크립트에 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를 사용하여 컬 요청을 보내고 싶은데 보시다시피 이런 오류가 발생합니다.
또한 /etc/systemd/system/multi-user.target.wants/: binfmt-support.service cron.servicenetworking.service nfs-client.target rsync.service smartmontools.service virtualbox-guest-utils 에 이 파일이 있습니다. 서비스 콘솔-setup.service ModemManager.service NetworkManager.service 원격-fs.target rsyslog.service stunnel.target
참고: 스택 보안, askubuntu 및 stackoverflow에 대해 이 질문을 했지만 답변을 받을 수 없습니다.
편집: 내 인스턴스 구성:
logctl-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(셸에서는 true)으로 종료하는 것입니다.
당신이 해야 할 일은 tor-instance-create <instance name>
이것을 실행하여 새로운 Tor 인스턴스를 생성하는 것뿐입니다.
그런 다음 다음을 통해 해당 서비스 인스턴스와 상호 작용할 수 있습니다.
systemctl <stop|start|restart|reload> tor@<instance name>
질문의 후반부를 해결하려면, 즉왜 오류가 발생합니까?.
서비스 시작 제한까지 실행하지 않고는 systemd 서비스를 반복적으로 다시 시작할 수 없기 때문에 처음에 오류가 생성되었습니다. 이는 인스턴스를 사용해도 변경되지 않습니다.
아직 구성하지 않은 경우 인스턴스를 생성한 후 ExecReload
수행하려는 작업(서비스 다시 시작)을 정확하게 반영하도록 수정해야 합니다.
systemctl start tor@<instance name>
및 와 달리 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
댓글로 알려주시면 답변 조정하겠습니다