Как снять блокировку автоматически после нажатия Ctrl + Z?

По какой-то причине мы прекращаем установку пакета через apt-get, нажимая ctrl + z , он создает файл блокировки внутри каталогов /var/lib/dpkg/ и /var/cache/apt/archives/ .

И после этого, если мы хотим установить другой или такой же пакет через apt-get, нам нужно вручную снять блокировку, выполнив эти две команды sudo rm /var/lib/dpkg/lock и sudo rm /var/cache/apt/archives/lock, чтобы произошла установка.

Мой вопрос : есть ли способ автоматически удалить файлы блокировки, которые были созданы после нажатия ctrl + z , чтобы мы не Не нужно удалять файлы блокировки вручную.

2
задан 3 January 2014 в 09:29

2 ответа

Нет,

Поскольку программа не может перехватить SIGSTOP (отправлено Ctrl + Z )

Кому процитируйте соответствующие части signal(7) Manpage icon :

Signal     Value     Action   Comment
───────────────────────────────────────────
SIGSTOP   17,19,23    Stop    Stop process

The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.

Поэтому, если вы остановите программу с помощью Ctrl + Z и закройте терминал, у него нет шансов выполнить очистку (например: удаление файлов блокировки).
Ctrl + Z не следует использовать, если вы намерены отменить операцию, используйте ее только в том случае, если вы намерены приостановить программу и возобновить ее (или закройте его аккуратно) позже.

Таким образом, Ctrl + C должен использоваться для завершения процессов, потому что программа может перехватить этот сигнал и завершить работу корректно.

Хотя в случае apt-get нажатие Ctrl + C оставит файлы блокировки позади, но завершит процесс. Это означает, что файлы блокировки могут быть удалены, но менеджер пакетов может остаться в несогласованном состоянии, если вы завершили его в критической точке.

На самом деле не существует безопасной опции для чистого завершения apt-get во время установки / обновления пакетов, но отмена (Ctrl-C, затем удаление файлов блокировки) во время загрузки должна быть в порядке.

0
ответ дан 3 January 2014 в 09:29

Никогда не удаляйте блокировку вручную. ( Почему? )

Лучший способ - возобновить процесс, а не удалить блокировку. Созданная блокировка гарантирует, что другие экземпляры apt не будут запущены одновременно.

Ctrl + Z приостанавливает процесс. Чтобы вернуть его на передний план и продолжить выполнение, введите

fg

. Это позволит apt продолжить то, что он делал, и завершить процесс. Чтобы остановить выполнение apt, вам нужно убить его, используя Ctrl + C . Это также снимет блокировку.

См. Также:

0
ответ дан 3 January 2014 в 09:29

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

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