Linux посмотреть процесс копирования

How to check progress of running cp?

Is it possible to check the progress of running cp process? Some processes respond to various KILL signals so that you can check what is their status. I know that I can run cp with parameter -v but what if forgot to do that, cp is running for a very long time and I want to know which file is being copied, or how many were already copied.

Most solutions (on Linux and probably other POSIX, like Mac OS X) get off-track when read operations are much faster than write operations, displaying 100% far before the actual completion. The reason is write operations sit in filesystem cache before they are actually performed. At that point, things are difficult to track. This trick may reduce the gap: in another terminal while sleep 1 ; do sync ; done .

15 Answers 15

On recent versions of Mac OS X you can just hit CTRL + T to see progress. From the OSX 10.6 man page for cp(1):

 "If cp receives a SIGINFO (see the status argument for stty(1)) signal, the current input and output file and the percentage complete will be written to the standard output." 

Hitting CTRL + T is equivalent to signaling the current process with SIGINFO on BSD-ish machines, including OSX.

I don’t think Linux has this SIGINFO mechanism, and don’t see anything in the GNU man page for cp(1) about signals that can be used to report progress.

It only tells you the percent complete for the individual file that it is copying when it receives the signal. It does not give the percent complete of the entire job it is doing.

If the process is running in the background, kill -s SIGINFO works as well. Tested on FreeNAS, but it should apply to macOS as well.

For Linux Users: stuff-things.net/2016/04/06/… says: «The trick is this, by sending the dd process SIGUSR1 (Linux) or SIGINFO (BSD, OS X), you can get it to display a version of the “final” status at any time.» The author uses two variations: kill -SIGUSR1 13747 and kill -USR1 $dd_pid

WARNING: Sending SIGUSR1 on Linux may work with ‘dd’, but for ‘cp’ it killed the process, outputting «User defined signal 1» as it died.

Yes, by running stat on target file and local file, and get a file size,

And you get the percentage of data copied by comparing the two value, that’s it

In a very basic implementation that will look like this:

function cpstat() < local pid="$<1:-$(pgrep -xn cp)>" src dst [[ "$pid" ]] || return while [[ -f "/proc/$pid/fd/3" ]]; do read src dst < <(stat -L --printf '%s ' "/proc/$pid/fd/"<3,4>) (( src )) || break printf 'cp %d%%\r' $((dst*100/src)) sleep 1 done echo > 

on linux 4, cp’ing from one fast usb drive to a cheap micro sd on a old card reader a 500mb file: cp and sync hangs for several dozen minutes. but if I stat the source and destination file I get the exact same number on both 10s after cp started.

Answer is ok but downvoting as it’s the accepted answer but not obvious the approach works when copying tens of thousands of small files where as this answer does: unix.stackexchange.com/a/102133/29407

When you’re copying a lot of files, du -s /path/to/destination or find /path/to/destination | wc -l gives you an idea of how much has already been done.

You can find out which file is being copied with lsof -p1234 where 1234 is the process ID of cp . Under many systems, pgrep -x cp reports the process IDs of all running processes named cp . This may not be very useful as the order in which the files inside a given directory are copied is essentially unpredictable (in a large directory under Linux, ls —sort=none will tell you; with a directory tree, try find ).

lsof -p1234 also tells you how many bytes cp has already read and written for the current file, in the OFFSET column.

Under Linux, there are IO usage statistics in /proc/$pid/io (again, use the PID of the cp process for $pidf ). The rchar value is the total number of bytes that the process has read, and wchar is the number of bytes that the process has written. This includes not only data in files but also metadata in directories. You can compare that figure with the approximate figure obtained with du /path/to/source (which only counts file data). read_bytes and write_bytes only include what has been read or written from storage, i.e. it excludes terminal diagnostics and data already in cache or still in buffers.

Источник

How to Use DD Show Progress Command in Linux?

Home » SysAdmin » How to Use DD Show Progress Command in Linux?

The dd command-line utility is used to convert and copy files on Unix and Unix-like operating systems. By default, the dd command doesn’t show any output while transferring files.

This could be problematic when copying large files since you cannot monitor the process.

In this tutorial, you will learn how to use the dd command to show progress.

How to Use dd show progress command in linux

  • A system running Linux
  • A user account with sudo or root privileges
  • Access to a terminal window / command line
  • GNU Coreutils version 8.24 or above

Check dd Version

To see the progress bar while copying files and directories with the dd command, you need a version of dd (coreutils) no older than 8.24. Check the version with the command:

Check Coreutils version.

At the time of writing, the latest version of dd (coreutils) is 8.30 as seen in the image above.

Note: If you need to install coreutils, run: sudo apt-get install -y coreutils .

Option 1: Use the dd Command to Show Progress

The basic syntax for using the dd command is:

dd if=/path/to/input of=/path/to/output

However, the default settings do not show a progress bar or any output while the process is taking place.

To see the progress bar, add the status=progress attribute to the basic command:

dd if=/path/to/input of=/path/to/output status=progress

While the system is copying the specified file, it shows the amount of data that has been copied and the time elapsed.

dd command showing progress while copying a file.

Once the process is complete, the terminal displays the total amount of data transferred and the time duration of the process.

Output from dd command showing the process has completed.

Option 2: Use dd Command with pv to Show Progress

The pv command allows a user to see the progress of data through a pipeline. You can use it with the dd command to show the progress of a specified task.

To do so, you need to install pv.

On Ubuntu/Debian systems run:

On CentOS/Redhat systems run:

