Если два задания вводятся в командную строку удара, разделенную точкой с запятой:
$ job 1; job 2;
Как я отменяю второй? Если я нажму CTRL+c, то первый будет отменен, и 'задание 2' запустилось бы, я просто хочу остановить вторую работу, которая не будет выполняться. Я попробовал atq, PS, но никакая удача, с PS-ef I не видит только 'задания 1', но 'задания 2', не перечислен, таким образом, я не могу добраться, PID для использования уничтожают. Я знаю, что могу использовать && вместо; но слишком поздно теперь, я выполнил эту команду случайно на моем сервере вместо моего домашнего ПК, и теперь я пытаюсь выяснить, как предотвратить аварию.
Эта проблема характерна для команды rsync, сопровождаемой другой командой:
$ rsync ..... ; sudo shutdown -h now
При уничтожении процесса идентификатором или уничтожении это - родитель, не будет работать.
После нескольких часов тестирования я изолировал его к rsync, другие команды, которые я могу завершить с CTRL+c в различных заказах, но не, если они после некоторых команд как rsync или ping, я попробовал различные версии Ubuntu, ядра, сервер без sudo пользователя и я мог воспроизвести его везде, лучший способ избежать, чтобы эта проблема состояла в том, чтобы использовать && после rsync для выполнения следующей команды только на коде выхода 0 успеха:
$ rsync .... && job 2
Я думаю, что вы что-то упустили. Когда вы запускаете две команды, разделенные ;
, вы можете убить обе команды с помощью CTRL kbd> + c kbd>.
просто чтобы убедиться, попробуйте эту команду:
find / -name a ; ls /home
Затем убейте вышеупомянутые команды с помощью CTRL kbd> + c kbd>, это убьет оба процесса, Вы не будете перечислять ваш домашний контент. Т.е. следующая команда не будет запущена.
ОБНОВЛЕНИЕ: Это также будет действовать для вашей команды rsync
. Вот мой пример:
$ rsync -avz /var/cache/apt/archives/ /tmp/backups/ ; sudo shutdown -h now
sending incremental file list
created directory /tmp/backups
./
authbind_1.2.0build3_amd64.deb
................
^Crsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(549) [sender=3.0.9]
[sudo] password for user:
Так, как вы видите выше. Когда вы запускаете CTRL kbd> + c kbd>, это убивает первую команду и при запуске shudown будет запросить у вас пароль sudo
, чтобы вы могли теперь убить второй процесс, снова используя CTRL kbd> + c kbd>.
Обновление 2 В качестве решения проблемы вы можете сделать:
sudo
, а затем снова сделайте sudo
запрос пароля редактирование файла sudoer sudo visudo
/sbin/shutdown
, чтобы удалить +x
, или просто переименуйте ее под другим именем. Убить родительский процесс job1 с помощью SIGKILL
.
Показать процессы в дереве процессов, например. с помощью htop
или ps axf
и уничтожьте родительский процесс для job1 , а не для самого job1.
Установите htop
с
sudo apt-get install htop
Downvoters, поймите ответ перед понижением