LINUX.ORG.RU

Как перезапускать Tor из консоли?

 


0

2

Как перезапускать Tor, который идет в комплекте в TorBrowser?

Раньше, во времена классического Tor, который инсталлировался как сервис, это делалось легко и непринужденно -

service tor restart

А нынешнем TBB примерно похожий результат достигается мышкой в меню «Зеленая луковица» - «Новая личность» (или «Новая цепочка»).

Как хотя бы примерно такой же результат получить в консоли?
Или как перезапускать в консоли?

★★★★★

Ответ на: комментарий от Zmicier

Парни, хотелось бы сначала получить ответы на мой вопрос.
А уж за мной потом не заржавеет :)

chukcha ★★★★★
() автор топика

apt-yum emerge tor, например, рядом поставить этот их torbrowser и перезапускать это всё как твоей душе угодно.

NeverLoved ★★★★★
()
Ответ на: комментарий от NeverLoved

apt-yum emerge tor, например, рядом поставить этот их torbrowser и перезапускать это всё как твоей душе угодно.

Да, но это значит поставить еще один Tor.
А я интересуюсь, как перезапускать Tor, который уже идет в комплекте с TBB.

SIGHUP

Кильнуть, что ли? Так это как молотком по голове, а я интересуюсь мягким, гуманным способом - перезапуском.

chukcha ★★★★★
() автор топика

Tor, который идет в комплекте в TorBrowser

Поставить тор отдельно и не заниматься фигнёй.

Radjah ★★★★★
()
Ответ на: комментарий от anonymous

А без тыканья в ман сумеешь подсказать?

chukcha ★★★★★
() автор топика
Ответ на: комментарий от Radjah

Воооот, а теперь подскажи, пожалуйста, что происходит при таком килянии?

Команда kill мне знакома, пользуюсь, но вот что конкретно происходит при ее выполнении?
Вот висит в памяти некий объем, в котором выполняется некая программа.
Выполняем kill - программа что, улетучивается? Так же не бывает.
И куда девается занимаемый ею объем памяти? Если остается, то при таком килянии каждый раз он будет все больше и больше, пока ен сожрет всю память.

Мне кажется, что метод kill хорош только для зависших программ, когда терять уже нечего, а вот когда нужно корректно перезапустить нормально работающую программу, его использование будет некорректным.

chukcha ★★★★★
() автор топика
Ответ на: комментарий от chukcha

Во-первых, да, «улетучивается». Процесс исчезает. Дальше его кто-нибудь перезапустит. Почитай про то, что такое процесс.

Во-вторых, тебе предлагают отправить tor'у сигнал SIGHUP, а не SIGTERM. Конкретно для Tor'а этот сигнал означает «перечитать конфиг, перестроить цепочки и получить новый identity». Почитай про то, что такое kill() и что такое сигнал.

Следовательно, ответ на твой вопрос, переформулированный как «как пнуть инстанс Tor'а, PID которого не знаем»: pkill -SIGHUP tor.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Конкретно для Tor'а этот сигнал означает «перечитать конфиг, перестроить цепочки и получить новый identity».

Вроде как гуманное обращение с процессом.
Хоролшо, а что происходит с процессом, который был запущен как сервис, при команде

service tor restart

- то же самое, что SIGHUP, или что-то другое? Или в основе restart лежит тот же kill?

Попробовал выполнить $ pkill -SIGHUP tor
Сначала под тем же юзером, под которым был запущен TorBrowser, вроде логично?
Но получилось следующее:

pkill: 2529 - Operation not permitted
pkill: 2567 - Operation not permitted
pkill: 3079 - Operation not permitted
pkill: 3484 - Operation not permitted
pkill: 3788 - Operation not permitted
pkill: 4533 - Operation not permitted
Что же получается - pkill вообще не способен работать под юзером, или как это понять?

Ладно, запускаю его под рутом.
Теперь он выполнилась успешно, т.е. молча.
Но увы, Tor и ухом на это не повел - цепочки сохранились, полученный IP остался прежним :(
Так что вопросы остались...

chukcha ★★★★★
() автор топика
Ответ на: комментарий от chukcha

Хоролшо, а что происходит с процессом, который был запущен как сервис, при команде service tor restart

$ cat /etc/init.d/tor
#! /bin/bash

### BEGIN INIT INFO
# Provides:          tor
# Required-Start:    $local_fs $remote_fs $network $named $time
# Required-Stop:     $local_fs $remote_fs $network $named $time
# Should-Start:      $syslog
# Should-Stop:       $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Starts The Onion Router daemon processes
# Description:       Start The Onion Router, a TCP overlay
#                    network client that provides anonymous
#                    transport.
### END INIT INFO

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
. /lib/lsb/init-functions

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/tor
NAME=tor
DESC="tor daemon"
TORLOGDIR=/var/log/tor
TORPIDDIR=/var/run/tor
TORPID=$TORPIDDIR/tor.pid
DEFAULTSFILE=/etc/default/$NAME
WAITFORDAEMON=60
DEFAULT_ARGS="--defaults-torrc /usr/share/tor/tor-service-defaults-torrc"
VERIFY_ARGS="--verify-config $DEFAULT_ARGS"
USE_AA_EXEC="yes"
ARGS=""
if [ "${VERBOSE:-}" != "yes" ]; then
	ARGS="$ARGS --hush"
fi

# Let's try to figure our some sane defaults:
if [ -r /proc/sys/fs/file-max ]; then
	system_max=`cat /proc/sys/fs/file-max`
	if [ "$system_max" -gt "80000" ] ; then
		MAX_FILEDESCRIPTORS=32768
	elif [ "$system_max" -gt "40000" ] ; then
		MAX_FILEDESCRIPTORS=16384
	elif [ "$system_max" -gt "10000" ] ; then
		MAX_FILEDESCRIPTORS=8192
	else
		MAX_FILEDESCRIPTORS=1024
		cat << EOF

Warning: Your system has very few filedescriptors available in total.

Maybe you should try raising that by adding 'fs.file-max=100000' to your
/etc/sysctl.conf file.  Feel free to pick any number that you deem appropriate.
Then run 'sysctl -p'.  See /proc/sys/fs/file-max for the current value, and
file-nr in the same directory for how many of those are used at the moment.

EOF
	fi
else
	MAX_FILEDESCRIPTORS=8192
fi

NICE=""

test -x $DAEMON || exit 0

# Include tor defaults if available
if [ -f $DEFAULTSFILE ] ; then
	. $DEFAULTSFILE
fi

wait_for_deaddaemon () {
	pid=$1
	sleep 1
	if test -n "$pid"
	then
		if kill -0 $pid 2>/dev/null
		then
			cnt=0
			while kill -0 $pid 2>/dev/null
			do
				cnt=`expr $cnt + 1`
				if [ $cnt -gt $WAITFORDAEMON ]
				then
					log_action_end_msg 1 "still running"
					exit 1
				fi
				sleep 1
				[ "`expr $cnt % 3`" != 2 ] || log_action_cont_msg ""
			done
		fi
	fi
	log_action_end_msg 0
}


check_torpiddir () {
	if test ! -d $TORPIDDIR; then
		mkdir -m 02750 "$TORPIDDIR"
		chown debian-tor:debian-tor "$TORPIDDIR"
		! [ -x /sbin/restorecon ] || /sbin/restorecon "$TORPIDDIR"
	fi

	if test ! -x $TORPIDDIR; then
		log_action_end_msg 1 "cannot access $TORPIDDIR directory, are you root?"
		exit 1
	fi
}

check_torlogdir () {
	if test ! -d $TORLOGDIR; then
		mkdir -m 02750 "$TORLOGDIR"
		chown debian-tor:adm "$TORLOGDIR"
		! [ -x /sbin/restorecon ] || /sbin/restorecon "$TORPIDDIR"
	fi
}


check_config () {
	if ! $DAEMON $VERIFY_ARGS > /dev/null; then
		log_failure_msg "Checking if $NAME configuration is valid"
		$DAEMON $VERIFY_ARGS >&2
		exit 1
	fi
}


case "$1" in
  start)
	if [ "$RUN_DAEMON" != "yes" ]; then
		log_action_msg "Not starting $DESC (Disabled in $DEFAULTSFILE)."
		exit 0
	fi

	if [ -n "$MAX_FILEDESCRIPTORS" ]; then
		[ "${VERBOSE:-}" != "yes" ] || log_action_begin_msg "Raising maximum number of filedescriptors (ulimit -n) for tor to $MAX_FILEDESCRIPTORS"
		if ulimit -n "$MAX_FILEDESCRIPTORS" ; then
			[ "${VERBOSE:-}" != "yes" ] || log_action_end_msg 0
		else
			[ "${VERBOSE:-}" != "yes" ] || log_action_end_msg 1
		fi
	fi

	check_torpiddir
	check_torlogdir
	check_config

	log_action_begin_msg "Starting $DESC"

	if start-stop-daemon --stop --signal 0 --quiet --pidfile $TORPID --exec $DAEMON; then
		log_action_end_msg 0 "already running"
	else
		if [ "$USE_AA_EXEC" = "yes" ] &&
		   [ -x /usr/sbin/aa-status ] && \
		   [ -x /usr/sbin/aa-exec ] && \
		   [ -e /etc/apparmor.d/system_tor ] && \
		   /usr/sbin/aa-status --enabled ; then
			AA_EXEC="--startas /usr/sbin/aa-exec"
			AA_EXEC_ARGS="--profile=system_tor -- $DAEMON"
		else
			AA_EXEC=""
			AA_EXEC_ARGS=""
		fi
		if start-stop-daemon --start --quiet \
			--pidfile $TORPID \
			$NICE \
			$AA_EXEC \
			--exec $DAEMON -- $AA_EXEC_ARGS $DEFAULT_ARGS $ARGS
		then
			log_action_end_msg 0
		else
			log_action_end_msg 1
			exit 1
		fi
	fi
	;;
  stop)
	log_action_begin_msg "Stopping $DESC"
	pid=`cat $TORPID 2>/dev/null` || true

	if test ! -f $TORPID -o -z "$pid"; then
		log_action_end_msg 0 "not running - there is no $TORPID"
		exit 0
	fi

	if start-stop-daemon --stop --signal INT --quiet --pidfile $TORPID --exec $DAEMON; then
		wait_for_deaddaemon $pid
	elif kill -0 $pid 2>/dev/null; then
		log_action_end_msg 1 "Is $pid not $NAME?  Is $DAEMON a different binary now?"
		exit 1
	else
		log_action_end_msg 1 "$DAEMON died: process $pid not running; or permission denied"
		exit 1
	fi
	;;
  reload|force-reload)
	check_config

	log_action_begin_msg "Reloading $DESC configuration"
	pid=`cat $TORPID 2>/dev/null` || true

	if test ! -f $TORPID -o -z "$pid"; then
		log_action_end_msg 1 "not running - there is no $TORPID"
		exit 1
	fi

	if start-stop-daemon --stop --signal 1 --quiet --pidfile $TORPID --exec $DAEMON
	then
		log_action_end_msg 0
	elif kill -0 $pid 2>/dev/null; then
		log_action_end_msg 1 "Is $pid not $NAME?  Is $DAEMON a different binary now?"
		exit 1
	else
		log_action_end_msg 1 "$DAEMON died: process $pid not running; or permission denied"
		exit 1
	fi
	;;
  restart)
	check_config

	$0 stop
	sleep 1
	$0 start
	;;
  status)
	if test ! -r $(dirname $TORPID); then
		log_failure_msg "cannot read PID file $TORPID"
		exit 4
	fi
	pid=`cat $TORPID 2>/dev/null` || true
	if test ! -f $TORPID -o -z "$pid"; then
		log_failure_msg "$NAME is not running"
		exit 3
	fi
	if ps "$pid" >/dev/null 2>&1; then
		log_success_msg "$NAME is running"
		exit 0
	else
		log_failure_msg "$NAME is not running"
		exit 1
	fi
	;;
  *)
	log_action_msg "Usage: $0 {start|stop|restart|reload|force-reload|status}" >&2
	exit 1
	;;