Install pv on Ubuntu.

To use pv with the dd command follow the syntax:

dd if=/path/to/input | pv | dd of=/path/to/output

After reading this article, you should know how to show progress while running the dd command, with or without the pv command.

Download a free copy of Linux Commands Cheat Sheet to help you with managing your instance of Linux.

Sofija Simic is an experienced Technical Writer. Alongside her educational background in teaching and writing, she has had a lifelong passion for information technology. She is committed to unscrambling confusing IT concepts and streamlining intricate software installations.

Setting file and directory permission properly is important in multi-user systems such as Linux. You can set.

If you want to keep your filesystems clean and without errors, you need to scan it on regular basis. In this.

Want to learn how to copy files in Linux OS? This guide will show you how to use the Linux commands to copy.

Tutorial on securely transferring files between Unix or Linux systems using the SCP command. The SCP or.

Источник

🐧 Альтернативы команды cp на Linux для демонстрации прогресса и скорости

Вы когда-нибудь хотели увидеть скорость и прогресс при копировании файлов с помощью командной строки?

Для копирования файлов, папок и других данных вы, вероятно, использовали бы команду ditto или «cp», если вы знакомы с командной строкой операционных систем Linux или Unix.

Хотя команды ditto и «cp» полезны, иногда использование простой команды «cp» может занять много времени и утомить.

Параметр «-v» (подробный) в команде «cp» может предоставить вам дополнительную информацию о процессе копирования.

Однако недостатком является то, что эта команда не включает индикатор хода процесса копирования.

В Linux есть другие альтернативные команды, которые могут копировать файлы и папки, показывая ход и скорость процесса копирования. Ниже приведены альтернативные команды:

«Rsync» – одна из лучших команд, которая помогает копировать файлы через терминал.

Объем данных, копируемых из удаленного места назначения, уменьшается при использовании этой утилиты.

Он также используется для создания резервных копий данных, копирования данных между компьютерами и зеркалирования.

Команда «rsync» имеет следующий синтаксис:

$ rsync options Source Destination

Использование опции «-av» с «rsync» – самая простая форма этой команды.

Как показано ниже, данная команда скопирует все файлы, находящиеся в «testfolder», в целевую папку с именем «Downloads»:

$ rsync -av testfolder/ Downloads/

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

«–progress» – это флаг, используемый в команде «rsync» для получения общего прогресса скопированного содержимого.

$ rsync -av --progress testfolder/ Downloads/

Еще один флаг, который можно включить в команду «rsync», – «–stats».

Параметр –stats предоставляет более подробную информацию о передаче файлов, такую как количество созданных, удаленных или регулярно передаваемых файлов, общее количество отправленных байтов и общее количество полученных байтов. Запишите приведенную ниже команду, чтобы получить всю информацию, относящуюся к процессу копирования файла.

$ rsync -av --progress --stats testfolder/ Downloads/

2. Команда pv

Вы можете использовать команду «pv» для копирования одного файла, поскольку она предоставляет статистику, относящуюся к прогрессу и скорости.

В следующем случае «pv» выведет «входной файл» в «stdout», который затем перенаправляется в «выходной файл» с помощью оператора «>».

Когда вы это сделаете, он одновременно выведет всю информацию о скорости и прогрессе на терминал.

Файл, скопированный таким образом, будет иметь такие же права, как если бы вы его создали.

3. Команда tar

Если вы хотите скопировать несколько файлов или каталогов, то лучше использовать команду tar в терминале.

Укажите исходную и целевую папки в команде «tar» с параметром «-C» в сочетании с «pv», чтобы просмотреть скорость и ход процесса.

$ tar c testfolder | pv | tar x -C Downloads

4. Команда dd

В терминале команда «dd» используется для копирования или конвертации файлов.

Это свободно доступный инструмент командной строки с открытым исходным кодом.

В приведенной ниже команде мы покажем вам, как использовать команду «dd» для получения статистики копирования файла:

Определите исходную папку в «if» и целевую папку в «of» и установите «progress» в качестве параметра статуса.

$ sudo dd if=inputfile of=/Downloads status=progress

Заключение

В Linux существует несколько альтернатив команде cp для отображения скорости и прогресса процесса копирования файлов или папок.

В этой статье обсуждались команды rsync, pv, tar и dd, которые копируют статистику данных при передаче больших файлов.

Источник

cp command process info

Is there any specific package for cp command which shows the process of being copied. I’m wondering if there is any package cp which shows additional information that what has been copied and what are left or how many percentage it has been copied. etc. Any body using any?

2 Answers 2

You can use rsync to do the copy. If you use the -P option (show progress), it does just that.

I tend to use rsync -avP for most copying.

Yeah you are right and I’ll use that for synchronization but the problem is with me as I’m called mistake maker. In hurry, if I exchange soruce with destination or vise versa then I’m done. I seldom use rysnc until it’s necessary and I’ll have to be very careful. Good answer, thanks!

If there are no files matching the command, they both fail. If there are files matching the command, they both overwrite. Correct?

You can pipe things into the pv command to add progress indication to programs that might not have their own progress meter.

However if I’m doing a copy large enough that I need a progress bar I end up using rsync anyway as Jeremy recommends. He also points out that you’ll need to arrange your pipeline so that the data is piped though pv — the example gives only tells you how much data the cp is printing out, not how much is being copied. Something like this will work for single files: pv source > dest .

However, for copying directories, you’ll need to get more complex.

Источник

Читайте также:  Как создать виртуальный сервер linux
Оцените статью
Adblock
detector