Что происходит, когда я убиваю ‘cp’? Это безопасно и имеет ли это какие-либо последствия?

Каковы последствия для файловой системы ext4, когда я прекращаю копирование команды cp , нажимая Ctrl + C во время ее работы?

Файловая система повреждена? Пространство раздела, занятое неполным скопированным файлом, все еще используется после его удаления?

И, самое главное, безопасное ли завершение процесса cp ?

2 Solutions collect form web for “Что происходит, когда я убиваю ‘cp’? Это безопасно и имеет ли это какие-либо последствия?”

Это безопасно, но, естественно, вы не закончили копирование.

Когда команда cp запущена, она делает системные вызовы, которые инструктируют kernel ​​делать копии файла. Системный вызов – это функция, которую может вызывать приложение, которое запрашивает у ядра службу, такую ​​как чтение или запись данных на диск. Процесс пользовательского пространства просто ожидает завершения системного вызова. Если бы вы отслеживали вызовы, это выглядело бы примерно так:

 open("/home/user/hello.txt", O_RDONLY) = 3 open("/mnt/hello.txt", O_CREAT|O_WRONLY, 0644) = 4 read(3, "Hello, world!\n", 131072) = 14 write(4, "Hello, world!\n", 14) = 14 close(3) = 0 close(4) = 0 

Это повторяется для каждого файла, который нужно скопировать. Никакой коррупции не произойдет из-за того, как работают эти системные вызовы. Когда вводятся подобные системные вызовы, фатальный сигнал вступает в силу только после завершения системного вызова, а не во время его работы. Из-за этого принудительное завершение процесса приведет к его завершению только после завершения текущего запущенного системного вызова. Это означает, что kernel, в котором находится драйвер файловой системы, может свободно завершать операции, которые ему необходимо выполнить, чтобы перевести файловую систему в нормальное состояние. Любой ввод-вывод такого рода никогда не будет завершен в середине операции, что делает их атомарными операциями.

Интересно, что именно поэтому такие команды, как cp могут не завершаться сразу после их уничтожения. Если вы копируете очень большой файл и уничтожаете его, даже с помощью SIGKILL, процесс все равно будет выполняться до завершения текущего системного вызова. С большим файлом это может занять некоторое время, так как процесс будет в непрерывном состоянии.

Поскольку cp является командой пользователя, это не влияет на целостность файловой системы.

Вы, конечно, должны быть готовы к тому, что по крайней мере один файл не будет скопирован полностью, если вы убьете работающую cp программу.

  • Чтение из файла с целочисленными значениями в каждой отдельной строке, а затем при выполнении условия выполнить инструкцию
  • Поиск файлов старше x дней в системе с урезанным занятым ящиком
  • Как скопировать файлы из списка имен файлов и безоговорочно сохранить существующий файл в месте назначения?
  • Как изменить имя файла, например file_name.mt2, на file_name.mt0002?
  • Как установить Samba на Redhat 6, появляется ошибка
  • Interesting Posts

    Нет AirPlay в XBMC на EeePC (Debian)

    Прочитайте два текстовых файла, объедините каждую строку

    Перезапустите процесс, когда я получу stderr из другого процесса

    Линейка приложений для корневого приложения Linux Mint ломается при изменении элементов управления

    Как сохранить исходное расширение после нескольких манипуляций с файлами

    не удалось установить пакеты rpm в gnome3 (openSUSE 12.1)

    Изменить дистрибутив, сохранить программное обеспечение

    Потерянная проблема пробуждения – как UNIX справляется с ней

    Mutt новых уведомлений по электронной почте в окне tmux

    Получение архитектуры Linux из файловой системы / proc

    Отказ "/ opt /" доступа для пользователей SFTP, отличных от определенного каталога

    Как использовать команду netstat

    Текстовый файл занят при копировании некоторых файлов

    Создание пользователей Samba в качестве системных пользователей

    Как мигрировать между двумя ключами в gnome-keyring

    Linux и Unix - лучшая ОС в мире.