Как отменить следующую работу в порядке после rsync

Если два задания вводятся в командную строку 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
1
задан 11 July 2015 в 11:27

1 ответ

Убейте родительский процесс job1 с помощью SIGKILL.

Покажите процессы в дереве процессов, например. с htop или ps axf и убить родительский процесс , а не сам job1.

Установить htop с

sudo apt-get install htop

Downvoters, поймите ответ перед downvoting

4
ответ дан 23 May 2018 в 19:24
  • 1
    Это вызовет бедствие, о котором я говорил, я проверил это на своем домашнем ПК, убив идентификатор процесса, фактически выполнит вторую команду, поэтому это не очень хороший совет. – Mike 29 June 2015 в 08:19
  • 2
    Родительский процесс job1, а не job1 – A.B. 29 June 2015 в 08:24
  • 3
    @Mike Это также действительное решение, что A.B означает убить родителя job1, а не job1 – Maythux 29 June 2015 в 08:30
  • 4
    Я просто пытался убить родительскую работу только сейчас, чтобы убедиться, что я проверяю вашу теорию, она снова выключается, действительно ли это работает на вашей машине? Ваш ответ был моим первым выбором сегодня утром, когда я узнал, но из моего предыдущего опыта я пытался, если сначала на моем ПК, а вторая команда просто выполняется. – Mike 29 June 2015 в 08:53
  • 5
    В самом деле, это работает, НО: вы должны убить родительский процесс с помощью SIGKILL, а не с помощью SIGTERM, иначе он не будет убит, а второе задание будет выполнено после завершения первого. BTW, вам не нужны htop или любые другие дополнительные пакеты для просмотра дерева процессов, просто ps axf. – Ruslan 29 June 2015 в 10:42

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

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