Systemd:service.torが早すぎます。

Systemd:service.torが早すぎます。

私のスクリプトに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についてこの質問をしましたが、答えを受け取ることはできません。

編集:私のインスタンスの設定:

図1

図2

logctl-xeu[Eメール保護]出力:

ここに画像の説明を入力してください。

ベストアンサー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コメントでお知らせください。回答を調整します。

おすすめ記事