Как начать, остановить и перезапустить rtorrent?

Вы уже используете правый Alt?

Вы можете сопоставить его с клавишей Alt в настройках Gnome:

System-> Preferences-> Keyboard Параметры макета ... Управление клавишами Alt / Win Left Alt заменяется на Left Win

Или вы можете сопоставить Caps Lock с ключом Windows и выбрать другой ярлык для смены языков.

На той же панели управления:

System-> Preferences-> Keyboard Сделайте CapsLock дополнительным Super (или Make CapsLock дополнительным Hyper)

, а затем:

Сделайте CapsLock дополнительным Super (или Make CapsLock дополнительным Hyper) Макеты

В общий выбор входят:

Left Alt + Left Shift Left Ctrl + Left Shift Параметры ...

, но, будучи пользователем Emacs, я предлагаю вариант Both Ctrl keys together.

Если этих параметров недостаточно, вам нужно будет использовать xmodmap.

Вы можете отобразить правую Caps Lock в Windows на оболочка такая:

xmodmap -e 'remove control = Control_R'
xmodmap -e 'add Mod4 = Control_R'

Зависит в вашей системе вы также можете поместить эквивалентные настройки в .Xmodmap, например

.Xmodmap

remove control = Control_R'
add Mod4 = Control_R'

Если вы предпочитаете использовать xmodmap, чем Gnome панели управления, вы можете изменить Control_R на что-то еще, например, Windows - это Alt_R или ISO_Level3_Shift, в зависимости от настроек вашей клавиатуры, например

xmodmap -e 'remove ISO_Level3_Shift = Mod5'
xmodmap -e 'add Mod4 = ISO_Level3_Shift'
[d46 ] работает для меня.

1
задан 20 August 2017 в 10:38

1 ответ

Принимаемый ответ правильный, но не указывает, как выполнить «безопасное» завершение работы службы rtorrent со скриптом службы systemctl.

Большинство существующих ответов или скриптов «убивают» либо сеанс экрана или сам процесс rtorrent. При этом они посылают сигнал SIGINT (2) (1) или SIGQUIT (3), который останавливает / убивает процесс rtorrent. Недостатком является то, что обычно файл блокировки rtorrent не удаляется, потому что rtorrent не был закрыт должным образом. Следовательно, следующий запуск rtorrent завершился неудачей из-за постоянного файла блокировки.

Взглянув на исходный код rtorrent ( 1 ) показывает, что он ожидает a SIGTERM (15). Следовательно, учитывая скрипт службы systemctl, команда останова может выглядеть так:

$ ExecStop=/usr/bin/kill -s 15 \`pidof rtorrent`

Если pidof недоступно, вы также можете использовать что-то вроде:

$ ps -A | grep "rtorrent" | awk '{print $1}'
ps перечисляет текущие процессы. grep извлекает детали процесса rtorrent. awk выбирает pid и выводит его на stdout

. Если вам нужно дождаться завершения работы, вы можете использовать killall -w , Обратите внимание, что:

killall может ждать всегда, если сигнал был проигнорирован, не имел никакого эффекта или процесс находился в состоянии зомби (источник: man killall).
3
ответ дан 24 May 2018 в 20:31
  • 1
    kill -s 15 `pidof rtorrent` может быть проще killall rtorrent (15 или SIGTERM - сигнал по умолчанию, отправленный kill и killall). – David Foerster 25 July 2016 в 14:24
  • 2
    Кроме того, где в signal_handler.cc вы видите, что rtorrent ожидает, что SIGTERM прекратит себя изящно? Я вижу только код управления сигнальным генератором сигналов, но никаких активных обработчиков сигналов. – David Foerster 25 July 2016 в 14:30
  • 3
    Не должно быть: /usr/bin/kill -n 15 `pidof rtorrent` или /usr/bin/kill -s SIGTERM \$(pidof rtorrent)? Вы смешиваете имена и номера сигналов. - Из man kill, kill -l фактически предоставит вам список имен сигналов и соответствующих кодов сигналов. - Также обратите внимание, что хотя обратные тики, как и в `cmd`, официально не устарели, я прочитал, что $(cmd) на самом деле предпочтительнее. – Cbhihe 25 July 2016 в 15:38
  • 4
    Не забывайте о pgrep :) Команда pgrep rtorrent возвращает только PID, поэтому нет необходимости в конвейере или синтаксическом анализе – Zanna 20 August 2017 в 10:43

Другие вопросы по тегам:

Похожие вопросы: