(Это отвечает на более раннюю версию вопроса, которая сильно отличалась из-за отсутствия одного символа. Вторая команда была fg && command4 & error_command5 && command6
изначально , и оказалось, что это действительно имелось в виду как fg && command4 && неверная_команда5 && command6
. Это отвечает на старый вопрос с помощью фоновой команды, см. другие ответы для нового варианта вопроса)
Команда, которая вы хотите отменить, запущен на переднем плане, и он также "связан" со следующей командой &&
. Если он хорошо себя ведет на ^ C
и завершает работу с ненулевым статусом, все в порядке:
Чтобы упростить примеры, я разделю эту строку:
$ fg && command4 & wrong_command5 && command6
на эквивалентные строки:
$ fg && command4 &
$ wrong_command5 && command6
Нам нужно выйти из программы переднего плана error_command5
, и это легко сделать с помощью ^ C
.
Затем мы перечисляем фоновые задания, чтобы увидеть, какое из них мы хотим дождаться.
Идентификатор задания используется со встроенной командой wait
для ожидания завершения задания.
Мы используем wait
в качестве начала списка, который запускает команду замены, а затем используемую ранее команду.
$ command1 && command2 && command3
Running command1 ...
Running command2 ...^Z
[1]+ Stopped
$ fg && command4 &
$ wrong_command5 && command6
^C
$ jobs
[1] - running command3
[2] + running command4
$ wait %2 && right_command5 && command6
Если неправильная_команда5
плохо себя ведет при получении ^ C
с клавиатуры, но для другого сигнала вы можете использовать kill
вместо ^ C
вот так:
$ fg && command4 &
$ wrong_command5 && command6
[1] 14407
^Z
[2] + 14408 suspended wrong_command5
$ jobs
[1] - running command3
[2] + running command4
[3] suspended wrong_command5
$ kill %2
[2] + 14408 terminated wrong_command5
$ wait %2 && right_command5 && command6
У меня та же проблема. Я не уверен насчет причины, но мне удалось дефрагментировать и сжать, указав по одному подкаталогу за раз, например,
sudo btrfs filesystem defragment -r -clzo /var
Обратите внимание, что я делал это на работающей файловой системе. Кроме того, проблема вызвана опцией -r (будь то дефрагментация / или подкаталог)
.У меня была похожая проблема со свежей установкой Ubuntu 15.04, и решением было то, что PATH
, который вы даете, должен быть точкой монтирования тома BTRFS для дефрагментации.
Например, у меня есть sda3
, смонтированный как @home
на /home
, и следующая команда не работает:
$ sudo btrfs файловая система дефрагмента -r -clzo $HOME
ОШИБКА: диапазон дефрагментации ioctl не поддерживается в этом ядре, пожалуйста, попробуйте без каких-либо опций.
однако, следующая работа
sudo btrfs файловая система defragment -r -clzo /home