Если два задания вводятся в командную строку bash, разделенные точкой с запятой:
$ job 1; job 2;
Как отменить второй? Если я нажму CTRL + c, первый будет отменен и начнется «задание 2», я просто хочу, чтобы второе задание не выполнялось. Я пробовал atq, ps, но не повезло, с ps -ef я вижу только «job 1», но «job 2» не указан, поэтому я не могу заставить PID использовать kill. Я знаю, что могу использовать & amp; & amp; вместо ; но сейчас уже слишком поздно, я запускал эту команду случайно на моем сервере вместо моего домашнего ПК, и теперь я пытаюсь выяснить, как предотвратить катастрофу.
Эта проблема специфична для команды rsync, за которой следует другая команда:
$ rsync ..... ; sudo shutdown -h now
Процесс убийства по идентификатору или его убийство не будет работать.
После нескольких часы тестирования, я изолировал его от rsync, другие команды, которые я могу завершить с помощью CTRL + c в разных порядках, но не если они выполняются после некоторых команд, таких как rsync или ping, я пробовал разные версии Ubuntu , ядра, сервер без пользователя sudo, и я мог бы воспроизвести его повсюду, лучший способ избежать этой проблемы - использовать & amp; & amp; после выполнения rsync выполнить следующую команду только при успешном выполнении exitcode 0:
$ rsync .... && job 2
Убейте родительский процесс job1 с помощью SIGKILL.
Покажите процессы в дереве процессов, например. с htop или ps axf и убить родительский процесс , а не сам job1.
Установить htop с
sudo apt-get install htop
Downvoters, поймите ответ перед downvoting