rsync
instala un controlador en SIGINT incluso si se ignoró SIGINT al inicio. Entonces, si no desea ^C
detener rsync (Odiaría eso como odio cuando el botón de emergencia no funciona ), debe asegurarse de que SIGINT no se entregue a rsync
.
Así que dígale al controlador de la terminal que no envíe un SIGINT al grupo de procesos en primer plano en ^C
como en la respuesta de @ikkachu , o ponga el proceso que ejecuta ese comando rsync
fuera del proceso en primer plano grupo.
Como todo lo relacionado con el manejo de señales, si funciona o no varía de un shell a otro (y la versión del mismo a veces ).
Lo mejor que puede hacer es quedarse con una implementación conocida que sabe que funciona y esperar que siga funcionando en versiones más nuevas dentro de unos años. Como conzsh
:
#! /usr/bin/env zsh
# enable job control (run pipelines in different process groups)
set -o monitor
interrupted() false
trap 'echo Wait...; interrupted() true' INT
# run in background so it won't get the SIGINT upon ^C
# as it won't be in the foreground process group. Note that with
# version 5.1.1 at least, running it without & will also run in
# in a new process group, and not make it the foreground process
# group of the terminal as the shell is not interactive. However
# the trap would be run asynchronously.
rsync... &
while (($#jobstates)) {wait}
interrupted && exit
echo rest of the script
Интересно.
Так что мое внутреннее чувство было правильным, когда я ссылался на свойства только по имени, что совершенно нормально, посколькуxinput
(делает его более читабельным ).
В вашем случае:
xinput --set-prop "SynPS/2 Synaptics TouchPad" "libinput Tapping Enabled" 1