Возможно, я выполнил некоторую операцию копирования / перемещения, включающую большие или много файлов. В bash я хотел бы намекнуть, что эта операция окончена. Могу ли я что-нибудь сделать?
Сначала я подумал, что ожидание на пиде должно помочь. Поэтому во время одной из таких операций я запустил top
и обнаружил, что mount.ntfs
забирает большую часть процессора. Однако, опубликуйте эту файловую операцию (после того, как диалоговое окно автоматически исчезнет), этот процесс все еще выполняется.
Следовательно, я исключил это. Любые идеи о том, как я могу узнать, когда моя ОС закрыла этот диалог?
Первым шагом является проверка завершения операции копирования. Я думаю, что вы уже проверили этот шаг.
Вторым шагом является проверка того, что буферы сброшены (что буферизованные данные в ОЗУ наконец-то записываются на целевое устройство, так что содержимое файла действительно сохраняется в файле в разделе на диске).
Вы можете запустить sync
, чтобы очистить буферы. Когда sync
выполнено и bash
возвращается к запросу, этот второй шаг также завершен.
Существует инструмент для мониторинга операций чтения / записи, iotop
. Установите его с помощью
sudo apt install iotop
и запустите, например, с помощью следующей командной строки
sudo iotop -o
Не видя реального сценария, трудно понять, какие команды вы используете для файловых операций.
Один из очень простых вариантов может заключаться в том, чтобы просто создать временный файл после завершения действия копирования / перемещения, например,
#copy action
cp $1 /home/user/backup/
touch /tmp/finished.tmp
, а затем проверить, существует ли файл или есть недавние изменения с
ls -lha /tmp/finished
или для автоматической периодической проверки
watch ls -lha /tmp/finished
В зависимости от ваших потребностей вы можете назвать каждый временный файл как задание на копирование / перемещение, которое он представляет, возможно, все в тот же каталог
# set the variable JOBNAME via input or via sourcename
# JOBNAME=$SOURCE
# JOBNAME=$2
mkdir /tmp/copyjobs
# your copy job here
touch /tmp/copyjobs/finished.$JOBNAME.tmp
# your next copy job here
touch /tmp/copyjobs/finished.$JOBNAME.tmp
Затем просмотрите весь каталог
watch ls -lha /tmp/copyjobs/
В зависимости от вашего навыка вы также можете использовать циклы и так далее.
Такие инструменты, как rsync , имеют встроенную индикатор выполнения для командной строки, поэтому вы можете видеть, как далеко продвигается ваша работа с - прогресс или -P .
Но rsync может быть не подходящим инструментом для работы.
"gcp" - твой друг:)
Это то, что тебе нужно?
$ gcp -rf test.file tmp/
Copying 404.32 MiB 100% |############################| 471.12 MB/s Time: 0:00:00
Предполагается, что вы используете cp, процесс может начать вторую
cp SOURCE TARGET
ALERTCOMMAND
Нет предопределенной команды оповещения, но вы можете выдать все, что у вас есть и кажется подходящим, возможно, воспроизвести фрагмент аудио с аудио игрок для повышения осведомленности. В прежние времена, когда у людей были оптические дисководы, открывать их с помощью команды eject тоже было возможно. :)
cp SOURCE TARGET && FANFARE || REQUIEM
Опять же, нет такой команды, как FANFARE или REQUIEM. В зависимости от успеха или неудачи вы можете вводить разные команды в одной строке. Будь креативным. На том же виртуальном рабочем столе всплывающая новая программа повышает осведомленность - см., Например, man zenity . Или используйте xmessage :
cp SOURCE TARGET && xmessage "Done"
Проверьте исходный код для progress_bar в приведенном ниже хранилище git:
https://github.com/Kiran-Bose/supreme
Также попробуйте пакет пользовательских сценариев bash supreme
Загрузите файл deb из указанного выше репозитория и установите его в системах на основе Debian.
Обзор функций
(1) Открытые приложения ---- Firefox ---- Калькулятор ---- Настройки
(2) Управление файлами ---- Поиск --- -Навигация ---- Быстрый доступ
|----Select File(s)
|----Inverse Selection
|----Make directory
|----Make file
|----Open
|----Copy
|----Move
|----Delete
|----Rename
|----Send to Device
|----Properties
(3) Управление телефоном ---- Перемещение / копирование с телефона ---- Перемещение / копирование на телефон ---- Синхронизация папок
(4) Управление USB ---- перемещение / копирование с USB ---- перемещение / копирование на USB