esac

exit 0
Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от chukcha

И зачем вам Тор, который идет идет в комплекте с Торбраузером?

хотелось бы сначала получить ответы на мой вопрос.

Не все вопросы одинаково полезны.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

А теперь прокомментируй все это, пожалуйста :)

chukcha ★★★★★
() автор топика
Ответ на: комментарий от Esteban_Garcia

Зачем тебе перезапускать?

Есть такое слово - надо! :)

Вот чего нашел после ваших убийственных килов - команду jobs
Которая умеет как мягко останавливать, так и возобновлять процесс.
Что скажете?

chukcha ★★★★★
() автор топика
Ответ на: комментарий от chukcha

Нет, jobs тоже не катит.
Ваш kill во всех ипостасях - тоже, потому что tor после kill хоть и останавливается, но сам не стартует, для этого нужно нажать мышкой в возникшем окне об аварии на «перезапустить».

Так что, дорогие лоровцы, ни одно ваше предложение пока не проконало :(

chukcha ★★★★★
() автор топика
Ответ на: комментарий от chukcha

Хоролшо, а что происходит с процессом, который был запущен как сервис, при команде
service tor restart
- то же самое, что SIGHUP, или что-то другое? Или в основе restart лежит тот же kill?

В основе restart может лежать всё что угодно — при этой команде просто выполняется соответствующая часть init-скрипта нужного сервиса.

Что же получается - pkill вообще не способен работать под юзером, или как это понять?

Это означает, что некоторые экземпляры tor запущены не от текущего пользователя. Задача так поставлена, что выбрать конкретный экземпляр нельзя, можно только прибить всех.

Ладно, запускаю его под рутом.
Теперь он выполнилась успешно, т.е. молча.
Но увы, Tor и ухом на это не повел - цепочки сохранились, полученный IP остался прежним :(
Так что вопросы остались...

-HUP не помог? Ну тогда пардон, какой-то неправильный тор. Нужно искать, где его сокет, и писать в этот сокет запрос на перезагрузку.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)

А смотрели в сторону stem? С демоном работает отлично...

FIL ★★★★
()
Ответ на: комментарий от intelfx

-HUP не помог? Ну тогда пардон, какой-то неправильный тор.

Да, несколько раз проверял, но увы...

Нужно искать, где его сокет, и писать в этот сокет запрос на перезагрузку

И как его искать?

stem - а что это? гуголь находит только steam, игрухи

chukcha ★★★★★
() автор топика
Ответ на: комментарий от anonymous_sama

Гм! Даже в репах Центоса-6 нашлось! :)
Но вот ни разу не слышал о таком контроллере, хотя торами интересуюсь
Будь добр, если не трудно, опиши кратко, что это за зверушка такая и что она дает?

chukcha ★★★★★
() автор топика
Ответ на: комментарий от chukcha

Из конфига:

## The port on which Tor will listen for local connections from Tor
## controller applications, as documented in control-spec.txt.
#ControlPort 9051
Потом коннектитьшься к порту telnet'ом и посылаешь сигнал NEWNYM, после того как настроишь, в интернете должны быть примеры, если конфиг у тебя пустой.

anonymous_sama ★★★★★
()
Последнее исправление: anonymous_sama (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.