Сжатие использует в своих интересах то, что существуют шаблоны в данных, которые могут быть оптимизированы и обозначены по-другому. Это приводит к решительному сокращению количества шаблонов (так как, если шаблон оставили затем, исходное сжатие могло бы просто оптимизировать его вместо того, чтобы оставить его в заключительном файле), что означает, что другой раунд сжатия не может выполнить гораздо дальше сокращение размера.
Я написал process_watcher.py
process_watcher --pid 1234 --to me@gmail.com
В настоящее время тело письма выглядит так:
PID 18851: / usr / lib / libreoffice / program /soffice.bin --writer --splash-pipe = 5
Начато: Чт, 10 марта, 18:33:37 Завершено: Чт, 10 марта, 18:34:26 (продолжительность 0:00: 49)
Память (текущая / пиковая) - Резидентная: 155 280/155 304 КБ Виртуальная: 1,166 968/1 1888 216 КБ
[+] indicates the argument may be specified multiple times, for example:
process-watcher -p 1234 -p 4258 -c myapp -c "exec\d+" --to person1@domain.com --to person2@someplace.com
optional arguments:
-h, --help show this help message and exit
-p PID, --pid PID process ID(s) to watch [+]
-c COMMAND_PATTERN, --command COMMAND_PATTERN
watch all processes matching the command name. (RegEx pattern) [+]
-w, --watch-new watch for new processes that match --command. (run forever)
--to EMAIL_ADDRESS email address to send to [+]
-n, --notify send DBUS Desktop notification
-i SECONDS, --interval SECONDS
how often to check on processes. (default: 15.0 seconds)
-q, --quiet don't print anything to stdout
Если вам нужны какие-либо улучшения, создайте проблему с GitHub.
Что-то вроде этого?
(while kill -0 $pid; do sleep 1; done) && echo "finished"
Замените $ pid
на идентификатор процесса, а echo "finished"
на то, что вы хотите сделать, когда процесс завершится.
Например:
(while kill -0 $pid; do sleep 1; done) && mail ...
Если у вас нет пида, то он будет выполняться до тех пор, пока не будут завершены все экземпляры ffmpeg:
(while pidof ffmpeg | grep -q "[0-9]?"; do sleep 1; done) && echo "finished"
Я использую &&
, чтобы выполнить вторую команду, когда первый закончен успешно. Вот несколько примеров:
Удалить большую папку и BEEP:
RM -RV ~ / TMP && BEEP
Компилируйте ядро и отправьте электронное письмо:
Make && Mail-as - Compilation выполняется «(скрыто)
Это хороший способ решить вашу проблему? В другом случае вы можете добавить ||
и третью команду в случае сбоя.
Кроме того, скрипт оболочки может получить статус выхода ( $?
) вашей команды, а с , если / else
и петли, которые вы можете сделать все ты хочешь.
Я сделал приложение, которое отправляет уведомление на ваш телефон Android, когда процесс завершается, поэтому вам не нужно быть привязанным к компьютеру.
Установите, затем добавьте ;notifier.sh
в конец вашей команды.
Например, если бы ваша команда была make install
, вы бы сделали свою команду:
make install; notifier.sh
Если вы не хотите использовать опцию опроса или внешний скрипт, и вы уже запустили -длительный процесс, вы можете приостановить его, нажав CTRL+Z (отправляет сигнал SIGTSTP )а затем возобновите его с помощьюfg
(переводит процесс на передний план ).
Например:
my_command # long running command
# press CTRL+Z to pause
fg ; notify-send 'finished'